Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 コンパイラーおよびランタイム 移行ガイド


UNSTRING OPERAND の評価に対する修正処置:

変更が必要なそれぞれの場合についての詳しい説明を、メッセージ番号順に以下に記載し、それと共に、依存関係および提案される変更を示す例を記載します。例には、プログラムの重要な部分だけを示しています。
IGYPS2222-W
このメッセージは、UNSTRING ステートメントの「受け取り側」ID の 1 つが可変長グループ項目 を参照していて、この項目がそれ自身の ODO オブジェクトを含んでいる場合に出されます。すべての UNSTRING ステートメントに適用される構文規則および制約事項により、この状態 は、id-2、 id-3、id-4、id-5、id-7、および id-8 (または、これらの繰り返し) に対してのみ発生する可能性があります。
以下に例を示します。
01 VLG-1.
 02 VLG-1-ODOOBJ PIC 9 VALUE IS 5.
 02 VLG-1-GR.
  03 VLG-1-ODO PIC X OCCURS 1 TO 9 TIMES
                     DEPENDING ON VLG-1-ODOOBJ.
77 S-1 PIC X(20) VALUE IS ALL "123456789".

   UNSTRING S-1
            INTO VLG-1
            END-UNSTRING
IGYPS2222-W
**MIGR** 「NOCMPR2」コンパイラー・オプションのもとでは、受け取り側「vlg-1」の最大長が使用されます。
注: Enterprise COBOL では、vlg-1 の最大長を使用して、送り出し項目 s-1 から 抽出されたデータの量と受け取り区域 vlg-1 の長さの両方が決定されます。
メッセージ 2222 でどの ID にフラグが立てられたかに関係なく、以下の ように、ID を参照変更バージョンで置き換える必要があります。
UNSTRING S-1
         INTO VLG-1(1:LENGTH OF VLG-1)
         END-UNSTRING

この形式では、UNSTRING ステートメントの実行の開始時での vlg-1 の実際の長さが必ず使用されます。

この修正は、UNSTRING ステートメントにオプショナルの 句 (DELIMITED BY、WITH POINTER、ON OVERFLOW) があってもその影響を 受けず、UNSTRING ステートメント内のフラグが立てられたすべての ID に同じように適用されます。

IGYPA3211-W
このメッセージは、UNSTRING ステートメント内の「DELIMITED BY」ID の 1 つに添え字が指定されているか、可変長グループ項目を参照しているか、位置可変の項目を参照している場合に出されます。

この変更によって影響を受ける UNSTRING ステートメントの場合、フラグが立てられた DELIMITED BY オペランドは、INTO の受信側の 1 つに依存していなければなりません。

以下に例を示します。
01 DEL
 02 OCC-DEL-1 PIC X OCCURS 9 TIMES.
 02 VLEN-DEL-2-ODOOBJ PIC 9 VALUE IS 5.
 02 VLEN-DEL-2.
  03 VLEN-DEL-2-ODO PIC X OCCURS 1 TO 9 TIMES
                          DEPENDING ON VLEN-DEL-2-ODOOBJ.

77 S-1 PIC X(20) VALUE IS ALL "123456789".
77 R-1 PIC X(20) VALUE IS SPACES.
77 R-2 PIC X(20) VALUE IS SPACES.
77 SUB-5 PIC 99 VALUE IS 5.

   UNSTRING S-1
            DELIMITED BY OCC-DEL-1(SUB-5) OR VLEN-DEL-2,
            INTO R-1 DELIMITER IN OCC-DEL-1(SUB-5 + 1)
                     COUNT IN VLEN-DEL-2-ODOOBJ,
                 R-2,
            END-UNSTRING
IGYPA3211-W
**MIGR** この「UNSTRING」ステートメントでは、「DELIMITED BY」オペランドの添え字または「OCCURS DEPENDING ON」の計算は、「NOCMPR2」コンパイラー・オプションのもとでは 1 回だけ行われます。

メッセージ 3211 でフラグが立てられた項目は、修正する必要はありません。

IGYPA3212-W
このメッセージは、UNSTRING ステートメント内の INTO ID の 1 つに添え字が指定されているか、可変長グループ項目を参照しているか、位置可変の項目を参照している場合に出されます。

この変更の影響を受ける UNSTRING ステートメントの場合、フラグが立てられた INTO ID は、その前の INTO 句内の受信側に依存していなければなりません。

以下に例を示します。
01 REC.
 02 R-1 PIC X(20) VALUE IS SPACES.
 02 R-2-SUB PIC 9 VALUE IS 9.
 02 OCC-R-2-GR.
  03 OCC-R-2 PIC X OCCURS 9 TIMES.
 02 R-3-ODOOBJ PIC 9 VALUE IS 9.
 02 ODO-R-3.
  03 FILLER PIC X OCCURS 1 TO 9 TIMES
                  DEPENDING ON R-3-ODOOBJ.

