Code: |
|6003| 1|N|A|
|6003| 1|N|A| |6003| 1|Y|A| |6003| 1|N|A| |6003| 2|Y|A| |6003| 2|N|A| |6003| 2|Y|A| |6003| 2|N|A| |6003| 3|N|A| |6003| 3|Y|A| |6003| 3|N|A| |6003| 4|Y|A| |6003| 4|N|A| |6003| 5|Y|A| |6003| 5|N|A| |6003| 6|Y|A| |6003| 6|N|A| |6003| 6|Y|A| |6003| 8|Y|A| |
Code: |
REPORT TOTAL REPORT PGM-NAME RUN DATE - 01/13/17 Page 1 Field#1 Field#2 Field#3 Field#4 Field#5 6003 001 SUB-DIV1 Y 15 001 SUB-DIV1 N 1,058 002 SUB-DIV2 Y 2,526 002 SUB-DIV2 N 2,689 003 SUB-DIV3 Y 130 003 SUB-DIV3 N 1,283 004 SUB-DIV4 N 2,652 005 SUB-DIV5 N 1,920 006 SUB-DIV6 Y 269 006 SUB-DIV6 N 3,740 008 SUB-DIV8 N 3,061 TOTAL STORE 6003 INBOUND ITEMS 7,789 TOTAL STORE 6003 OUTBOUND ITEMS 1,190 TOTAL STORE 6003 ITEMS 8,979 ... other stores as well.. .. ... . INVENTORY GRAND TOTAL = 38,415,086 INVENTORY INBOUND GRAND TOTAL = 12,853,600 INVENTORY OUTBOUND GRAND TOTAL = 25,561,486 |
Code: |
6003 | 1 | 1 | N | 30,588 6003 | 1 | 1 | Y | 4,262 6003 | 2 | 2 | N | 48,284 6003 | 2 | 2 | Y | 62,343 6003 | 4 | 4 | N | 9,967 6003 | 4 | 4 | Y | 8 6003 | 6 | 6 | N | 7,590 6003 | 6 | 6 | Y | 285 6003 | 8 | 8 | N | 2,864 6003 | 8 | 8 | Y | 77 6003 | 9 | 9 | N | 18,538 6003 | 9 | 9 | Y | 410 6003 | 11 | 11 | N | 2,706 6003 | 11 | 11 | Y | 5 6003 | 12 | 12 | N | 947 6003 | 12 | 12 | Y | 334 6003 | 17 | 17 | N | 2,575 6003 | 17 | 17 | Y | 55 6003 | 21 | 21 | N | 1,964 6003 | 21 | 21 | Y | 9 6003 | 28 | 28 | N | 5,491 6003 | 28 | 28 | Y | 42 6004 | 1 | 1 | N | 30,696 |
Code: |
SORT FIELDS=(3,7,CH,A,64,01,CH,A) OUTFIL REMOVECC,NODETAIL, SECTIONS=(3,4,64,1,TRAILER3=(1:3,4,6:'|',8:8,2,11:'|',13:8,2,16:'|', 18:64,1,20:'|', 22:COUNT=(EDIT=(III,III,IIT),LENGTH=11))), TRAILER1=(2/,6:'TOTAL COUNT OF THE FILE IS:', 2/, COUNT=(EDIT=(II,III,III,IIT),LENGTH=14)) |
Code: |
REPORT TOTAL REPORT PGM-NAME RUN DATE - 01/13/17 Page 1 |
Code: |
Field#1 Field#2 Field#3 Field#4 Field#5 |
Code: |
Description : start pos - length Store #: 1 - 4 Region : 6 - 2 Flag : 9 - 1 Status :11 - 1 6003| 1|N|A| 6003| 1|N|A| 6003| 1|Y|A| 6003| 1|N|A| 6003| 2|Y|A| 6003| 2|N|A| 6003| 2|Y|A| 6003| 2|N|A| 6003| 3|N|A| 6003| 3|Y|A| 6003| 3|N|A| 6003| 4|Y|A| 6003| 4|N|A| 6003| 5|Y|A| 6003| 5|N|A| 6003| 6|Y|A| 6003| 6|N|A| 6003| 6|Y|A| 6003| 8|Y|A| 6003| 8|N|A| 6003| 9|N|A| 6003| 9|Y|A| 6003| 9|Y|A| 6003|10|Y|A| 6003|10|N|A| 6003|11|Y|A| 6003|11|Y|A| 6003|11|N|A| 6004| 1|N|A| 6004| 1|N|A| 6004| 1|Y|A| 6004| 1|N|A| 6004| 2|Y|A| 6004| 2|N|A| 6004| 2|Y|A| 6004| 2|N|A| 6004| 3|N|A| 6004| 3|Y|A| 6004| 3|N|A| 6004| 4|Y|A| 6004| 4|N|A| 6004| 5|Y|A| 6004| 5|N|A| 6004| 6|Y|A| 6004| 6|N|A| 6004| 6|Y|A| 6004| 8|Y|A| 6004| 8|N|A| 6004| 9|N|A| 6004| 9|Y|A| 6004| 9|Y|A| 6004|10|Y|A| 6004|10|N|A| 6004|11|Y|A| 6004|11|Y|A| 6004|11|N|A| |
Code: |
Description : start pos - length Field #1: 03 - 04 Field #2: 16 - 03 Field #3: 28 - 20 Field #4: 52 - 01 Field #5: 62 - 06 REPORT TOTAL REPORT PGM-NAME RUN DATE - 01/13/17 Page 1 Field#1 Field#2 Field#3 Field#4 Field#5 6003 001 SUB-DIV1 Y 15 001 SUB-DIV1 N 58 002 SUB-DIV2 Y 26 002 SUB-DIV2 N 9 003 SUB-DIV3 Y 30 003 SUB-DIV3 N 3 004 SUB-DIV4 0 005 SUB-DIV5 0 006 SUB-DIV6 Y 9 006 SUB-DIV6 N 4 008 SUB-DIV8 N 1 TOTAL STORE 6003 INBOUND ITEMS 81 TOTAL STORE 6003 OUTBOUND ITEMS 74 TOTAL STORE 6003 ITEMS 155 6004 001 SUB-DIV1 Y 15 001 SUB-DIV1 N 58 002 SUB-DIV2 Y 26 002 SUB-DIV2 N 9 003 SUB-DIV3 Y 30 003 SUB-DIV3 N 3 004 SUB-DIV4 Y 10 005 SUB-DIV5 0 006 SUB-DIV6 Y 9 006 SUB-DIV6 N 4 008 SUB-DIV8 N 1 TOTAL STORE 6004 INBOUND ITEMS 91 TOTAL STORE 6004 OUTBOUND ITEMS 74 TOTAL STORE 6004 ITEMS 165 REPORT TOTAL REPORT PGM-NAME RUN DATE - 01/13/17 Page 2 Field#1 Field#2 Field#3 Field#4 Field#5 6005 001 SUB-DIV1 Y 25 001 SUB-DIV1 N 58 002 SUB-DIV2 Y 26 002 SUB-DIV2 N 19 003 SUB-DIV3 Y 30 003 SUB-DIV3 N 13 004 SUB-DIV4 Y 10 005 SUB-DIV5 N 10 006 SUB-DIV6 Y 19 006 SUB-DIV6 N 24 008 SUB-DIV8 N 11 TOTAL STORE 6004 INBOUND ITEMS 191 TOTAL STORE 6004 OUTBOUND ITEMS 174 TOTAL STORE 6004 ITEMS 365 INVENTORY GRAND TOTAL = 5,086 INVENTORY INBOUND GRAND TOTAL = 3,600 INVENTORY OUTBOUND GRAND TOTAL = 8,686 |
Code: |
Fld#1 Fld#2 Fld#3 Fld#4 Fld#5 6004 001 SUB-DIV1 Y 2 001 SUB-DIV1 N 3 002 SUB-DIV2 0 003 SUB-DIV3 N 1 |
Code: |
REPORT TOTAL REPORT PGM-NAME
RUN DATE - 01/13/17 Page 1 |
Code: |
Field#1 Field#2 Field#3 Field#4 Field#5
|
balaryan wrote: |
Input records hold millions of records and in sorted order. There will be several thousand records belong to every store. |
Code: |
//STEP0100 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN DD DISP=SHR,DSN=&&IN //YFLGTOT DD DSN=&&YFLGTOT,DISP=(,PASS),SPACE=(CYL,(X,Y),RLSE) //NFLGTOT DD DSN=&&NFLGTOT,DISP=(,PASS),SPACE=(CYL,(X,Y),RLSE) //DTLRECD DD DSN=&&DTLRECD,DISP=(,PASS),SPACE=(CYL,(X,Y),RLSE) //PADRECD DD DSN=&&PADRECD,DISP=(,PASS),SPACE=(CYL,(X,Y),RLSE) //SYSIN DD * OPTION COPY INREC BUILD=(1,4, $ STORE # 6,2,UFF,EDIT=(TTT), $ REGION 9,1) $ FLAG OUTFIL FNAMES=YFLGTOT, INCLUDE=(8,1,CH,EQ,C'Y'), BUILD=(15X), REMOVECC,NODETAIL, SECTIONS=(1,7, TRAILER3=(1,8, COUNT=(M10,LENGTH=6), 15:C'1')) OUTFIL FNAMES=NFLGTOT, INCLUDE=(8,1,CH,EQ,C'N'), BUILD=(15X), REMOVECC,NODETAIL, SECTIONS=(1,7, TRAILER3=(1,8, COUNT=(M10,LENGTH=6), 15:C'2')) OUTFIL FNAMES=DTLRECD, BUILD=(1,8,15:C'3') OUTFIL FNAMES=PADRECD, REMOVECC,NODETAIL,BUILD=(15X), SECTIONS=(1,4, TRAILER3=(1,4,C'001',X,C' 0',C'4',/, 1,4,C'002',X,C' 0',C'4',/, 1,4,C'003',X,C' 0',C'4',/, 1,4,C'004',X,C' 0',C'4',/, 1,4,C'005',X,C' 0',C'4',/, 1,4,C'006',X,C' 0',C'4',/, 1,4,C'007',X,C' 0',C'4',/, 1,4,C'008',X,C' 0',C'4',/, 1,4,C'009',X,C' 0',C'4',/, 1,4,C'010',X,C' 0',C'4',/, 1,4,C'011',X,C' 0',C'4',/, 1,4,C'012',X,C' 0',C'4')) //* //STEP0200 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN01 DD DSN=&&YFLGTOT,DISP=SHR //SORTIN02 DD DSN=&&NFLGTOT,DISP=SHR //SORTIN03 DD DSN=&&DTLRECD,DISP=SHR //SORTIN04 DD DSN=&&PADRECD,DISP=SHR //SORTOUT DD SYSOUT=* //SYSIN DD * MERGE FIELDS=(01,7,CH,A, 15,1,CH,A),EQUALS OUTREC IFTHEN=(WHEN=INIT, OVERLAY=(17:5C'0', 23:01,04, 28:SEQNUM,6,ZD,RESTART=(1,4), 36:05,3,UFF,EDIT=(IIT))), IFTHEN=(WHEN=GROUP,BEGIN=(15,1,ZD,EQ,1), PUSH=(39:09,06, 46:05,03)), IFTHEN=(WHEN=GROUP,BEGIN=(15,1,ZD,EQ,2), PUSH=(50:09,06)), IFTHEN=(WHEN=(08,01,CH,EQ,C'Y',AND, 15,01,ZD,EQ,3), OVERLAY=(09:39,06, 17:C'10101'),HIT=NEXT), IFTHEN=(WHEN=(08,01,CH,EQ,C'N',AND, 15,01,ZD,EQ,3), OVERLAY=(09:50,06, 17:C'01011'),HIT=NEXT), IFTHEN=(WHEN=(28,6,ZD,GT,3), OVERLAY=(01:4X)) OUTFIL REMOVECC, OMIT=(15,1,ZD,LE,2,OR, (15,1,ZD,EQ,4,AND,(05,3,CH,EQ,46,3,CH))), HEADER2=(/,'REPORT TOTAL REPORT', ' PGM-NAME : DFSORT',/, 'RUN DATE - ',DATE,60:'PAGE ',PAGE,/,/, 'FIELD#1 FIELD#2 FIELD#3', ' FIELD#4 FIELD#5',/), BUILD=(003:01,4, $ STORE # 016:05,3, $ REGION 028:36,3,JFY=(SHIFT=LEFT, LEAD=C'SUB-DIV', LENGTH=20), 053:08,1, 062:09,6, 80:X), SECTIONS=(23,4, TRAILER3=(/, 17:'TOTAL STORE ',23,4,' INBOUND ITEMS = ', TOT=(17,1,ZD,EDIT=(III,IIT)),/, 17:'TOTAL STORE ',23,4,' OUTBOUND ITEMS = ', TOT=(18,1,ZD,EDIT=(III,IIT)),/, 17:'TOTAL STORE ',23,4,' ITEMS = ', TOT=(21,1,ZD,EDIT=(III,IIT)),/)), TRAILER1=(/, 02:'INVENTORY INBOUND GRAND TOTAL =', TOT=(21,1,ZD,EDIT=(III,III,IIT)),/, 02:'INVENTORY OUTBOUND GRAND TOTAL =', TOT=(19,1,ZD,EDIT=(III,III,IIT)),/, 02:'INVENTORY GRAND TOTAL =', TOT=(20,1,ZD,EDIT=(III,III,IIT))) //* |
Nic Clouston wrote: |
Note: posted last week on another forum where the solution did not provde the required output. I have locked that topic.
I will unlock it when Balaryan has a working solution so that it can be posted there. |
balaryan wrote: |
Primarily, I created COBOL Program to generate this report. But just wanted to know if this can be achieved by the SORT as you too mentioned it was too much content in one report using DFSORT.
Thanks for this code. HIT=NEXT and MERGE are new things I learned today. I will test this code and update you. |
Code: |
6005| 1|N|A| 6005| 1|N|A| 6005| 1|N|A| 6005| 1|N|A| |
Code: |
6006| 8|Y|A| 6006| 8|Y|A| |
Code: |
//STEP0200 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN01 DD DSN=&&YFLGTOT,DISP=SHR //SORTIN02 DD DSN=&&NFLGTOT,DISP=SHR //SORTIN03 DD DSN=&&DTLRECD,DISP=SHR //SORTIN04 DD DSN=&&PADRECD,DISP=SHR //SORTOUT DD SYSOUT=* //SYSIN DD * MERGE FIELDS=(01,7,CH,A, 15,1,CH,A),EQUALS OUTREC IFTHEN=(WHEN=GROUP,BEGIN=(15,1,ZD,EQ,1), PUSH=(17:09,06, 31:01,07)), IFTHEN=(WHEN=GROUP,BEGIN=(15,1,ZD,EQ,2), PUSH=(24:09,06, 39:01,07)), IFTHEN=(WHEN=INIT, OVERLAY=(81:05,3,UFF,EDIT=(IIT), 85:01,4)), IFTHEN=(WHEN=(08,01,CH,EQ,C'Y',AND,15,1,ZD,EQ,3), OVERLAY=(09:17,06, 47:C'10101')), IFTHEN=(WHEN=(08,01,CH,EQ,C'N',AND,15,1,ZD,EQ,3), OVERLAY=(09:24,06, 47:C'01011')) OUTFIL REMOVECC,IFOUTLEN=80, OMIT=(15,1,ZD,LE,2,OR, (15,1,ZD,EQ,4,AND,(01,7,CH,EQ,31,7,CH)),OR, (15,1,ZD,EQ,4,AND,(01,7,CH,EQ,39,7,CH))), IFTHEN=(WHEN=INIT, BUILD=(03:01,4, $ STORE # 16:05,3, $ REGION 28:81,3,JFY=(SHIFT=LEFT, LEAD=C'SUB-DIV', LENGTH=20), 53:08,1, 62:09,6, 90:SEQNUM,6,ZD,RESTART=(1,4))), IFTHEN=(WHEN=(90,6,ZD,GT,1), OVERLAY=(03:4X)), HEADER2=(/,'REPORT TOTAL REPORT', ' PGM-NAME : DFSORT',/, 'RUN DATE - ',DATE,60:'PAGE ',PAGE,/,/, 'FIELD#1 FIELD#2 FIELD#3', ' FIELD#4 FIELD#5',/), SECTIONS=(85,4, TRAILER3=(/, 17:'TOTAL STORE ',85,4,' INBOUND ITEMS = ', TOT=(47,1,UFF,EDIT=(III,IIT)),/, 17:'TOTAL STORE ',85,4,' OUTBOUND ITEMS = ', TOT=(48,1,UFF,EDIT=(III,IIT)),/, 17:'TOTAL STORE ',85,4,' ITEMS = ', TOT=(51,1,UFF,EDIT=(III,IIT)),/)), TRAILER1=(/, 02:'INVENTORY INBOUND GRAND TOTAL =', TOT=(51,1,ZD,EDIT=(III,III,IIT)),/, 02:'INVENTORY OUTBOUND GRAND TOTAL =', TOT=(49,1,ZD,EDIT=(III,III,IIT)),/, 02:'INVENTORY GRAND TOTAL =', TOT=(50,1,ZD,EDIT=(III,III,IIT))) //* |
Code: |
TRAILER1=(/, 02:'INVENTORY INBOUND GRAND TOTAL =', TOT=(51,1,ZD,EDIT=(III,III,IIT)),/, 02:'INVENTORY OUTBOUND GRAND TOTAL =', TOT=(49,1,ZD,EDIT=(III,III,IIT)),/, 02:'INVENTORY GRAND TOTAL =', TOT=(50,1,ZD,EDIT=(III,III,IIT))) |
Code: |
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=* //SORTIN DD DISP=SHR,DSN=&&IN //SORTOUT DD DSN=&&YFLGTOT,DISP=(,PASS),SPACE=(CYL,(X,Y),RLSE) //SYSIN DD * OPTION COPY OUTFIL REMOVECC,NODETAIL, SECTIONS=(1,4,9,1,TRAILER3=(1:1,4,6:'|',8:6,2,11:'|',13:6,2, 46:'|',48:9,1,50:'|', X,COUNT=(EDIT=(III,III,IIT),LENGTH=11))) |
Code: |
6003 001 FISHES N 30,617
6003 001 FISHES Y 4,266 6003 002 GENERAL STUFF N 48,312 6003 002 GENERAL STUFF Y 62,229 6003 004 PRODUCE N 10,005 6003 004 PRODUCE Y 8 6003 006 FROZEN N 7,609 6003 006 FROZEN Y 285 6003 008 DAIRY N 2,892 6003 008 DAIRY Y 78 6003 009 NO MATCH N 18,536 6003 009 NO MATCH Y 410 6003 012 COMMERCIAL N 3,656 6003 012 COMMERCIAL Y 334 6003 017 CHEESE N 2,575 6003 017 CHEESE Y 55 6003 021 SEA FOOD N 1,964 6003 021 SEA FOOD Y 9 6003 028 NATURAL FOODS N 5,519 6003 028 NATURAL FOODS Y 42 TOTAL STORE 6003 INBOUND ITEMS = 0 TOTAL STORE 6003 OUTBOUND ITEMS = 0 TOTAL STORE 6003 ITEMS = 0 |
Code: |
SECTIONS(3,4,
(48,1,CH,EQ,C'Y', TOT=(48,1,ZD,EDIT=(III,IIT))), /* Inbound (48,1,CH,EQ,C'N', TOT=(48,1,ZD,EDIT=(III,IIT))), /* outboud (48,1,CH,NE,C' ', TOT=(48,1,ZD,EDIT=(III,IIT))), /* BOTH 'Y' and 'N' |
balaryan wrote: |
Hi Kolusu,
Existing program takes 180 secs approx to generate the report from the 40 millions record of an input file. I tried your solution and each record getting repeated several times (dups) say 32000 times approx it was repeated before showing 002 (field #2). |
balaryan wrote: |
Can you please let me know how it's calculating the total for INBOUND, OUTBOUND and BOTH. What is that position "51,1", "50,1", "49,1" indicates and does it refers field position in any file?
|
Code: |
pos - counter --- ------- 47 - Y flag count for store+region 48 - N flag count for store+region 49 - Y flag count for store 50 - N flag count for store 51 - Count for all stores |
Code: |
IFTHEN=(WHEN=(08,01,CH,EQ,C'Y',AND,15,1,ZD,EQ,3), OVERLAY=(09:17,06, 47:C'10101')), IFTHEN=(WHEN=(08,01,CH,EQ,C'N',AND,15,1,ZD,EQ,3), OVERLAY=(09:24,06, 47:C'01011')) |
balryan wrote: |
Also if there any possibility to calculate the total based on the condition in TRAILER3 and TRAILER1 respectively? In order to display the store value ONLY for every first record of store and supress for other records, could it be achieved using the INREC IFTHEN =(WHEN=GROUP) and PUSH in STEP001. |
Code: |
6003| 1|N|A| 6003| 1|N|A| 6003| 1|Y|A| 6003| 1|N|A| 6003| 2|Y|A| 6003| 2|N|A| 6003| 2|N|A| 6003| 3|N|A| 6003| 3|Y|A| 6003| 3|N|A| 6003| 4|Y|A| 6003| 4|N|A| 6003| 5|Y|A| 6003| 5|N|A| 6003| 6|Y|A| 6003| 6|N|A| 6003| 6|Y|A| 6003| 8|Y|A| 6003| 8|N|A| 6003| 9|N|A| 6003| 9|Y|A| 6003| 9|Y|A| 6003|10|Y|A| 6003|10|N|A| 6003|11|Y|A| 6003|11|Y|A| 6003|11|N|A| 6004| 1|N|A| 6004| 1|N|A| 6004| 1|Y|A| 6004| 1|N|A| 6004| 2|Y|A| 6004| 2|N|A| 6004| 2|Y|A| 6004| 2|N|A| 6004| 3|N|A| 6004| 3|Y|A| 6004| 3|N|A| 6004| 4|Y|A| 6004| 4|N|A| 6004| 5|Y|A| 6004| 5|N|A| 6004| 6|Y|A| 6004| 6|N|A| 6004| 6|Y|A| 6004| 8|Y|A| 6004| 8|N|A| 6004| 9|N|A| 6004| 9|Y|A| 6004| 9|Y|A| 6004|10|Y|A| 6004|10|N|A| 6004|11|Y|A| 6004|11|Y|A| 6004|11|N|A| 6005| 1|N|A| 6005| 1|N|A| 6005| 1|N|A| 6005| 1|N|A| 6006| 8|Y|A| 6006| 8|Y|A| |
Code: |
//STEP0100 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN DD DISP=SHR,DSN=&&IN //YFLGTOT DD DSN=&&YFLGTOT,DISP=(,PASS),SPACE=(CYL,(1,1),RLSE) //NFLGTOT DD DSN=&&NFLGTOT,DISP=(,PASS),SPACE=(CYL,(1,1),RLSE) //PADRECD DD DSN=&&PADRECD,DISP=(,PASS),SPACE=(CYL,(1,1),RLSE) //SYSIN DD * OPTION COPY INREC BUILD=(1,4, $ STORE # 6,2,UFF,EDIT=(TTT), $ REGION 9,1) $ FLAG OUTFIL FNAMES=YFLGTOT, INCLUDE=(8,1,CH,EQ,C'Y'), BUILD=(15X), REMOVECC,NODETAIL, SECTIONS=(1,7, TRAILER3=(1,8, COUNT=(M10,LENGTH=6), 15:C'1')) OUTFIL FNAMES=NFLGTOT, INCLUDE=(8,1,CH,EQ,C'N'), BUILD=(15X), REMOVECC,NODETAIL, SECTIONS=(1,8, TRAILER3=(1,8, COUNT=(M10,LENGTH=6), 15:C'2')) OUTFIL FNAMES=PADRECD, REMOVECC,NODETAIL,BUILD=(15X), SECTIONS=(1,4, TRAILER3=(1,4,C'001',X,C' 0',C'3',/, 1,4,C'002',X,C' 0',C'3',/, 1,4,C'003',X,C' 0',C'3',/, 1,4,C'004',X,C' 0',C'3',/, 1,4,C'005',X,C' 0',C'3',/, 1,4,C'006',X,C' 0',C'3',/, 1,4,C'007',X,C' 0',C'3',/, 1,4,C'008',X,C' 0',C'3',/, 1,4,C'009',X,C' 0',C'3',/, 1,4,C'010',X,C' 0',C'3',/, 1,4,C'011',X,C' 0',C'3',/, 1,4,C'012',X,C' 0',C'3')) //* //STEP0200 EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN01 DD DSN=&&YFLGTOT,DISP=SHR //SORTIN02 DD DSN=&&NFLGTOT,DISP=SHR //SORTIN04 DD DSN=&&PADRECD,DISP=SHR //SORTOUT DD SYSOUT=* //SYSIN DD * MERGE FIELDS=(01,7,CH,A, 15,1,CH,A),EQUALS OUTREC IFTHEN=(WHEN=GROUP,BEGIN=(15,1,ZD,EQ,1), PUSH=(17:01,07)), IFTHEN=(WHEN=GROUP,BEGIN=(15,1,ZD,EQ,2), PUSH=(26:01,07)), IFTHEN=(WHEN=INIT, OVERLAY=(35:3C'000000 ', 81:05,3,UFF,EDIT=(IIT), 85:01,4)), IFTHEN=(WHEN=(08,01,CH,EQ,C'Y'), OVERLAY=(35:9,6, 49:9,6)), IFTHEN=(WHEN=(08,01,CH,EQ,C'N'), OVERLAY=(42:9,6, 49:9,6)) OUTFIL REMOVECC,IFOUTLEN=80, OMIT=((15,1,ZD,EQ,3,AND,(01,7,CH,EQ,17,7,CH)),OR, (15,1,ZD,EQ,3,AND,(01,7,CH,EQ,26,7,CH))), IFTHEN=(WHEN=INIT, BUILD=(03:01,4, $ STORE # 16:05,3, $ REGION 28:81,3,JFY=(SHIFT=LEFT, LEAD=C'SUB-DIV', LENGTH=20), 53:08,1, 62:09,6, 90:SEQNUM,6,ZD,RESTART=(1,4))), IFTHEN=(WHEN=(90,6,ZD,GT,1), OVERLAY=(03:4X)), HEADER2=(/,'REPORT TOTAL REPORT', ' PGM-NAME : DFSORT',/, 'RUN DATE - ',DATE,60:'PAGE ',PAGE,/,/, 'FIELD#1 FIELD#2 FIELD#3', ' FIELD#4 FIELD#5',/), SECTIONS=(85,4, TRAILER3=(/, 17:'TOTAL STORE ',85,4,' INBOUND ITEMS = ', TOT=(35,6,UFF,EDIT=(III,III,IIT)),/, 17:'TOTAL STORE ',85,4,' OUTBOUND ITEMS = ', TOT=(42,6,UFF,EDIT=(III,III,IIT)),/, 17:'TOTAL STORE ',85,4,' ITEMS = ', TOT=(49,6,UFF,EDIT=(III,III,IIT)),/)), TRAILER1=(/, 02:'INVENTORY INBOUND GRAND TOTAL =', TOT=(35,6,UFF,EDIT=(III,III,IIT)),/, 02:'INVENTORY OUTBOUND GRAND TOTAL =', TOT=(42,6,UFF,EDIT=(III,III,IIT)),/, 02:'INVENTORY GRAND TOTAL =', TOT=(49,6,UFF,EDIT=(III,III,IIT))) //* |
Code: |
REPORT TOTAL REPORT PGM-NAME : DFSORT RUN DATE - 03/17/17 PAGE 1 FIELD#1 FIELD#2 FIELD#3 FIELD#4 FIELD#5 6003 001 SUB-DIV1 Y 1 001 SUB-DIV1 N 3 002 SUB-DIV2 Y 1 002 SUB-DIV2 N 2 003 SUB-DIV3 Y 1 003 SUB-DIV3 N 2 004 SUB-DIV4 Y 1 004 SUB-DIV4 N 1 005 SUB-DIV5 Y 1 005 SUB-DIV5 N 1 006 SUB-DIV6 Y 2 006 SUB-DIV6 N 1 007 SUB-DIV7 0 008 SUB-DIV8 Y 1 008 SUB-DIV8 N 1 009 SUB-DIV9 Y 2 009 SUB-DIV9 N 1 010 SUB-DIV10 Y 1 010 SUB-DIV10 N 1 011 SUB-DIV11 Y 2 011 SUB-DIV11 N 1 012 SUB-DIV12 0 TOTAL STORE 6003 INBOUND ITEMS = 13 TOTAL STORE 6003 OUTBOUND ITEMS = 14 TOTAL STORE 6003 ITEMS = 27 6004 001 SUB-DIV1 Y 1 001 SUB-DIV1 N 3 002 SUB-DIV2 Y 2 002 SUB-DIV2 N 2 003 SUB-DIV3 Y 1 003 SUB-DIV3 N 2 004 SUB-DIV4 Y 1 004 SUB-DIV4 N 1 005 SUB-DIV5 Y 1 005 SUB-DIV5 N 1 006 SUB-DIV6 Y 2 006 SUB-DIV6 N 1 007 SUB-DIV7 0 008 SUB-DIV8 Y 1 008 SUB-DIV8 N 1 009 SUB-DIV9 Y 2 009 SUB-DIV9 N 1 010 SUB-DIV10 Y 1 010 SUB-DIV10 N 1 011 SUB-DIV11 Y 2 011 SUB-DIV11 N 1 012 SUB-DIV12 0 TOTAL STORE 6004 INBOUND ITEMS = 14 TOTAL STORE 6004 OUTBOUND ITEMS = 14 TOTAL STORE 6004 ITEMS = 28 REPORT TOTAL REPORT PGM-NAME : DFSORT RUN DATE - 03/17/17 PAGE 2 FIELD#1 FIELD#2 FIELD#3 FIELD#4 FIELD#5 6005 001 SUB-DIV1 N 4 002 SUB-DIV2 0 003 SUB-DIV3 0 004 SUB-DIV4 0 005 SUB-DIV5 0 006 SUB-DIV6 0 007 SUB-DIV7 0 008 SUB-DIV8 0 009 SUB-DIV9 0 010 SUB-DIV10 0 011 SUB-DIV11 0 012 SUB-DIV12 0 TOTAL STORE 6005 INBOUND ITEMS = 0 TOTAL STORE 6005 OUTBOUND ITEMS = 4 TOTAL STORE 6005 ITEMS = 4 6006 001 SUB-DIV1 0 002 SUB-DIV2 0 003 SUB-DIV3 0 004 SUB-DIV4 0 005 SUB-DIV5 0 006 SUB-DIV6 0 007 SUB-DIV7 0 008 SUB-DIV8 Y 2 009 SUB-DIV9 0 010 SUB-DIV10 0 011 SUB-DIV11 0 012 SUB-DIV12 0 TOTAL STORE 6006 INBOUND ITEMS = 2 TOTAL STORE 6006 OUTBOUND ITEMS = 0 TOTAL STORE 6006 ITEMS = 2 INVENTORY INBOUND GRAND TOTAL = 29 INVENTORY OUTBOUND GRAND TOTAL = 32 INVENTORY GRAND TOTAL = 61 |
Code: |
MERGE FIELDS=(01,7,CH,A,
15,1,CH,A),EQUALS |
Code: |
OUTREC IFTHEN=(WHEN=GROUP,BEGIN=(15,1,ZD,EQ,1),
PUSH=(17:01,07)), IFTHEN=(WHEN=GROUP,BEGIN=(15,1,ZD,EQ,2), PUSH=(26:01,07)), |
Code: |
IFTHEN=(WHEN=INIT,
OVERLAY=(35:3C'000000 ', 81:05,3,UFF,EDIT=(IIT), 85:01,4)), |
Code: |
IFTHEN=(WHEN=(08,01,CH,EQ,C'Y'),
OVERLAY=(35:9,6, 49:9,6)), IFTHEN=(WHEN=(08,01,CH,EQ,C'N'), OVERLAY=(42:9,6, 49:9,6)) |
Code: |
OUTFIL REMOVECC,IFOUTLEN=80,
OMIT=(15,1,ZD,EQ,3,AND,(01,7,CH,EQ,31,7,CH)),OR, (15,1,ZD,EQ,3,AND,(01,7,CH,EQ,39,7,CH))), |
Code: |
Output:
004 SUB-DIV4 0 005 SUB-DIV5 N 2 006 SUB-DIV6 0 |
Code: |
IFTHEN=(WHEN=INIT,
BUILD=(03:01,4, $ STORE # 16:05,3, $ REGION 28:81,3,JFY=(SHIFT=LEFT, LEAD=C'SUB-DIV', LENGTH=20), 53:08,1, 62:09,6, 90:SEQNUM,6,ZD,RESTART=(1,4))), IFTHEN=(WHEN=(90,6,ZD,GT,1), OVERLAY=(03:4X)), |
balaryan wrote: |
This reformatting applies only to the merged records whose 15th position is 1 and 2 respectively (for Flag 'Y' and 'N'). |
balaryan wrote: |
This reformatting applies to all of the merged records where masking the dept code field with three bytes at the 81st position and store # in 85th position. What is the use of 35th position having zeros? |
Code: |
----+----1----+----2----+----3----+----4----+----5----+----6 000000 000000 000000 |
Code: |
IFTHEN=(WHEN=(08,01,CH,EQ,C'Y'), OVERLAY=(35:9,6, 49:9,6)), |
Code: |
----+----1----+----2----+----3----+----4----+----5----+----6 3 000000 3 |
Code: |
----+----1----+----2----+----3----+----4----+----5----+----6 000000 2 2 |
balaryan wrote: |
now it works completely fine. |
output generated using printer-friendly topic mod. All times are GMT - 5 Hours