|
View previous topic :: View next topic
|
| Author |
Message |
MichelleSpeer
New User
Joined: 22 Aug 2020 Posts: 15 Location: United States
|
|
|
|
I am trying to create a report with a break within a section.
| Code: |
PARTNER: PRODUCT SOURCE
EJC (TESTER1) 3
EJBM 1
EJCM 1
EJMC 1
EJA (TESTER2) 9
EJBM 2
EJCM 3
EJMC 4
SUBTOTAL PARTNER: 12
EJBM 3
EJCM 4
EJMC 5
|
Input is:
| Code: |
DPEJA (TESTER1) EJBMN00000000002
DPEJA (TESTER1) EJCMN00000000003
DPEJA (TESTER1) EJMCN00000000004
APEJA (TESTER1) TOTLN00000000009
DPEJC (TESTER2) EJBMN00000000001
DPEJC (TESTER2) EJCMN00000000001
DPEJC (TESTER2) EJMCN00000000001
APEJC (TESTER2) TOTLN00000000003
|
|
|
| Back to top |
|
 |
MichelleSpeer
New User
Joined: 22 Aug 2020 Posts: 15 Location: United States
|
|
|
|
I can not edit the original post...
I get all EXCEPT the subtotals
| Code: |
PARTNER: PRODUCT SOURCE
EJA (TESTER1) 9
EJBM 2
EJCM 3
EJMC 4
EJC (TESTER2) 3
EJBM 1
EJCM 1
EJMC 1
TOTALS 12 12
|
with the code
| Code: |
//TOOLIN DD *
COPY FROM(INDD01) TO(OUTDD00) USING(SRT1)
COPY FROM(OUTDD00) TO(RPTDD01) USING(SRT2)
//SRT1CNTL DD *
INREC IFTHEN=(WHEN=(2,1,CH,EQ,C'P'),
OVERLAY=(205:C'PARTNER:')),
IFTHEN=(WHEN=(2,1,CH,NE,C'P'),
OVERLAY=(205:C'SHARED:'))
SORT FIELDS=(2,1,CH,A,3,4,CH,A,1,1,CH,A,43,4,CH,A)
INCLUDE COND=(47,1,CH,EQ,C'N')
OUTREC IFTHEN=(WHEN=(1,1,CH,EQ,C'D'),
OVERLAY=(235:48,11,250:12X)),
IFTHEN=(WHEN=(1,1,CH,EQ,C'A'),
OVERLAY=(43:4X,235:11X,250:48,11))
//SRT2CNTL DD *
SORT FIELDS=(COPY)
OUTFIL FNAMES=RPTDD01,REMOVECC,
SECTIONS=(2,1,SKIP=0L,
HEADER3=(10:205,25,
50:C'PRODUCT',
65:C'SOURCE'),
TRAILER3=(10:C'TOTALS',
50:TOT=(235,11,ZD,EDIT=(IIIIIIIIIIIT)),
65:TOT=(250,11,ZD,EDIT=(IIIIIIIIIIIT)))),
IFTHEN=(WHEN=(1,1,CH,EQ,C'A'),
BUILD=(10:3,40,
50:235,11,ZD,EDIT=(IIIIIIIIIII),
70:250,11,ZD,EDIT=(IIIIIIIIIII),
132:1X)),
IFTHEN=(WHEN=(1,1,CH,EQ,C'D'),
BUILD=(15:43,4,
50:235,11,ZD,EDIT=(IIIIIIIIIII),
70:250,11,ZD,EDIT=(IIIIIIIIIII),
132:1X))
|
ANY Ideas? I'm missing something obvious. |
|
| Back to top |
|
 |
Joerg.Findeisen
Senior Member

Joined: 15 Aug 2015 Posts: 1430 Location: Bamberg, Germany
|
|
|
|
| It will be helpful if you provide a sample of how it should look like. |
|
| Back to top |
|
 |
MichelleSpeer
New User
Joined: 22 Aug 2020 Posts: 15 Location: United States
|
|
|
|
| Joerg.Findeisen wrote: |
| It will be helpful if you provide a sample of how it should look like. |
There is one at top of post, but post split cause my system did a reboot and I saved not knowing I only had 30 minutes to edit original.
| Code: |
PARTNER: PRODUCT SOURCE
EJA (TESTER1) 9
EJBM 2
EJCM 3
EJMC 4
EJC (TESTER2) 3
EJBM 1
EJCM 1
EJMC 1
TOTAL 12
EJBM 3
EJCM 4
EJMC 5
SHARED: PRODUCT SOURCE
EJI (TESTER3) 15
EJBM 10
EJCM 2
EJMC 3
EJM (TESTER4) 3
EJBM 1
EJCM 1
EJMC 1
TOTAL 18
EJBM 11
EJCM 3
EJMC 4
GRAND TOTAL 30
EJBM 14
EJCM 7
EJMC 9
|
I am just missing the breakdown under totals now. |
|
| Back to top |
|
 |
