File Manager をバッチで実行しているときのプロシージャーの指定

拡張処理をサポートしているFile Manager 機能の 1 つを使用している場合、プロシージャーを作成するためには、PROC パラメーターを使用します。

File Manager による処理を拡張するためのプロシージャーは、ddname FMNEXEC に割り振られた PDS のメンバーであるか、インライン (プロシージャー名としてアスタリスクを指定することによって) にコーディングしても構いません。

PDS メンバーに保管されているプロシージャーは、次のようにして使用します。

  1. メンバーを含んでいる PDS の名前を指定する FMNEXEC DD ステートメントをコーディングします。
  2. 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)
/*

インライン・プロシージャーの使用

  1. PROC=* 制御ステートメントに「File Manager」をコーディングします。
  2. SYSIN データ・ストリームに、「PROC=*」ステートメントに続いて、DFSORT または REXX ステートメントをコーディングします。
  3. 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.