R P G | ファイル仕様書 |
ファイル仕様書では、プログラムで使用するファイルについて記述します。
COBOLのENVIRONMENT DIVISIONに相当します。
ファイルは大別して、データベース、画面ファイル、印刷ファイルの3種です。
6桁 仕様書コードFを入れます。 7〜14桁 ファイルIDを指定します。 15桁 ファイルの入出力のモードを指定します。
I :入力、O :出力、U :更新、C :会話型です。19桁 プログラムの内部で記述したファイル情報を使用するか
外部で記述したファイル情報を使用するか指定します。
E :外部で記述したファイル情報を使用
F :内部で記述したファイル情報を使用
内部記述については別項をもうけて説明します。40〜46桁 装置名を指定します。
DISK : 磁気ディスク装置
PRINTER :印刷装置
WRKSTN : ワークステーション
例:データベースと印刷ファイルの例
(7桁目が*のものは注釈です)
...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 FM420 IF E K DISK F* FLM420AP O E PRINTER F*
カラムスケールを入れてあるので、参考にして下さい。
このプログラムはファイルM420からレコードを読取り、印刷ファイル
LM420APに印刷出力するプログラムの一部です。
説明:
M420 読取するファイルの名前です。
数字をファイル名にする必要はありません。IF 入力専用で、読取の手順は各種の読取りの指定を可能に
とするよう、F(Full手順)を指定しています。E ファイルの外部記述情報を使用を指定しています。 K レコードの位置の特定をファイルのキーによることを指定します。 LM420AP 印刷ファイルの名前です。ここではM420の内容を
リスティングするということで、LをつけてLM420、
さらにバリエーションのA、最後のPは印刷ファイルの
つもりで、Pとしています。O 出力専用ということです。 E プログラムでファイルの外部記述情報を、使用することを指定しています。 PRINTER 印刷装置を示します。
COBOLとの差
RPGではファイル名は外部の実体名を使用します。
プログラム内で使用するファイル名と、外部の実体名が異なる場合は、CLと呼ばれる制御言語の
OVRDBFコマンドで結びつけ(一時変更)を行います。
RPGでは原則として、ファイルはプログラム開始時に自動的にOPENされます。
RPGでOPEN命令はありますが、COBOLのように明示的にOPENすることはほとんどありません。
外部記述
AS/400では、ファイルはデータベースファイルとして、かなりの情報を持って定義されます。
(レコード様式もそのひとつ)
プログラムでは「その情報を利用する」とだけ定義し、レコードの様式などをプログラム内部で
改めて定義するようなことは極力さけます。
例えば、上の例のファイル,M420は次のような様式で定義されている想定です。
外部情報を利用すれば、COBOLのようにPICTURE定義は必要ありません。
(プログラムで定義のし直しもできます)
M420のレコードレイアウト
削除フラグ 1 得意先Y 5 得意先名 42 (2バイトコード文字混在可) 得意先カナ 20 電話番号 12 業種コード 2 フラグ 1 売上実績 11 (ゾーン10進数)
参考プログラム
ここでサンプルとしているのは、次のようなプログラムです。
....+....1....+....2....+....3....+....4....+....5....+....6....+....7.. H*=============================================================== H* ID : LM420 H* NAME : 得意先一覧表印刷 H* FUNC : 得意先マスターファイルについて、キー順に全件、順次に、 H* 読取、同一覧表を印刷する。 H*=============================================================== H Y/ 1 F*=============================================================== FM420 IF E K DISK FLM420AP O E PRINTER E*=============================================================== E* I*=============================================================== I* C*=============================================================== C* 1.前処理 C READ M420R 99 C* 2.本処理 C *IN99 DOWEQ*OFF C* C MOVELTKTKNO P@TKNO 得意先Y C MOVELTKNMKJ P@NMKJ 得意先名 C MOVELTKNMKN P@NMKN 得意先カナ C MOVELTKTEL P@TEL 電話番号 C TKUR\ DIV 1000 P@UR\ 売上実績 C* C WRITEDTL01 C READ M420R 99 C ENDDO C* 3.後処理 C SETON LR C RETRN
各種よみとりモード
RPGにはCOBOLにはない読取モードがあります。
命令 読取モード READ 通常のリード READE 指定されたキーを持つもののみ順次読取。 PEADP 通常のリードの逆順の順次読取。 REDPE 指定されたキーをもつもののみの逆順の順次読取。 CHAIN 指定されたキーを持つレコード1件だけ読取。
前ページ 次ページ 目次へ
(C)COPYRIGHT ISHIOKA KATSUHIDE 2000