拡張レコード処理
以下の節では、File Manager が各ユーティリティー機能の拡張レコード処理を実行する方法について説明します。
- 「Copy Utility (コピー・ユーティリティー)」(オプション 3.3) またはデータ・セット・コピー機能 (DSC)
- DSC レコード処理では、各レコードは入力ファイルから読み取られます。入力レコードは、
入力レコード・バッファー
および最初に等しい出力レコード・バッファー
でユーザー・プロシージャーに受け渡されます。ユーザー・プロシージャーは、レコード内部のデータおよび他のソースからのデータに基づいて、多くのアクションを実行できます。または、相互に互換性がある場合はアクションの任意の組み合わせを実行できます。その後、ユーザー・プロシージャーは File Manager に制御を戻します。この時点で、File Manager は、出力レコードをユーザー・プロシージャーから基本出力ファイルにコピーします (これらがユーザー・プロシージャーからの命令であると想定されます)。それぞれの入力レコードに対して、プロシージャーは以下を実行できます。- 出力レコードを未変更のまま残して、出力ファイルにコピーするために戻す。(RETURN コマンド)
- 出力レコードの一部または全部を変更して、出力ファイルにコピーするために戻す。(RETURN コマンド)
- 出力レコードを出力ファイルにコピーしないことを選択する。(RETURN DROP コマンド)
- 入力ファイルの処理を停止して、出力ファイルへの書き込みを停止する。(RETURN STOP および RETURN STOP IMMEDIATE コマンド)
- 入力レコードのデータに基づいて新規レコードを形式設定して、1 つ以上の新規レコードを基本出力ファイル以外の 1 つ以上の出力ファイルに書き込む。(WRITE コマンド)
ユーザー・プロシージャーは DSC ではオプションです。
- 「Print Utility (印刷ユーティリティー)」(オプション 3.2) またはデータ・セット印刷機能 (DSP)
- DSP のレコード処理は、DSC の場合と非常に似ています。ただし、DSC がユーザー・プロシージャーの出力レコードを出力ファイルに書き込むのに大して、DSP は印刷用に要求されたとおりに出力レコードを形式設定して、印刷の宛先に送信します。
ユーザー・プロシージャーは DSP ではオプションです。
- データ・セット更新 (DSU) 機能
- DSU レコード処理は、データ・セット内のレコードがコピーされないという点で DSC および DSP と異なります。代わりに、ユーザー・プロシージャーによってオプションでレコードを更新することができます。ユーザー・プロシージャーは、File Manager がレコードを読み取った後に呼び出されます。ユーザー・プロシージャーの入出力レコード・バッファーは、ファイルに存在するレコードとして設定されます。それぞれの入力レコードに対して、プロシージャーは以下を実行できます。
- 出力レコードを未変更のままにする。出力レコードが未変更のままである場合、File Manager はファイル・レコードを更新しません。(RETURN コマンド)
- 出力レコードの一部または全部を変更して、ファイルで更新するために戻す。(RETURN コマンド)
- ファイル・レコードを更新しないことを明示的に選択する。(RETURN DROP コマンド)
- 入力ファイルの処理を停止する。(RETURN STOP および RETURN STOP IMMEDIATE コマンド)
- 入力レコードのデータに基づいて新規レコードを形式設定して、1 つ以上の新規レコードを基本出力ファイル以外の 1 つ以上の出力ファイルに書き込む。(WRITE コマンド)
DSU にはいくつかの制約事項があります。主な制約事項は、DSU が
インプレース更新
を実行することです。つまり、更新されたデータ・セット・レコードの長さは、更新前のレコードと同じでなければなりません。ユーザー・プロシージャーは DSU では必須です。
- データ・セット編集バッチ (DSEB) 機能
- DSEB レコード処理は、DSU の場合と似ています。DSU と同様に、DSEB ユーザー・プロシージャーはどのレコードでも
インプレース更新
を実行できます。ただし、DSEB では、ユーザー・プロシージャーは、UP() および DOWN() などのナビゲーション・コマンドを組み込むことによってのみ、データ・セット内のレコードを横断できます。その結果、入力データ・セット・レコードを、どの順序でも横断して更新できます。ユーザー・プロシージャーは DSEB では必須です。
- 「Find/Change Utility (検索/変更ユーティリティー)」(オプション 3.6) または検索/変更機能 (FCH)
- 通常の FCH の使用では、ユーザー・プロシージャーはありません。この場合、データ・セットまたはライブラリーでストリングの検索 (および場合によっては変更) を行うために、FCH 基本コマンドが使用されます。
FCH ユーザー・プロシージャーは、レコードで単純なストリング突き合わせではなく、複雑なロジックを実行できます。RETURN または RETURN DROP を使用して、レコードが FCH 出力報告書で選択済み (
検出
) として報告されるかどうかを示すことができます。ユーザー・プロシージャーは、変更済みの出力レコードの RETURN を実行することによってレコードを変更することもできます。この場合は常に、レコードも検出または選択済みとしてみなされます。