複数装置ファイル
ファイル仕様書に指定されたキーワード DEVID、SAVEIND、MAXDEV(*FILE)、 または SAVEDS のうち、少なくとも 1 つを持つ任意の RPG WORKSTN ファイルが 複数装置ファイルです。 複数装置ファイルを介して、ユーザーのプログラムは複数の装置にアクセスす ることができます。
RPG プログラムは、プログラム装置を介してアクセスしますが、 プログラム装置とは実際の装置への操作を指示する記号メカニズムのことです。 ファイルを作成する場合には (DDS およびファイル作成コマンドなどのコマンド を使用して)、プログラム装置と関連した装置、ファイルに要求元プログラム装置 があるかどうか、ファイル名別 READ 命令に応答するための装置の送信勧誘 に使用されるレコード様式、およびこの READ 命令が応答を待機する時間など を考慮します。 複数装置ファイルを作成する場合のオプションおよび要件については、Web サイト http://www.ibm.com/systems/i/infocenter/ で IBM® i Information Center の中の『データベースおよびファイル・システム』カテゴリーの『DB2® for i』の節にある表示装置ファイルの章を参照してください。ICF ファイルに関する情報は、資料「ICF プログラミング」でも参照できます。
- OPEN 命令は、ファイルをオープンするほかに、ファイルの作成時に指定さ れた装置を暗黙のうちに獲得します。
- ACQ (獲得) 命令は、複数装置ファイル用にその他の装置を獲得します。
- REL (解放) 命令は、ファイルから装置を解放します。
- DDS キーワード INVITE で使用された時の WRITE 命令は、後続の送信勧誘 プログラム装置からの読み取り操作に応答するようにプログラム装置を勧誘しま す。資料「ICF プログラミング」にある、プログラム装置の送信勧誘に関する節を参照してください。
- READ 命令は、送信勧誘プログラム装置からの読み取り操作、または 1 プログラム装置からの読み取り操作の
いずれかを処理します。 NEXT 命令が有効となっていない場合には、プログラム・サイクル読み取りまたはファイル名別 READ 命令は、応答するように勧誘されている装置からの入力を
待機します (送信勧誘プログラム装置からの読み取り)。他の入出力操作 (NEXT 命令の後の
ファイル名別 READ、および
様式名別 READ を
含む) は、特別なフィールドで指示されたプログラム装置を
使用して、1 プログラム装置からの読み取り操作を処理します。 (このフィールドは、ファイル仕様書行の DEVID キーワードで指定され
ます。)
この装置は最後の入力操作で使用した装置、ユーザーが指定した装置、 または要求元プログラム装置となります。 資料「ICF プログラミング」にある、送信勧誘プログラム装置からの読み取りに関する節、および 1 プログラム装置からの読み取りに関する節を参照してください。
- NEXT 命令は、次のファイル名別 READ 命令またはプログラム・サイクル 読み取り操作でどの装置を使用するかを指定します。
- POST 命令は、情報を INFDS 情報データ構造に入れます。情報は特定の装置またはファイルに関するものです。 (POST 命令を使用するのは、複数装置ファイルの場合だけではありません。)
RPG 命令コードの詳細については、「IBM Rational® Development Studio for i: ILE RPG 解説書」を参照してください。
- MAXDEV キーワードは、ファイルが単一装置ファイルであるか
複数装置ファイルであるかを示します。
処理するファイルの定義から装置の最大数が取られる複数装置ファイルを処理 するためには、MAXDEV(*FILE) を指定してください。ただ 1 つの装置を処理するためには、MAXDEV(*ONLY) を指定してください。
- DEVID キーワードにより、入出力操作が向けられるプログラム装置の名前
を指定することができます。
1 プログラム装置からの読み取りまたは WRITE 命令が出された時には、この 命令に使用される装置は DEVID キーワードに対するパラメーターとして指定さ れた装置です。 このフィールドはブランクに初期設定され、最後の 正常な入力操作が行われた 装置の名前で更新されます。 ある値をフィールドに転送して、明示的に設定することもできます。 ACQ 命令コードは、このフィールドの値に影響しません。 DEVID キーワードが指定されていない場合には、最後の正常な入力操作が実行 された時の装置に対して入力操作が実行されます。 読み取り命令が装置からまだ正常に実行されていない場合には、ブランクの装置 名が使用されます。
1 プログラム装置からの読み取りまたは WRITE 命令がブランクの装置名で出され た時には、RPG コンパイラーはプログラムの要求元装置の装置名を暗黙に 使用します。 RPG プログラムを対話式に呼び出して、これらの命令のいずれかの実行 対象としたい ICF 装置を獲得する場合には、命令を実行する前に ICF 装置の 装置名を DEVID キーワードに指定されたフィールド名に明示的に転送しなけれ ばなりません。 これを行わない場合には、使用される装置名は ブランク (この場合には、 対話式要求元装置名が使用されます)、 または最後の正常な入力操作からの 装置名となります。 ICF 装置に対して入出力操作を実行した場合には、別の装置で入力操作が正常 に完了するまでは、値を変更する必要はありません。
- SAVEDS キーワードは、ファイルに獲得された各装置ごとに保管および復元 されるデータ構造を示します。 SAVEIND キーワードは、ファイルに獲得された各装置ごとに保管および復元 される標識のセットを示します。 入力操作の前に、標識およびデータ構造の現在のセットが保管されます。 入力操作の後に、RPG コンパイラーはこの操作と関連した装置の標識および データ構造を復元します。 これは、入力操作の前に使用可能であった標識およびデータ構造のセットと異 なる場合があります。
- INFDS キーワードは、WORKSTN ファイルのファイル情報データ構造を指定
します。 RPG *STATUS フィールドおよび入出力操作に
対するメジャー / マイナー戻りコードは、
このデータ構造を介して
アクセスすることができます。 ICF が使用されている時には特に、複数装置ファイルへの入出力操作中に起こ
ったエラーを検出するために、両方のフィールドが有用です。
注: これらの制御オプションを 指定する時には、DEVID、SAVEIND、 または SAVEDS オプションよりも前に MAXDEV オプションを コーディングしなければなりません。