R P G | 一 般 |
ここではRPG-III(RPG/400)について説明します。RPG−IV(ILE−RPG)は別のページで紹介します。
RPGの特長
RPGは固定カラムにコーディングします。ここが根本的にCOBOLやPL/Iと異なる処です。
昔はこれがネックになって、コーディングが結構やりにくかったのですが、現在は、
ソース入力ユーティリティ(SEU)の機能が向上し、この問題点が解決されています。
RPG-IIIの構成
RPG-IIIは次のような仕様書から構成されます。( )内は第6カラム目に記述する仕様書コードです。
ただし、必要ない仕様書は省略できます。例えば、演算仕様書だけからなるようなプログラムも作成できます。
プログラムの並び順は、下の順です。
仕様書のタイプ コード 役 目 制御仕様書 H 日付の様式、2バイト文字使用の記述 ファイル仕様書 F ファイルについての記述 補足仕様書 E 配列に関する記述 補足仕様書 L 印刷出力ファイルに関する記述 入力仕様書 I データ構造に関する記述 演算仕様書 C 演算に関する記述 出力仕様書 O 出力の様式に関する記述
略して、F仕様書、C仕様書、あるいは「F仕」、「C仕」のように
呼ぶこともあります。ここではF仕様書、C仕様書のように使うことにします。
COBOLとの対応
COBOLとの対応は概略次のようになります。
IDENTIFICATION DIVISION. H仕様書 ENVIRONMENT DIVISION. F仕様書 DATA DIVISION. E、I、C仕様書の一部、O仕様書 PROCEDURE DIVISION C仕様書
簡単なRPGプログラム
以下に簡単なRPGプログラムを示します。
とりあえず、どんなものか見て下さい。
このプログラムはM420という得意先マスターを読み、その一覧表を印刷しています。
....+....1....+....2....+....3....+....4....+....5....+....6....+....7.
H*=============================================================== H* ID : LM420 H* NAME : 得意先一覧表印刷 H* FUNC : 得意先マスターファイルについて、キー順に順次よみ、 H* 同一覧表を印刷する。 H* H*=============================================================== H Y/ 1 F*=============================================================== FM420 IF E K DISK F* FLM420AP O E PRINTER E*=============================================================== E* E仕様書 E* なし 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* C READ M420R 99 C ENDDO C* 3.後処理 C SETON LR C RETRN
RPGで使用できる文字
COBOLで使用できる文字は、一応すべて使用できると思って下さい。
さらに加えて、#,¥,@も使用できます。
各仕様書共通の一般形
各仕様書に共通ののカラムの一般形は次のとおりです。
カラム 内容 1〜5桁 パンチカード時代にはシーケンシャルナンバーとして使用されていました。
現在はほとんど使用されていません。更新記録などに使われることがあります。6桁 仕様書コード(H,F,E,I,C,O)を入れます。 7桁 その行全体を注釈とする場合、*を指定ます。 7〜72桁 各仕様書の記述を行います。仕様書によって様式が異なります。 73桁〜 注釈などとして使います。
RPGで使用できる変数
COBOLでは31桁までですが、RPG-IIIでは英字で始まる、英数字の6桁までです。
例:正しい例
訂正:アンダーバーが使えるのはILE−RPGでした。
W@YMD J K A#¥@ #¥@も使えます C80 ABC_DE_(アンダーバーもつかえます)
誤りの例
A123456 桁数が多い ABC−X −(ハイフン)は使用できない。 ABC.X .(ピリオド)は使用できない。 2ABC 数字で始まるのは不可。
ネーミングの工夫
RPGでは変数の桁数が少ないことで、ネーミングで困ることがあります。
そこで、一般によく使われるのが、大分類2桁と詳細4桁でネーミングをする方法です。
大分類2桁は、定義する場所(即ち出生地)を利用するのが便利です。
例えば得意先マスターの更新日付の場合、
TK+UPDT で、 TKUPDT
のようにします。
プログラムの中で定義する場合はWK、あるいはW@などを使い、
WKUPDT,W@UPDT
のようにします。それでも重複するような場合は、
W1NAME,W2NAME
のように2桁目に数字を使用すると便利です。
ただし、添字は後述する理由により、1桁あるいは2桁で使用するのが便利です。
配列の数の場合は、Nと配列の頭文字で、配列の添え字の場合はXと配列の頭文字で合成した
変数を専用に使用するなどの決め事をしておくと開発やデバッグがらくになります。
例:
配列名 配列の数 要素の添え字 ABC NA XA TAX NT XT YMD NY XY
特殊な機能を持つ用語/予約語
つぎのようなものがあります。
RPG COBOL 意味 *ON B’1’ ’1’ *OFF B’0’ ’0’ *BLANK SPACE ブランク文字、16進の40 *ZERO ZERO 零 *LOVAL LOW−VALUE システムで一番照合順位の低い値 *HIVAL HIGH−VALUE システムで一番照合順位お高い値 *ALL ’A’ ALL ’A’ 全て’A’ *INnn 該当なし 標識のnn番。nnは01〜99 *ENTRY 該当なし 入り口点 *LIKE LIKE 属性の継承
以下工事中。
*** 次ページ 目次へ
(C)COPYRIGHT ISHIOKA KATSUHIDE 2000-2003