Creating PDS from PS


IEBGENER can logically divide a sequential data set into record groups and creates members with the record groups. It places the newly created members in an output PDS or PDSE. IEBGENER can’t create a PDS or PDSE if an input or output data set contains spanned records.

Practical Example -


Scenario - Create PDS member from PS file.

Input PS File - MATEPK.IEBGENER.INPUTPS

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
********************************* Top of Data **********************************
E0001    EMPLOYEE1           DIR                 LOC1      0000100000    
E0002    EMPLOYEE2           MGR       DEPT1     LOC1      0000080000    
E0003    EMPLOYEE3           MGR       DEPT2     LOC2      0000075000    
E0004    EMPLOYEE4           TL        DEPT1     LOC1      0000050000    
E0005    EMPLOYEE5           SSE       DEPT1     LOC1      0000045000    
E0006    EMPLOYEE6           SE        DEPT1     LOC1      0000034000    
E0007    EMPLOYEE7           SSE       DEPT2     LOC2      0000046000    
******************************** Bottom of Data ********************************

Code -

----+----1----+----2----+----3----+----4----+----5----+----6
//MATEPKC  JOB (123),'MTH',CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),
//             NOTIFY=&SYSUID
//***********************************************************
//* COPY FALT FILE DATA INTO THE NEW MEMBER OF NEW PDS       
//***********************************************************
//STEP10   EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSN=MATEPK.IEBGENER.INPUTPS,DISP=SHR
//SYSUT2   DD DSN=MATEPK.IEBGENER.NEWPDS(BACKUPPS),
//            DISP=(NEW,CATLG,DELETE),
//            SPACE=(TRK,(10,10),RLSE),
//            UNIT=3390,VOL=SER=DEVHD4,DSNTYPE=LIBRARY,
//            DCB=(DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=800)
//SYSIN    DD  DUMMY

Output - MATEPK.IEBGENER.OUTPDS(BACKUPPS)

VIEW       MATEPK.IEBGENER.NEWPDS(BACKUPPS) - 01.00        Columns 00001 00072 
Command ===>                                                  Scroll ===> CSR  
=COLS> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
****** ***************************** Top of Data ******************************
000001 E0001    EMPLOYEE1           DIR                 LOC1      0000100000   
000002 E0002    EMPLOYEE2           MGR       DEPT1     LOC1      0000080000   
000003 E0003    EMPLOYEE3           MGR       DEPT2     LOC2      0000075000   
000004 E0004    EMPLOYEE4           TL        DEPT1     LOC1      0000050000   
000005 E0005    EMPLOYEE5           SSE       DEPT1     LOC1      0000045000   
000006 E0006    EMPLOYEE6           SE        DEPT1     LOC1      0000034000   
000007 E0007    EMPLOYEE7           SSE       DEPT2     LOC2      0000046000   
****** **************************** Bottom of Data ****************************

Explaining Example -

  • SYSUT1 DD maps the input data set (MATEPK.IEBGENER.INPUTPS).
  • SYSUT2 DD specifies the output file as PDS member MATEPK.IEBGENER.NEWPDS(BACKUPPS). MATEPK.IEBGENER.NEWPDS and BACKUPPS are the newly created in this job.
  • SYSIN DD Specifies the control data set as DUMMY to identify no control statements are used.