File Manager をバッチで実行しているときのプロシージャーの指定
拡張処理をサポートしているFile Manager 機能の 1 つを使用している場合、プロシージャーを作成するためには、PROC パラメーターを使用します。
File Manager による処理を拡張するためのプロシージャーは、ddname FMNEXEC に割り振られた PDS のメンバーであるか、インライン (プロシージャー名としてアスタリスクを指定することによって) にコーディングしても構いません。
PDS メンバーに保管されているプロシージャーは、次のようにして使用します。
- メンバーを含んでいる PDS の名前を指定する
FMNEXEC DDステートメントをコーディングします。 PROC=member-name制御ステートメントに「File Manager」をコーディングします。
例えば、FMNUSER.EXEC(EXAMPLE) に保管されている REXX プロシージャーを使用するには、次のようにします。
//jobcard
//*
//FILEMNGR PROC
//FILEMAN EXEC PGM=FILEMGR
//STEPLIB DD DISP=SHR,DSN=hlq.SFMNMOD1
//SYSPRINT DD SYSOUT=*
//SYSABEND DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
// PEND
//*
//* Run DSU function with an existing REXX procedure.
//* The REXX procedure used is in member EXAMPLE in FMNUSER.EXEC.
//* Member BATCH of PDS FMNUSER.FMN.CNTL is updated.
//* The updated member is printed.
//*
//EXAMPLE EXEC FILEMNGR
//FMNEXEC DD DISP=SHR,DSN=FMNUSER.EXEC
//INDD DD DISP=SHR,DSN=FMNUSER.FMN.CNTL
//SYSIN DD *
$$FILEM DSU INPUT=INDD,MEMBER=BATCH,PROC=EXAMPLE
$$FILEM DSP DSNIN=FMNUSER.FMN.CNTL(BATCH)
/*
インライン・プロシージャーの使用
PROC=*制御ステートメントに「File Manager」をコーディングします。- SYSIN データ・ストリームに、「
PROC=*」ステートメントに続いて、DFSORT または REXX ステートメントをコーディングします。 - 1 から 2 桁目にスラッシュと正符号 (/+) が入っている行で DFSORT または REXX ステートメントを終了します。
例:
//jobcard
//*
//FILEMNGR PROC
//FILEMAN EXEC PGM=FILEMGR
//STEPLIB DD DISP=SHR,DSN=hlq.SFMNMOD1
//SYSPRINT DD SYSOUT=*
//SYSABEND DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
// PEND
//*
//* Run DSU function with a REXX EXEC specified as an in-line proc.
//* Member BATCH2 of PDS FMNUSER.FMN.CNTL is updated.
//* The updated member is printed.
//*
//EXAMPLE2 EXEC FILEMNGR
//INDD DD DISP=SHR,DSN=FMNUSER.FMN.CNTL
//SYSIN DD *
$$FILEM DSU INPUT=INDD,MEMBER=BATCH2,PROC=*
outrec = change(outrec,'//','??');
/+
$$FILEM DSP DSNIN=FMNUSER.FMN.CNTL(BATCH2)
/*
インライン・プロシージャーをコーディングする場合には、1 桁目からコメントを開始しないでください。そのようにすると、/* がデータ終了の区切り文字と解釈されます。/*is interpreted as an end-of-data delimiter.