sergeyken
Senior Member

Joined: 29 Apr 2008 Posts: 2272 Location: USA
|
|
|
|
You need three sequential SORT PASSES, to generate three DIFFERENTLY SORTED parts of your report.
It is required because each part requires DIFFERENT sort of input data, to create intermediate sub-totals, by SECTIONS.
Each sort pass can append its result to the previous part, to produce full combined report at the very end.
As a starting point, try to create only one first part, for PARTNER group.
Then do similar processing for your SHARED group.
Finally, do similar processing for GRAND TOTAL.
Try this, then we can discuss what else is wrong? |
|
| Back to top |
|
 |
sergeyken
Senior Member

Joined: 29 Apr 2008 Posts: 2272 Location: USA
|
|
|
|
As usually, there is no interest whenever some work is required except simple copy-and-paste of a ready to use solution...
| Code: |
//*=================
//SORT3LEV EXEC PGM=ICETOOL
//*
//DFMSG DD SYSOUT=*
//TOOLMSG DD SYSOUT=*
//*
//SORTIN DD *
DPEJA (TESTER1) EJBMN00000000002
DPEJA (TESTER1) EJCMN00000000003
DPEJA (TESTER1) EJMCN00000000004
APEJA (TESTER1) TOTLN00000000009
DPEJC (TESTER2) EJBMN00000000001
DPEJC (TESTER2) EJCMN00000000001
DPEJC (TESTER2) EJMCN00000000001
APEJC (TESTER2) TOTLN00000000003
DSEJI (TESTER3) EJBMN00000000002
DSEJI (TESTER3) EJCMN00000000003
DSEJI (TESTER3) EJMCN00000000004
ASEJI (TESTER3) TOTLN00000000009
DSEJM (TESTER4) EJBMN00000000001
DSEJM (TESTER4) EJCMN00000000001
DSEJM (TESTER4) EJMCN00000000001
ASEJM (TESTER4) TOTLN00000000003
//*-+----1----+----2----+----3----+----4----+
//*
//*....................................................................
//TOOLIN DD *
SORT FROM(SORTIN) TO(PARTNER,SHARED) USING(STG1)
SORT FROM(SORTIN) TO(PARTNER,SHARED) USING(STG2)
SORT FROM(SORTIN) TO(GRANDTOT) USING(STG3)
COPY FROM(SHARED) TO(PARTNER)
COPY FROM(GRANDTOT) TO(PARTNER)
COPY FROM(PARTNER) TO(SORTOUT)
//*....................................................................
//STG1CNTL DD *
* GENERATE DETAILS BY PARTNER/SHARED
SORT FIELDS=(2,1,CH,A, PARTNER/SHARED
7,10,CH,A, PERSON NAME
1,1,CH,A, TOTALS PER PERSON - BEFORE DETAILS
43,4,CH,A) PRODUCT?
OUTFIL FNAMES=(PARTNER),
REMOVECC,
INCLUDE=(2,1,CH,EQ,C'P'),
HEADER1=(1:'PARTNER:',
40:'PRODUCT',
60:'SOURCE'),
IFTHEN=(WHEN=(1,1,CH,EQ,C'A'),
BUILD=(3X,3,3,
X,7,10,
60:48,11,ZD,EDIT=(IIIIIIIIIIT))),
IFTHEN=(WHEN=NONE,
BUILD=(5X,43,4,
40:48,11,ZD,EDIT=(IIIIIIIIIIT)))
OUTFIL FNAMES=(SHARED),
REMOVECC,
INCLUDE=(2,1,CH,NE,C'P'),
HEADER1=(/,
1:'SHARED:',
40:'PRODUCT',
60:'SOURCE'),
IFTHEN=(WHEN=(1,1,CH,EQ,C'A'),
BUILD=(3X,3,3,
X,7,10,
60:48,11,ZD,EDIT=(IIIIIIIIIIT))),
IFTHEN=(WHEN=NONE,
BUILD=(5X,43,4,
40:48,11,ZD,EDIT=(IIIIIIIIIIT)))
//*....................................................................
//STG2CNTL DD *
* GENERATE TOTAL FOR PARTNER/SHARED
INREC IFTHEN=(WHEN=(43,4,CH,EQ,C'TOTL'),
OVERLAY=(41:C'TOTAL ',
60:48,11,
48:11X))
SORT FIELDS=(2,1,CH,A, PARTNER/SHARED
1,1,CH,A, TOTALS PER PERSON - TO FIRST LINE
43,4,CH,A) PRODUCT?
OUTFIL FNAMES=(PARTNER),
REMOVECC,NODETAIL,
INCLUDE=(2,1,CH,EQ,C'P'),
SECTIONS=(43,4,
TRAILER3=(3X,41,6,
40:TOT=(48,11,ZD,EDIT=(IIIIIIIIIII)),
60:TOT=(60,11,ZD,EDIT=(IIIIIIIIIII))))
OUTFIL FNAMES=(SHARED),
REMOVECC,NODETAIL,
INCLUDE=(2,1,CH,NE,C'P'),
SECTIONS=(43,4,
TRAILER3=(3X,41,6,
40:TOT=(48,11,ZD,EDIT=(IIIIIIIIIII)),
60:TOT=(60,11,ZD,EDIT=(IIIIIIIIIII))))
//*....................................................................
//STG3CNTL DD *
* GENERATE GRAND TOTAL
INREC IFTHEN=(WHEN=(43,4,CH,EQ,C'TOTL'),
OVERLAY=(37:C'GRAND TOTAL',
60:48,11,
48:11X)),
IFTHEN=(WHEN=NONE,
OVERLAY=(47:C' '))
SORT FIELDS=(1,1,CH,A, TOTALS PER PERSON - TO FIRST LINE
43,4,CH,A) PRODUCT?
OUTFIL FNAMES=(GRANDTOT),
REMOVECC,NODETAIL,
HEADER1=(' '),
SECTIONS=(43,4,
TRAILER3=(1:37,11,
40:TOT=(48,11,ZD,EDIT=(IIIIIIIIIII)),
60:TOT=(60,11,ZD,EDIT=(IIIIIIIIIII))))
//*....................................................................
//PARTNER DD SPACE=(TRK,(10,10)),DISP=(MOD,PASS)
//SHARED DD SPACE=(TRK,(10,10)),DISP=(MOD,PASS)
//GRANDTOT DD SPACE=(TRK,(10,10)),DISP=(MOD,PASS)
//*....................................................................
//SORTOUT DD SYSOUT=*
//*.................................................................... |
| Code: |
**************** TOP OF DATA ***************
PARTNER: PRODUCT SOURCE
EJA (TESTER1) 9
EJBM 2
EJCM 3
EJMC 4
EJC (TESTER2) 3
EJBM 1
EJCM 1
EJMC 1
TOTAL 12
EJBM 3
EJCM 4
EJMC 5
SHARED: PRODUCT SOURCE
EJI (TESTER3) 9
EJBM 2
EJCM 3
EJMC 4
EJM (TESTER4) 3
EJBM 1
EJCM 1
EJMC 1
TOTAL 12
EJBM 3
EJCM 4
EJMC 5
GRAND TOTAL 24
EJBM 6
EJCM 8
EJMC 10
************** BOTTOM OF DATA ************************* |
|
|
| Back to top |
|
 |
