■  入力ファイルの一部を置き換えてCOPY/SORTする方法


その1

//SORT1EXECSORT 
//SORTINDDDSN=…,DISP=SHR 
//SORTOUTDDDSN=…,DISP=(,KEEP),… 
//SYSINDD* 
 SORT FIELD=COPY←OPTION COPYと同じ
 OUTFIL FNAMES=SORTOUT,
  OUTREC=(1,39,C'T')
/*   
   このサンプルは、INPUTの1〜39
バイト目をOUTPUTの1〜39バイトにセット、
「T」をOUTPUTの40バイト目にセットする



その2

//SORT1EXECSORT 
//SORTINDDDSN=…,DISP=SHR 
//SORTOUTDDDSN=…,DISP=(,KEEP),… 
//SYSINDD* 
 OPTION COPY
 OUTFIL FNAMES=SORTOUT,
  OUTREC=(1,10,11,1,CHANGE=(1,X'00',X'F0',C' ',C'X'),20,40)
/*   
    INPUTの1バイト目から10バイトをそのままセット
INPUTの11バイト目から1バイトを変更 (X'00'はX'F0'へ、C'  'はC'X'へ変更)
INPUTの20バイト目から40バイトをセット

  注意) 既に他のビットが立っている場合はU−212でアベンドします。
  ↓ メッセージ
MATCH NOT FOUND FOR SORTOUT CHANGE FIELD AT POSITION 11
  ↓
この場合は、「NOMATCH=(11,1)を指定します」



その3

//SORT1EXECSORT 
//SORTINDD* 
AAAAA67890
BBBBB67890
CCCCC67890
//SORTOUTDDDSN=…,DISP=(,KEEP),… 
//SYSINDD* 
 OPTION COPY
 OUTFIL FNAMES=SORTOUT,
  OUTREC=(1,5,CHANGE=(5,C'AAAAA',C'XXXXX',C'BBBBB',C'ZZZZZ',
                 NOMATCH=(1,5),
     6,75)
/*   
    INPUTの1バイト目から5バイトをセットするがその5バイトが、AAAAAだった場合はXXXXXに変換、BBBBBだった場合はZZZZZに変換してセット
AAAAAでもBBBBBでもない場合はそのままセット
その次にINPUTの6バイト目から75バイトをそのままセット




その4 -z/OS Ver2Rel4以上-

//SORT1EXECSORT 
//SORTINDD* 
Z1234567890
Y1234567890
X1234567890
//SORTOUTDDDSN=…,DISP=(,KEEP),… 
//SYSINDD* 
 SORT FIELDS=(1,1,CH,A)
  OUTREC FINDREP=(IN=X'E7',OUT=C'@')
/*   
    入力にZ(=X'E7')があったら、@に変換して出力
 
OUTRECのかわりにINRECを使うとSORT前に置き換えてからSORTできます



BEFORE PAGE

TOP PAGE