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

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

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

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