MichelleSpeer
New User
Joined: 22 Aug 2020 Posts: 15 Location: United States
|
|
|
|
Thanks. However, assuming I am one who doesn't want to think or work is very bad assumption.
I was working on production issues, assisting junior team members along with meetings, and just hadn't had a chance to respond. That I had figured I needed to do the subtotaling, totaling separately then concatenating the 3 files together to build the report.
As you see by date times in below, I wasn't waiting to be handheld. Your solution is also very well explained for those who do want to be handheld.
1st crack was even before your 1st response that was very helpful with an great explanation.
| Code: |
CONTROL STATEMENTS FOR 5655-ZOS, Z/OS DFSORT V3R1 - 16:58 ON WED APR 16, 2025 -
SORT FIELDS=(43,4,CH,A)
SUM FIELDS=(48,11,ZD)
OUTREC FIELDS=(1:C'T',2,1,C'TOTAL',
43:43,4,47:47,1,48:48,11,
200:1X)
|
I even made sure to move the 11 byte to a 12 byte field to ensure no overflow in summation occurred.
| Code: |
0 IDENTIFIER FROM CALLING PROGRAM IS 0001
1 RECORD TYPE IS F - DATA STARTS IN POSITION 1
0 C5-NONE C6-NONE C7-NONE C8-NONE E9-H60647 C9-NONE E5-H53894 E6-NONE
0 BLOCKSET SORT TECHNIQUE SELECTED
0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AND MORE
0 - CONTROL STATEMENTS FOR 5655-ZOS, Z/OS DFSORT V3R1 - 11:53 ON THU APR 17, 20
SORT FIELDS=(43,4,CH,A)
SUM FIELDS=(200,12,ZD)
OUTFIL FNAMES=OUTDD01,REMOVECC,
BUILD=(C'TZGRAND TOTALS',43:43,5,48,11,200:200,12,250:1X)
|
| Code: |
- CONTROL STATEMENTS FOR 5655-ZOS, Z/OS DFSORT V3R1 - 11:53 ON THU APR 17, 2025
SORT FIELDS=(2,1,CH,A,1,1,CH,A,43,4,CH,A)
SUM FIELDS=(200,12,ZD)
OUTFIL FNAMES=OUTDD01,REMOVECC,
BUILD=(C'S',2,1,C'SUBTOTAL',43:43,5,48,11,200:200,12,250:1X)
|
| Code: |
CONTROL STATEMENTS FOR 5655-ZOS, Z/OS DFSORT V3R1 - 11:53 ON THU APR 17, 2025 -
SORT FIELDS=(COPY)
OUTFIL FNAMES=OUTDD01,REMOVECC,
SECTIONS=(2,1,SKIP=2L,
HEADER3=(05:225,25,
45:C'PRODUCT',
60:C'SOURCE'),
TRAILER3=(05:C'=========================',
45:C'===========',
60:C'============')),
IFTHEN=(WHEN=(1,1,CH,EQ,C'A',OR,
((1,1,CH,EQ,C'S',OR,1,1,CH,EQ,C'T'),AND,
43,4,CH,EQ,C'TOTL')),
BUILD=(07:3,40,
52:200,12,ZD,EDIT=(IIIIIIIIIIIT),
132:1X)),
IFTHEN=(WHEN=(1,1,CH,EQ,C'D'),
BUILD=(09:43,4,
40:48,11,ZD,EDIT=(IIIIIIIIIIT),
132:1X)),
IFTHEN=(WHEN=((1,1,CH,EQ,C'S',OR,1,1,CH,EQ,C'T'),AND,
43,4,CH,NE,C'TOTL'),
BUILD=(09:43,4,
40:200,12,ZD,EDIT=(IIIIIIIIIIIT),
132:1X))
BUILD=(09:43,4,
40:200,12,ZD,EDIT=(IIIIIIIIIIIT),
132:1X))
D OF STATEMENTS FROM SRT1CNTL - PARAMETER LIST STATEMENTS FOLLOW
ICE084I 0 EXCP ACCESS METHOD USED FOR INDD01
ICE231I 0 STORAGE USED FOR OUTFIL : BELOW 16M = 20480, ABOVE 16M = 2109440
ICE210I 0 OUTDD01 : EXCP USED, LRECL = 250, BLKSIZE = 27750, TYPE = FB (SDB)
ICE751I 1 EF-NONE CB-NONE F0-NONE E8-NONE
ICE055I 0 INSERT 0, DELETE 0
ICE054I 0 RECORDS - IN: 28, OUT: 28
ICE227I 0 OUTDD01 : DELETED = 0, REPORT = 10, DATA = 28
ICE228I 0 OUTDD01 : TOTAL IN = 28, TOTAL OUT = 38
ICE267I 0 ZSORT ACCELERATOR PATH NOT USED RSN=197
ICE052I 0 END OF DFSORT
|
| Code: |
PARTNER SOURCE ACCOUNTS: PRODUCT SOURCE
EJA (TESTER1) 9
EJBM 2
EJCM 3
EJMC 4
EJC (TESTER2) 3
EJBM 1
EJCM 1
EJMC 1
SUBTOTAL 12
EJBM 3
EJCM 4
EJMC 5
========================= =========== ============
SHARED SOURCE ACCOUNTS: PRODUCT SOURCE
EJI (TESTER3) 15
EJBM 10
EJCM 2
EJMC 3
EJM (TESTER4) 3
EJBM 1
EJCM 1
EJMC 1
SUBTOTAL 18
EJBM 11
EJCM 3
EJMC 4
========================= =========== ============
PRODUCT SOURCE
GRAND TOTALS 30
EJBM 14
EJCM 7
EJMC 9
========================= =========== ============
|
|
|
| Back to top |
|
 |
|
|
 |
All times are GMT + 6 Hours |
|