SPECIAL ファイルの使用
RPG 装置名 SPECIAL (ファイル仕様書の 36 ~ 42 桁目) によって、ILE RPG 命令で直接サポートされない入出力装置を指定することができます。ファイルの入出力命令は、ユーザー作成ルーチンによって 制御されます。 ユーザー作成ルーチンの名前は、キーワード PGMNAME('プログラム名 ') を使用してファイル仕様書で指定しなければなりません。
- オプション・コード・パラメーター (オプション)
- 戻り状況パラメーター (状況)
- エラー検出パラメーター (エラー)
- レコード域パラメーター (区域)
このパラメーター・リストは、ILE RPG コンパイラーおよびユーザー作成ルーチンによってアクセスされますが、SPECIAL ファイルのあるプログラムでアクセスすることはできません。
- オプション
- オプション・パラメーターは 1 桁の文字フィールドで、
ユーザー作成ルーチンで実行する処置を示します。 SPECIAL ファイルに対して処理中の
命令 (OPEN、CLOSE、FEOD、READ、WRITE、DELETE、UPDATE) によって、ILE RPG
からユーザー作成ルーチンに次の値の 1
つが渡されます。
- 渡される値
- 説明
- O
- ファイルをオープンする。
- C
- ファイルをクローズする。
- F
- ファイルを強制終了する。
- R
- レコードを読み取って区域パラメーターで定義された区域に入れる。
- W
- 区域パラメーターで定義された区域に、ILE RPG プログラムがレコードを 入れている。このレコードは書き出される。
- D
- レコードを削除する。
- U
- 最後に読み取られたレコードを更新したレコード。
- 状況
- 状況パラメーターは
1 桁の文字フィールドで、制御が ILE RPG
プログラムに戻される時のユーザー作成ルーチンの状況を示します。ユーザー作成ルーチンから ILE RPG
プログラムに制御が戻る時、状況には次の戻り値の 1 つがなければなりません。
- 戻り値
- 説明
- 0
- 通常の戻り。 要求された処置が処理された。
- 1
- 入力ファイルがファイルの終わりであり、レコードが戻されない。 ファイルが 出力ファイルの場合には、この戻り値はエラーである。
- 2
- 要求された処置が処理されなかった。エラー状態が存在する。
- エラー
- エラー・パラメーターは 5 桁のゾーン数値フィールドで、小数部は ありません。 ユーザー作成ルーチンでエラーが検出された場合には、エラー・パラメーターにそのエラーの種類を 表す印または値が入ります。 状況パラメーターに 2 が入っている場合には、INFDS 中の位置 *RECORD の 最初の 5 桁にこの値が入ります。
- 区域
- 区域パラメーターは文字フィールドで、その長さは SPECIAL ファイルと 関連したレコード長と同じです。 このフィールドは ILE RPG プログラムとのレコードの授受のために使われます。
RPG 作成のパラメーター・リストに追加のパラメーターを追加することができます。SPECIAL ファイル用の ファイル仕様書でキーワード PLIST(パラメーター・リスト名) を 指定します。図 1を参照してください。次に演算仕様書の中の PLIST 命令を使用して追加するパラメーターを定義します。
SPECIAL ファイルのファイル仕様書のキーワード PGMNAME によって指定される ユーザー作成ルーチンは、RPG 作成のパラメーターとユーザー指定のパラメーター の両方が入っている入り口パラメーター・リストを含んでいなければなりま せん。
1 次ファイルとして SPECIAL ファイルを指定した場合には、最初の プライマリーを読み取る前にユーザー指定のパラメーターを初期設定しなけれ ばなりません。 PARM パラメーターの演算項目 2 の指定で、あるいはパラメーターとして コンパイル時配列または配列要素の仕様書によって、これらのパラメーターを初期設定 することができます。
表 1 は、SPECIAL ファイルに有効なファイル命令コードを 示します。
| ファイル仕様書の桁 | 演算仕様書の桁 | |
|---|---|---|
| 17 | 18 | 26-35 |
| I | P/S | CLOSE、FEOD |
| C | P/S | WRITE、CLOSE、FEOD |
| U | P/S | UPDATE、DELETE、CLOSE、FEOD |
| O | WRITE、OPEN、CLOSE、FEOD | |
| I | F | READ、OPEN、CLOSE、FEOD |
| C | F | READ、WRITE、OPEN、CLOSE、FEOD |
| U | F | READ、UPDATE、DELETE、OPEN、CLOSE、FEOD |