外部記述データ構造の使用

CVTRPGSRC コマンドで EXPCPY(*YES) オプションを指定しても、手操作で修正 しなければならないことがある問題が、2 つあります。

これらの問題は、外部記述データ構造の使用に関係しています。

これらの問題はコンパイル時エラーを生じるので、ILE RPG コンパイラー・リストや「WebSphere Development Studio: ILE RPG 言語解説書」の 情報を使ってそれらを訂正することができます。

配列と外部記述 DS サブフィールドの組み合わせ

前に述べたように、RPG IV では、独立型配列とデータ構造サブフィールドを同 じ名前で定義することはできません。 一般に、変換援助プログラムはこの 2 つの定義を組み合わせます。 しかし、サブフィールドが外部記述データ構造にある場合には、この組み合わせは 処理されず、変換後のソース・メンバーを手操作で訂正する必要があります。

例えば、図 227 のフィールド ARRAY は図 228 に 2 回組み込まれます。 すなわち、独立型配列として 1 回組み込まれ、外部記述データ構造 EXTREC としてもう 1 回組み込まれます。 変換時に、生成される RPG IV ソースが図 229 に示されています。ARRAY が 2 回定義されているので、 このコーディングはコンパイルされません。 この問題を訂正するためには、図 230 に示されているように、 独立型配列を削除して、キーワードをもつサブフィールドをデータ構造 DSONE に追加してください。

図 227. 外部データ構造の DDS
     A          R RECORD
     A            CHARACTER     10
     A            ARRAY         10
図 228. 配列付きの外部データ構造を 使う RPG III ソース
     E                    ARRAY      10  1
     IDSONE     E DSEXTREC
     C           CHAR      DSPLY
     C                     SETON                     LR
図 229. 配列に 2 つの定義を 持つ RPG IV ソース
     D ARRAY           S              1    DIM(10)
     D DSONE         E DS                  EXTNAME(EXTREC)
     C     CHAR          DSPLY
     C                   SETON                     LR
図 230. 配列に単一の定義を持つ 訂正済みの RPG IV ソース
     D DSONE         E DS                  EXTNAME(EXTREC)
     D  ARRAY        E                     DIM(10)
     C     CHAR          DSPLY
     C                   SETON                     LR

外部記述 DS サブフィールドの名前変更と初期化

RPG III の場合には、外部記述データ構造のフィールドの名前変更と初期化 の両方とも行う時には、図 231 のフィールド CHAR に示さ れているように、2 つのソース行を使用しなければなりません。図 232 に示されているように、変換後のソースにも 2 つの ソース行が入っています。フィールドの 2 つのソース行をこれに使用すると、 フィールド CHAR が 2 回定義されているので、コンパイル時エラーが起こりま す。このコーディングを訂正するためには、図 233 に示されてい るように、フィールド CHAR のキーワードを組み合わせて単一行にしなければ なりません。ここでは、キー・フィールド INZ と EXTFLD が組み合わされたの で、フィールド CHAR が 1 つだけ示されています。

図 231. 名前変更され初期化された外部サブフィールドを 持つ RPG III ソース
     IDSONE     E DSEXTREC
     I              CHARACTER                       CHAR
     I I            'XYZ'                           CHAR
     C           CHAR      DSPLY
     C                     SETON                     LR
図 232. 名前変更されたサブフィールドに 2 つの定義を 持つ RPG IV ソース
     D DSONE         E DS                  EXTNAME(EXTREC)
     D  CHAR         E                     EXTFLD(CHARACTER)
     D  CHAR         E                     INZ('XYZ')
     C     CHAR          DSPLY
     C                   SETON                                       LR
図 233. 単一の定義を持つ訂正済みの RPG IV ソース
     D DSONE         E DS                  EXTNAME(EXTREC)
     D  CHAR         E                     EXTFLD(CHARACTER) INZ('XYZ')
     C     CHAR          DSPLY
     C                   SETON                                       LR