■  Training1の回答例


//MYJOBJOBCLASS=A 
//STEP0EXECPGM=IEHPROGM ←このステップがないと何度実行しても同じ結果にならない
//SYSPRINTDDSYSOUT=* 
//DD1DDUNIT=SYSDA,VOL=SER=MYVOL,DISP=SHR 
//SYSINDD* 
 SCRATCH VOL=SYSDA=MYVOL,DSNAME=TESTFIL1 
 SCRATCH VOL=SYSDA=MYVOL,DSNAME=TESTFIL2 
/*
//STEP1EXECPGM=IEFBR14 
//DD1DDDSN=TESTFIL1, 
// UNIT=SYSDA,VOL=SER=MYVOL,DISP=(NEW,CATLG), 
// SPACE=(TRK,(1,1),RLSE), 
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=24000) 
//DD2DDDSN=TESTFIL2, 
// UNIT=SYSDA,VOL=SER=MYVOL,DISP=(NEW,KEEP), 
// SPACE=(TRK,(1,1),RLSE), 
// DCB=(RECFM=VB,LRECL=4092,BLKSIZE=4096) 
/*
//STEP2EXECPGM=ICEGENER 
//SYSPRINTDDSYSOUT=* 
//SYSUT1DD* 
1234567890
ABCDEFG
//SSUT2DDDSN=TESTFIL1,DISP=MOD ←カタログファイルに追加する時はMOD
//SYSINDDDUMMY 
/*
//STEP3EXECPGM=SORT 
//SYSOUTDDSYSOUT=* 
//SORTINDD* 
1234567890
ABCDEFG
//SORTOUTDDDSN=TESTFIL2, 
// UNIT=SYSDA,VOL=SER=MYVOL,DISP=(MOD,KEEP), ←アンカタログファイルに追加する時はMOD,KEEP
// DCB=(RECFM=VB,LRECL=4092,BLKSIZE=4096) 
//SORTWK01DDUNIT=SYSDA,SPACE=(CYL,(10,10)) 
//SORTWK02DDUNIT=SYSDA,SPACE=(CYL,(10,10)) 
//SORTWK03DDUNIT=SYSDA,SPACE=(CYL,(10,10)) 
//SYSINDD* 
  OPTION  COPY
  OUTFIL  FNAMES=SORTOUT,FTOV ←FTOVがないと可変長にできない
/*
//STEP4EXECPGM=SORT 
//SYSOUTDDSYSOUT=* 
//SORTINDDDSN=TESTFIL1,DISP=SHR 
//SORTOUTDDDSN=&&TEST1,DISP=(,PASS) ←PASSにしないと次のステップで使えない
// UNIT=SYSDA,VOL=SER=MYVOL,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* 
  SORT  FIELDS=(1,4,BI,A)
/*
//STEP5EXECPGM=SORT 
//SYSOUTDDSYSOUT=* 
//SORTINDDDSN=TESTFIL2,DISP=SHR 
//SORTOUTDDDSN=&&TEST2,DISP=(,PASS) ←PASSにしないと次のステップで使えない
// UNIT=SYSDA,VOL=SER=MYVOL,SPACE=(TRK,(1,1),RLSE), 
// DCB=(RECFM=VB,LRECL=4092,BLKSIZE=4096) 
//SORTWK01DDUNIT=SYSDA,SPACE=(CYL,(10,10)) 
//SORTWK02DDUNIT=SYSDA,SPACE=(CYL,(10,10)) 
//SORTWK03DDUNIT=SYSDA,SPACE=(CYL,(10,10)) 
//SYSINDD* 
  SORT  FIELDS=(1,4,BI,A)
/*
//STEP6EXECPGM=ISRSUPC, 
//  PARM=(CHNGL,BYTECMP,'','') 
//OLDDDDDDSN=&&TEST1,DISP=(OLD,DELETE) 
//NEWDDDDDSN=&&TEST2,DISP=(OLD,DELETE) 
//OUTDDDDSYSOUT=* 
//SYSINDD* 
PROCESS  LITNM=ISRLENP  DTBLNM=ISR3278K
/*
//

STEP7の答え
VBファイルの場合、ファイルの先頭にレングス(2桁)+リザーブ(2桁)がついているので、 1桁〜4桁をバイナリーでソートしてもソートの結果は変わりません。
一方、FBファイルの場合は、ソートされてABCDEFGの行が1件目になるので、FBとVBをコンペアするとアンマッチになります。