IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

Section within Section Reporting


IBM Mainframe Forums -> DFSORT/ICETOOL
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
MichelleSpeer

New User


Joined: 22 Aug 2020
Posts: 15
Location: United States

PostPosted: Wed Apr 16, 2025 9:27 am
Reply with quote

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
View user's profile Send private message
MichelleSpeer

New User


Joined: 22 Aug 2020
Posts: 15
Location: United States

PostPosted: Wed Apr 16, 2025 10:49 am
Reply with quote

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
View user's profile Send private message
Joerg.Findeisen

Senior Member


Joined: 15 Aug 2015
Posts: 1381
Location: Bamberg, Germany

PostPosted: Wed Apr 16, 2025 4:59 pm
Reply with quote

It will be helpful if you provide a sample of how it should look like.
Back to top
View user's profile Send private message
MichelleSpeer

New User


Joined: 22 Aug 2020
Posts: 15
Location: United States

PostPosted: Wed Apr 16, 2025 5:51 pm
Reply with quote

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
View user's profile Send private message
sergeyken

Senior Member


Joined: 29 Apr 2008
Posts: 2194
Location: USA

PostPosted: Wed Apr 16, 2025 9:17 pm
Reply with quote

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
View user's profile Send private message
sergeyken

Senior Member


Joined: 29 Apr 2008
Posts: 2194
Location: USA

PostPosted: Fri Apr 18, 2025 7:07 pm
Reply with quote

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----+----5----+----6----+----7
//*                                                                   
//*....................................................................
//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
View user's profile Send private message
MichelleSpeer

New User


Joined: 22 Aug 2020
Posts: 15
Location: United States

PostPosted: Fri Apr 18, 2025 9:29 pm
Reply with quote

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                     
 =========================               ===========    ============

Code:
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DFSORT/ICETOOL

 


Similar Topics
Topic Forum Replies
No new posts COBOL -Linkage Section-Case Sensitive COBOL Programming 1
No new posts Using Dynamic file handler in the Fil... COBOL Programming 2
No new posts FD Section to Create FB or Vb File Dy... COBOL Programming 1
No new posts Sections: need one appearance of cer... DFSORT/ICETOOL 4
This topic is locked: you cannot edit posts or make replies. ICETool reporting 2 das old dataset DFSORT/ICETOOL 13
Search our Forums:

Back to Top