77 S-3 PIC X(20) VALUE IS "12 345  6789   .....".

   UNSTRING S-3
            DELIMITED BY ALL SPACES,
            INTO R-1 COUNT IN R-2-SUB,
                 OCC-R-2(R-2-SUB) COUNT IN R-3-ODOOBJ,
                 ODO-R-3,
            END-UNSTRING
IGYPA3212-W
**MIGR** この「UNSTRING」ステートメントでは、「INTO」オペランドの添え字または「OCCURS DEPENDING ON」の計算は、「NOCMPR2」コンパイラー・オプションのもとでは 1 回だけ行われます。

この UNSTRING ステートメントは、CMPR2 と NOCMPR2 とでは異なる結果を生成します。2 番目 の INTO 受信側の添え字が最初の INTO 句の COUNT IN 受信側によって変更されるため です。さらに、3 番目の INTO 受信側の長さは、2 番目の INTO 句の COUNT IN 受信側によって変 更されます。

CMPR2 のもとでは、COUNT IN の ID に移される値が後続の INTO 句に使用されます。NOCMPR2 のもとでは、UNSTRING ステートメントの実行の開始時に有効な値が、すべての INTO 句に使用さ れます。

メッセージ 3212 でフラグが立てられた UNSTRING ステートメントは、複数の UNSTRING ステートメントに分割しなけ ればなりません。依存する INTO 句ごとに別々の UNSTRING ステートメントを使用してください。ただし、以下のことに注意してください。
  • 元の UNSTRING ステートメントに WITH POINTER 句が指定されている場合は、変更後の UNSTRING ステートメントのすべてにこの句を含めなければなりません。元の UNSTRING ステートメントに WITH POINTER 句が指定されていない 場合は、変更後の UNSTRING ステートメントのすべてにこの句を追加し、POINTER の ID を 1 に初期設定しなけ ればなりません。
  • 元の UNSTRING ステートメントに TALLYING IN 句が指定されている場合は、変更後の UNSTRING ステートメント のすべてにこの句を含めなければなりません。
  • 元の UNSTRING ステートメントに ON OVERFLOW 句または NOT ON OVERFLOW 句が指定されている場合 は、変更後の最後の UNSTRING ステートメントにだけこの句を含めなければなりません。
上記の例にこれらの変更を行うと、以下のようになります。
77 PTR PIC 99.

   MOVE 1 TO PTR
   UNSTRING S-3
            DELIMITED BY ALL SPACES,
            INTO R-1 COUNT IN R-2-SUB,
            WITH POINTER PTR,
            END-UNSTRING
   UNSTRING S-3
            DELIMITED BY ALL SPACES,
            INTO OCC-R-2(R-2-SUB) COUNT IN R-3-ODOOBJ,
            WITH POINTER PTR,
            END-UNSTRING
   UNSTRING S-3
            DELIMITED BY ALL SPACES,
            INTO ODO-R-3,
            WITH POINTER PTR,
            END-UNSTRING
IGYPA3213-W
このメッセージは、UNSTRING ステートメント内の DELIMITER IN の ID の 1 つに添え字が指定されているか、可変長グループ項目を参照しているか、位置可変の項目を参照している場合に出されます。

この変更の影響を受ける UNSTRING ステートメントの場合、フラグが立てられた DELIMITER IN の ID は、その前の INTO 句内の受信側に依存していなければなりません。

注: 同じ INTO 句にある複数の ID の間の依存関係は、UNSTRING ステートメントの結果に影響を 与えません。CMPR2 での動作では、これらの依存関係は次の INTO 句まで有効になりません。
以下に例を示します。
01 DEL.
 02 D-2-SUB PIC 9 VALUE IS 9.
 02 OCC-D-2-GR.
  03 OCC-D-2 PIC X OCCURS 9 TIMES.
 02 D-3-ODOOBJ PIC 9 VALUE IS 9.
 02 ODO-D-3.
  03 FILLER PIC X OCCURS 1 TO 9 TIMES
                 DEPENDING ON D-3-ODOOBJ.

77 S-4 PIC X(20) VALUE IS "12 345  6789   .....".
77 R-1 PIC X(20) VALUE IS SPACES.
77 R-2 PIC X(20) VALUE IS SPACES.
77 R-3 PIC X(20) VALUE IS SPACES.

   UNSTRING S-4
            DELIMITED BY ALL SPACES,
            INTO R-1 COUNT IN D-2-SUB,
                 R-2 DELIMITER IN OCC-D-2(D-2-SUB)
                     COUNT IN D-3-ODOOBJ,
                 R-3 DELIMITER IN ODO-D-3,
            END-UNSTRING
