OUTFIL Creating Header in Reports Example


Scenario - Create the report with headers like below -

                   Student Details  Printed on 01/13/2017 AT 05:52:27

              Class X Students details Page     1    on  01-13-2017

Std num   Std name           Department     Total marks                         
-------   --------           ----------     -----------

Input File - MATEPK.SORT.INPUT01 - FB file of 80 length

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
00001     student1           dept1          560
00003     student3           dept2          520
00004     student4           dept1          540
00005     student5           dept2          500
00002     student2           dept3          510
00006     student6           dept3          550
00008     student8           dept1          530
00007     student7           dept3          510
00009     student9           dept2          520
00010     student10          dept2          505

JCL -

----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
//MATEPKD  JOB (123),'MTH',NOTIFY=&SYSUID
//*
//STEP01   EXEC PGM=SORT
//SORTIN   DD DSN=MATEPK.SORT.INPUT01,DISP=SHR
//OUTPUT1  DD DSN=MATEPK.SORT.OUTPT01,
//             SPACE=(CYL,(1,1),RLSE),DCB=*.SORTIN,
//             DISP=(NEW,CATLG,DELETE)
//SYSOUT   DD SYSOUT=*
//SYSIN    DD *
     SORT FIELDS=(1,5,ZD,A)
     OUTFIL FNAMES=OUTPUT1,LINES=9,BLKCCH2,

     HEADER1=(20:'Student Details',
              37:'Printed on ',DATE=(MD4/),' AT ',TIME),

     HEADER2=(/,15:'Class X Students details',
               40:'Page',PAGE,53:' on ',58:DATE=(MD4-),4/,
          1:'Std num',11:'Std name',30:'Department',45:'Total marks',/, 
          1:'-------',11:'--------',30:'----------',45:'-----------'),  

     OUTREC=(1,80)
/*

Output File - MATEPK.SORT.OUTPT01 - FB file of 80 length

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
                   Student Details  Printed on 01/13/2017 AT 05:52:27

              Class X Students details Page     1    on  01-13-2017
 
Std num   Std name           Department     Total marks
-------   --------           ----------     -----------
00001     student1           dept1          560
00002     student2           dept3          510

              Class X Students details Page     2    on  01-13-2017

Std num   Std name           Department     Total marks
-------   --------           ----------     -----------
00003     student3           dept2          520
00004     student4           dept1          540

              Class X Students details Page     3    on  01-13-2017

Std num   Std name           Department     Total marks
-------   --------           ----------     -----------
00005     student5           dept2          500
00006     student6           dept3          550

              Class X Students details Page     4    on  01-13-2017

Std num   Std name           Department     Total marks
-------   --------           ----------     -----------
00007     student7           dept3          510
00008     student8           dept1          530
  
              Class X Students details Page     5    on  01-13-2017
  
Std num   Std name           Department     Total marks
-------   --------           ----------     ----------- 
00009     student9           dept2          520
00010     student10          dept2          505

Explaining Example -

  1. SORT FIELDS=(1,5,ZD,A) - sort all outputs in ascending order based on the ZD value from 1 to 5 positions.
  2. OUTFIL FNAMES=OUTPUT1,.. - Writes the output to the output1 file.
  3. OUTFIL FNAMES=OUTPUT1,LINES=9,BLKCCH2,… - LINES=8 is equal to a single record per page. LINES=9 means two records will be written to page.
  4. OUTFIL FNAMES=OUTPUT1,..,HEADER1=(20:'Student Details',37:'Printed on ',DATE=(MD4/),' AT ',TIME), - Creates the main/overall header.
  5. HEADER2=(/,15:'Class X Students details',40:'Page',PAGE,53:' on ', 58:DATE=(MD4-),4/,1:'Std num',11:'Std name',30:'Department',45:'Total marks',/, 1:'-------',11:'--------',30:'----------',45:'-----------') - Creates pages level header.
  6. OUTREC=(1,80) - Build the output record from input file of length 80.