■  Training2の回答例


//MYJOBJOBCLASS=A 
//STEP1EXECPGM=SORT 
//SYSOUTDDSYSOUT=* 
//SORTINDD* 
123456789012345678901234567890
09876543210987654321ABCDEFGHIJ
//SORTOT1DDDSN=TESTFIL1, 
// UNIT=SYSDA,VOL=SER=MYVOL,DISP=(NEW,KEEP), 
// SPACE=(TRK,(1,1),RLSE), 
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=24000) 
//SORTOT2DDDSN=TESTFIL2, 
// UNIT=SYSDA,VOL=SER=MYVOL,DISP=(NEW,KEEP), 
// SPACE=(TRK,(1,1),RLSE), 
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=24000) 
//SORTWK01DDUNIT=SYSDA,SPACE=(CYL,(10,10)) 
//SORTWK02DDUNIT=SYSDA,SPACE=(CYL,(10,10)) 
//SORTWK03DDUNIT=SYSDA,SPACE=(CYL,(10,10)) 
//SYSINDD* 
  OPTION  COPY
  OUTFIL  FNAMES=SORTOT1, 
      INCLUDE=(21,10,CH,GE,C'0000000000',AND, 
       21,10,CH,LE,C'9999999999'), 
     OUTREC=(1,10,ZD,TO=PD,LENGTH=6, ←PACKに変換するにはTO=PDを指定
     11,10,ZD,TO=PD,LENGTH=6, ←レングス指定も必要
     21,10, 
     58Z) ←Zは16進数のゼロのことです。
  OUTFIL  FNAMES=SORTOT2,SAVE ←SORTOT1以外の全レコードををSORT2に格納
     OUTREC=(1,10,ZD,TO=PD,LENGTH=6, 
     11,10,ZD,TO=PD,LENGTH=6, 
     21,10, 
     58Z) 
/*
//STEP2EXECPGM=IDCAMS 
//SYSPRINTDDSYSOUT=* 
//INFLDDDSN=TESTFIL1,DISP=SHR, 
// UNIT=SYSDA,VOL=SER=MYVOL 
//SYSINDD* 
  PRINT  INFILE(INFL)  DUMP ←DUMPは指定しなくても同じ
/*
//STEP3EXECPGM=IDCAMS 
//SYSPRINTDDSYSOUT=* 
//INFLDDDSN=TESTFIL2,DISP=SHR, 
// UNIT=SYSDA,VOL=SER=MYVOL 
//SYSINDD* 
  PRINT  INFILE(INFL)  DUMP 
/*
//STEP4EXECPGM=IEFBR14 
//DD1DDDSN=TESTFIL1, 
// UNIT=SYSDA,VOL=SER=MYVOL,DISP=(OLD,CATLG) 
//DD2DDDSN=TESTFIL2, 
// UNIT=SYSDA,VOL=SER=MYVOL,DISP=(OLD,CATLG) 
/*
//STEP5EXECPGM=IDCAMS 
//SYSPRINTDDSYSOUT=* 
//SYSINDD* 
  DELETE  TESTFIL1  PURGE  NONVSAM 
  DELETE  TESTFIL2  PURGE  NONVSAM 
/*

ヒント(STEP5)
IDCAMSでファイルを削除する場合、ファイルはカタログされていなければいけません。そのため、STEP4でわざわざカタログしています。