IGYPA3213-W
**MIGR** この「UNSTRING」ステートメントでは、「DELIMITER IN」オペランドの添え字または「OCCURS DEPENDING ON」の計算は、「NOCMPR2」コンパイラー・オプションのもとでは 1 回だけ行われます。

この UNSTRING ステートメントは、CMPR2 と NOCMPR2 とでは異なる結果を生成します。2 番目 の INTO 句の DELIMITER IN の ID の添え字が最初の INTO 句の COUNT IN 受信側に よって変更されるためです。さらに、3 番目の INTO 句の DELIMITER IN の ID の長さは、2 番目の INTO 句 の COUNT IN 受信側によって変更されます。

CMPR2 の動作では、COUNT IN の ID に移される値が後続の INTO 句に使用されます。NOCMPR2 のもとでは、UNSTRING ステートメントの実行の開始時に有効な値が、すべての INTO 句に使用さ れます。

メッセージ 3213 でフラグが立てられた UNSTRING ステートメントは、複数の UNSTRING ステートメントに分割しな ければなりません。依存する INTO 句ごとに別々の UNSTRING ステートメントを使用してください。

上記の例にこれらの変更を行うと、以下のようになります。
77 PTR PIC 99.
   MOVE 1 TO PTR
   UNSTRING S-4
            DELIMITED BY ALL SPACES,
            INTO R-1 COUNT IN D-2-SUB,
            WITH POINTER PTR,
            END-UNSTRING
   UNSTRING S-4
            DELIMITED BY ALL SPACES,
            INTO R-2 DELIMITER IN OCC-D-2(D-2-SUB)
                     COUNT IN D-3-ODOOBJ,
            WITH POINTER PTR,
            END-UNSTRING
   UNSTRING S-4
            DELIMITED BY ALL SPACES,
            INTO R-3 DELIMITER IN ODO-D-3,
            WITH POINTER PTR,
            END-UNSTRING
IGYPA3214-W
このメッセージは、UNSTRING ステートメント内の COUNT IN の ID の 1 つに添え字が指定されているか、位置可変の項目を参照している場合に出されます。

この変更の影響を受ける UNSTRING ステートメントの場合、フラグが立てられた COUNT IN の ID は、その前の INTO 句内の受信側に依存していなければなりません。

注: 同じ INTO 句にある複数の ID の間の依存関係は、UNSTRING ステートメントの結果に影響を与えま せん。CMPR2 での動作では、これらの依存関係は次の INTO 句まで有効になりません。
以下に例を示します。
01 C-2.
 02 C-2-SUB PIC 9 VALUE IS 9.
 02 OCC-C-2-GR.
  03 OCC-C-2 PIC 9 OCCURS 9 TIMES.

77 S-5 PIC X(20) VALUE IS "12 345  6789........".
77 R-1 PIC X(20) VALUE IS SPACES.
77 R-2 PIC X(20) VALUE IS SPACES.

   UNSTRING S-5
            DELIMITED BY ALL SPACES,
            INTO R-1 COUNT IN C-2-SUB,
                 R-2 COUNT IN OCC-C-2(C-2-SUB),
            END-UNSTRING
IGYPA3214-W
**MIGR** この「UNSTRING」ステートメントでは、「COUNT IN」オペランドの添え字または「OCCURS DEPENDING ON」の計算は、「NOCMPR2」コンパイラー・オプションのもとでは 1 回だけ行われます。

この UNSTRING ステートメントは、CMPR2 と NOCMPR2 とでは異なる結果を生成します。2 番目 の INTO 句の COUNT IN の ID の添え字が最初の INTO 句の COUNT IN 受信側に よって変更されるためです。

CMPR2 での動作では、最初の INTO 句の COUNT IN の ID に移される値 が、2 番目の INTO 句に使用されます。NOCMPR2 のもとでは、UNSTRING ステートメントの実行の開始時に有効な値が使用されます。

メッセージ 3214 でフラグが立てられた UNSTRING ステートメントは、複数の UNSTRING ステートメントに分割しな ければなりません。依存する INTO 句ごとに別々の UNSTRING ステートメントを使用してください。

上記の例にこれらの変更を行うと、以下のようになります。
77 PTR PIC 99.

   MOVE 1 TO PTR
   UNSTRING S-5
            DELIMITED BY ALL SPACES,
            INTO R-1 COUNT IN C-2-SUB,
            WITH POINTER PTR,
            END-UNSTRING
   UNSTRING S-5
            DELIMITED BY ALL SPACES,
            INTO R-2 COUNT IN OCC-C-2(C-2-SUB),
            WITH POINTER PTR,
            END-UNSTRING

ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)