この例では、サンプル RPG III ソース・メンバーを RPG IV に変換します。 図 215 は、RPG III バージョンのソースを示しています。
H TSTPGM FFILE1 IF E DISK COMM1 FQSYSPRT O F 132 OF LPRINTER LQSYSPRT 60FL 56OL E ARR1 3 3 1 COMM2 E ARR2 3 3 1 IFORMAT1 I OLDNAME NAME I* DATA STRUCTURE COMMENT IDS1 DS I 1 3 FIELD1 I* NAMED CONSTANT COMMENT I 'XYZ' C CONST1 COMM3 I 4 6 ARR1 C ARR1,3 DSPLY C READ FORMAT1 01 C NAME DSPLY C SETON LR C EXCPTOUTPUT OQSYSPRT E 01 OUTPUT O ARR2,3 10 ** 123 ** 456
このソースを変換するためには、次のように入力してください。
CVTRPGSRC FROMFILE(MYLIB/QRPGSRC) FROMMBR(TEST1) TOFILE(MYLIB/QRPGLESRC) INSRTPL(*YES)
変換後のソース・メンバーを 図 216 に示します。
1 .....H*unctions+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Comments+++++++++ 2 H DFTNAME(TSTPGM) 3 .....F*ilename++IPEASFRlen+LKlen+AIDevice+.Functions++++++++++++++++++++++++++++Comments+++++++++ 4 FFILE1 IF E DISK COMM1 5 FQSYSPRT O F 132 PRINTER OFLIND(*INOF) 6 F FORMLEN(60) 7 F FORMOFL(56) 8 .....D*ame+++++++++++ETDsFrom+++To/L+++IDc.Functions++++++++++++++++++++++++++++Comments+++++++++ 9 D ARR2 S 1 DIM(3) CTDATA PERRCD(3) 10 D* DATA STRUCTURE COMMENT 11 D DS1 DS 12 D FIELD1 1 3 13 D ARR1 4 6 14 D DIM(3) CTDATA PERRCD(3) COMM2 15 D* NAMED CONSTANT COMMENT 16 D CONST1 C CONST('XYZ') COMM3 17 .....I*ilename++SqNORiPos1+NCCPos2+NCCPos3+NCC..................................Comments+++++++++ 18 .....I*.............Ext_field+Fmt+SPFrom+To+++DcField+++++++++L1M1FrP1MnZr......Comments+++++++++ 19 IFORMAT1 20 I OLDNAME NAME 21 .....C*0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....Comments+++++++++ 22 C ARR1(3) DSPLY 23 C READ FORMAT1 01 24 C NAME DSPLY 25 C SETON LR 26 C EXCEPT OUTPUT 27 OQSYSPRT E OUTPUT 01 28 O ARR2(3) 10 29 **CTDATA ARR1 30 123 31 **CTDATA ARR2 32 456
変換後のソースについて、次のことに注意してください。
CVTRPGSRC に INSRTPL(*YES) が指定されていたので、変換後のソースには新 しいタイプ用の仕様書テンプレートが入っています。
この例では、
入力 (I) 仕様書は、現在では、ファイルのレコードおよびフィールドを定義す るためにのみ、使用されています。 19 〜 20 行目を参照してください。
変換後のソースでは、データ構造 DS1 (11 行目) が、FORMAT1 情報 (19 行目) を含む仕様書より前に来るように移動されていることに、注意してください。
変換後のソースでは、CONST1 (16 行目) は、データ構造 DS1 (11 行目) の後に来るように移動されています。
変換後のソースでは、CONST1 および DS1 の上にあったコメントは、それに続く仕様書と一緒に移動されました。
この例では、ARR1 は OPM バージョンで 2 度定義されていますが、 変換後のソースでは単一の定義にマージされています。13 〜 14 行目を参照してください。
RPG III 配列仕様書の組み合わせの結果として、配列定義の順序が変更されることがあります。 順序が変更された配列がコンパイル時配列の場合には、配列データのロードは影響を受けることがあります。 この問題を解決するため RPG IV では、** レコードにはキーワード形式を提供します。** の後には、キーワード FTRANS、ALTSEQ、 または CTDATA の 1 つを入力します。 キーワードが CTDATA の場合には、10 〜 19 桁目に配列またはテーブル名を入力します。
この例では、ARR2 の 2 つの RPG III 仕様書の組み合わせのために、配列 ARR2 は、 配列 ARR1 より先行しています。 変換援助プログラムは、変換後の ** レコードにキーワードおよび配列名を挿入し、 これによりコンパイル時データの正しいロードは保証されます。29 と 31 行目を参照してください。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.