nelson.pandian
Active User
Joined: 09 Apr 2008 Posts: 133 Location: Phoenix, AZ
|
|
|
|
Can anyone give me the JCL for the below query please:
My input is:
Code:
ABCDEFGHIJK T 3
LSKDSLDKSLS L 4
KSDKLADALKS T 4
ABCDEFGHIJK L 3
KSDKLADALKS T 2
LSKDSLDKSLS T 1
LSKDSLDKSLS T 3
LSKDSLDKSLS L 3
ABCDEFGHIJK T 1
ABCDEFGHIJK L 3
ABCDEFGHIJK L 2
THE OUTPUT SHOULD LOOK LIKE:
Code:
LSKDSLDKSLS L 4
KSDKLADALKS T 4
KSDKLADALKS T 2
LSKDSLDKSLS T 1
LSKDSLDKSLS T 3
LSKDSLDKSLS L 3
ABCDEFGHIJK T 4
ABCDEFGHIJK L 8
In short, the Field 3 should be added based on Field1 and Field2 only if Field1 has ‘ABCDEFGHIJK’. Field 2 can have the value T or L. The output in Field3 should contain the sum based on Field1 with T, and Field1 with L (if there is any) |
|
Frank Yaeger
DFSORT Developer
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
|
|
|
|
Here's a DFSORT job that will do what I think you asked for. I assumed your input file has RECFM=FB and LRECL=80. I couldn't figure out what output order you wanted the records in so I just sorted them by the first two fields.
Code: |
//S1 EXEC PGM=ICEMAN
//SYSOUT DD SYSOUT=*
//SORTIN DD *
ABCDEFGHIJK T 3
LSKDSLDKSLS L 4
KSDKLADALKS T 4
ABCDEFGHIJK L 3
KSDKLADALKS T 2
LSKDSLDKSLS T 1
LSKDSLDKSLS T 3
LSKDSLDKSLS L 3
ABCDEFGHIJK T 1
ABCDEFGHIJK L 3
ABCDEFGHIJK L 2
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
INREC IFTHEN=(WHEN=INIT,OVERLAY=(81:SEQNUM,8,ZD)),
IFTHEN=(WHEN=(1,11,CH,EQ,C'ABCDEFGHIJK'),OVERLAY=(81:8C'0'))
SORT FIELDS=(1,11,CH,A,14,1,CH,A,81,8,ZD,A)
OPTION ZDPRINT
SUM FIELDS=(18,1,ZD)
OUTREC BUILD=(1,80)
/*
|
SORTOUT would have:
Code: |
ABCDEFGHIJK L 8
ABCDEFGHIJK T 4
KSDKLADALKS T 4
KSDKLADALKS T 2
LSKDSLDKSLS L 4
LSKDSLDKSLS L 3
LSKDSLDKSLS T 1
LSKDSLDKSLS T 3
|
|
|