SPECIAL ファイルの使用

RPG 装置名 SPECIAL (ファイル仕様書の 36 〜 42 桁目) によって、ILE RPG 命令で直接サポートされない入出力装置を指定することができます。ファイルの入出力命令は、ユーザー作成ルーチンによって 制御されます。 ユーザー作成ルーチンの名前は、キーワード PGMNAME('プログラム名') を使用してファイル仕様書で指定しなければなりません。

ILE RPG はこのユーザー作成ルーチンを呼び出してファイルをオープンし、レコードの読み取りおよび書き出しを行い、ファイルをクローズします。ILE RPG は、ユーザー作成ルーチンが使用するパラメーター・リストも作成します。このパラメーター・リストには次のものが入っています。

このパラメーター・リストは、ILE RPG コンパイラーおよびユーザー作成ルーチンによってアクセスされますが、SPECIAL ファイルのあるプログラムでアクセスすることはできません。

以下では、この RPG 作成パラメーター・リスト中のパラメーターについて説明 します。

オプション
オプション・パラメーターは 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(パラメーター・リスト名) を 指定します。図 184 を参照してください。 次に演算仕様書の中の PLIST 命令を使用して追加するパラメーターを定義します。

SPECIAL ファイルのファイル仕様書のキーワード PGMNAME によって指定される ユーザー作成ルーチンは、RPG 作成のパラメーターとユーザー指定のパラメーター の両方が入っている入り口パラメーター・リストを含んでいなければなりま せん。

1 次ファイルとして SPECIAL ファイルを指定した場合には、最初の プライマリーを読み取る前にユーザー指定のパラメーターを初期設定しなけれ ばなりません。 PARM パラメーターの演算項目 2 の指定で、あるいはパラメーターとして コンパイル時配列または配列要素の仕様書によって、これらのパラメーターを初期設定 することができます。

表 45 は、SPECIAL ファイルに有効なファイル命令コードを 示します。

表 45. 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