Page 1 of 1

Write data to array using SORT/SYNCSORT JCL

Posted: Thu Jan 28, 2016 4:23 pm
by Srikrishna116
Hi,

Can someone please help me regarding my below query?

Case1:

My input FB file has data like below:

HeaderYYYYMMDD
NField1~Field2~Field3
VField1Datatype~Field2Datatype~Field3Datatype
D111~abcd~G12
D2222~abc~G443
Trailer0002

In this case, I have removed Header, trailer records,delimiters '~' by writing below SORT card and formatted the file having only detailed records i.e, record starting with D.

SORT FIELDS=COPY
OMIT COND=(1,1,CH,EQ,C'H',OR,1,1,CH,EQ,C'T')
OUTREC PARSE=(%1=(ENDBEFR=C'~',FIXLEN=5),
%2=(ENDBEFR=C'~',FIXLEN=4),
%3=(ENDBEFR=C'~',FIXLEN=4)),
BUILD=(1:%1,6:%2,10:%3)

So by executing above sort card, output FB file is created with detailed as below:
111 abcdG12
2222 abc G443

Case 2:
I want to try the similar way of sort card of Case1 for the below input file
My input file has data like below:

HeaderYYYYMMDD
NField1~Field2~Field3(1)~Field3(2)
VField1Datatype~Field2Datatype~Field3(1)Datatype~Field3(2)Datatype
D111~abcd~G12~~
D2222~abc~G443~G553~
Trailer0002

But here the problem is Field3 occurs for two times. This is the sample layout I had given. In my copybook layout, few fields occurs 50 times like that. So it would be overhead to write below similar sort card line for 50 times to define each field occurrence in output file layout.
[01 EX-Field3 OCCURS 50 times
10 Field3 PIC X(04). ]
%3=(ENDBEFR=C'~',FIXLEN=4)

So could you please let me know if there is any simpler way to write data to above kind of array fields using SORT/SYNCSORT?
I would be grateful for your help.

Posted: Thu Jan 28, 2016 4:47 pm
by William Collins
DFSORT has a REPEAT= on PARSE. If your SyncSORT doesn't have that, you'll just have to code them out.

Posted: Fri Jan 29, 2016 12:25 pm
by Srikrishna116
Thanks a ton William Collins . REPEAT worked in SYNCSORT. Your suggestion means a lot for me.

But surprisingly I faced one more scenario now.

Case 3:

Got stuck with the parsing of below copybook layout.

01 EX-Field OCCURS 2 times.
10 Field3 PIC X(04).
10 Field4 PIC X(10).

My input file has data like below:

HeaderYYYYMMDD
NField1~Field2~Field3(1)~Field4(1)~Field3(2)~Field4(2)
VField1Datatype~Field2Datatype~Field3(1)Datatype~Field4(1)Datatype~3(2)Datatype~4(2)
D111~abcd~G12~~~H773
D2222~abc~G443~H553~G663~H774
Trailer0002

In case 2, I used REPEAT as Field3 alone occurs 2 times and so I used below card

%3=(ENDBEFR=C'~',FIXLEN=4,REPEAT=2)

But now, Field3 & Field 4 of two different field lengths are defined under one array :(

Please help me regarding this.

Topic deleted by Admin

Posted: Sat Jan 30, 2016 10:07 pm
by academyindia4
<< Content deleted By Admin >>