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手順)を指定しています。
ファイルの外部記述情報を使用を指定しています。
レコードの位置の特定をファイルのキーによることを指定します。
LM420AP 印刷ファイルの名前です。ここではM420の内容を
リスティングするということで、LをつけてLM420、
さらにバリエーションのA、最後のPは印刷ファイルの
つもりで、Pとしています。
出力専用ということです。
プログラムでファイルの外部記述情報を、使用することを指定しています。
PRINTER 印刷装置を示します。

COBOLとの差

RPGではファイル名は外部の実体名を使用します。
プログラム内で使用するファイル名と、外部の実体名が異なる場合は、CLと呼ばれる制御言語の
OVRDBFコマンドで結びつけ(一時変更)を行います。

RPGでは原則として、ファイルはプログラム開始時に自動的にOPENされます。
RPGでOPEN命令はありますが、COBOLのように明示的にOPENすることはほとんどありません。


外部記述

AS/400では、ファイルはデータベースファイルとして、かなりの情報を持って定義されます。
(レコード様式もそのひとつ)
プログラムでは「その情報を利用する」とだけ定義し、レコードの様式などをプログラム内部で
改めて定義するようなことは極力さけます。
例えば、上の例のファイル,M420は次のような様式で定義されている想定です。
外部情報を利用すれば、COBOLのようにPICTURE定義は必要ありません。
(プログラムで定義のし直しもできます)

M420のレコードレイアウト
削除フラグ
得意先Y
得意先名 42 (2バイトコード文字混在可)
得意先カナ 20
電話番号 12
業種コード
フラグ
売上実績 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