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


SEARCH ALL ステートメントを含むプログラムのアップグレード

このセクションでは、SEARCH ALL ステートメントを持ち、以下のいずれかのコンパイラーでコンパイルされたプログラムに対して必要な処置について説明します。 このような処置が必要になるのは、上記にリストされたコンパイラーと以下のコンパイラーとの間での SEARCH ALL ステートメントの動作の変更のためです。

これらの 2 つのコンパイラーは、SEARCH ALL ステートメントに対する動作が同じなので、このセクションではこれらのより新しいコンパイラーを共に Enterprise COBOL V4R1 と呼びます。

Enterprise COBOL V4R1 では、SEARCH ALL ステートメントのインプリメンテーションでのエラーが訂正されています。以前のリリースの COBOL の SEARCH ALL ステートメントには、キー比較論理にエラーがありました。このエラーが、意図していたものとは異なる結果をまねきました。特に、比較では IF ステートメントまたは順次 SEARCH ステートメントと同じ結果が作成されませんでした。

長さの不一致の問題: 検索引数がテーブル・キーより長くなる

SEARCH ALL ステートメントの比較では、キーが SEARCH 引数より短いと、英数字キーにはブランクが埋め込まれ、数字キーには先行ゼロが加えられます。ただし、V3R3 とそれ以前のリリースでは場合によっては、SEARCH ALL で引数の余分の文字が無視されました。例えば、「ABCDEF」を含む 01 ARG PIC X(6) の英数字検索引数は、値「ABCD」をともなう 05 MY-KEY PIC X(4) のテーブルまたは配列のキーと、誤って一致してしまいます。「ABCD 」(ブランクあり) を含む検索引数は期待通りに一致となります。

数字の検索引数およびキーの場合にも同様の問題が発生しました。例えば、「123456」を含む01 ARG PIC 9(6) の検索引数は、値「3456」をともなう 05 MY-KEY PIC 9(4) のテーブルまたは配列のキーと、誤って一致してしまいます。003456 を含む検索引数は期待通りに一致となります。

符号の不一致の問題: 符号付き数字引数と符号なし数字キー

第 2 の問題が発生するのは、検索引数が符号付き数字項目で、テーブル・キーが符号なし数字項目の場合です。検索引数のランタイム値が -1234 などの負数である場合、V3R3 と以前のリリースでコンパイルされたプログラムでは、1234 のテーブル・キーが一致となります。こうした比較は、通常の COBOL 比較条件の規則を使用して行われると、-1234 などの負の引数は符号なしのテーブル・キーと一致することはありません。

修正処置:

Enterprise COBOL V4R1 が上記の問題を訂正します。 ただし、以前のリリースでコンパイルされたアプリケーションには、間違った動作に依存するものもあります。これらのアプリケーションを特定し、修正してから、 Enterprise COBOL V4R1 に移行する必要があります。

こうした修正の影響を受けるプログラムおよび SEARCH ALL ステートメントの特定に役立つように、以下のコンパイラーおよびランタイム警告診断が出されます。

バージョン 4 へマイグレーションするには:

アプリケーションを Enterprise COBOL V4R1 に移行するには、以下の一連の手順のいずれかを行います。

影響を受ける SEARCH ALL ステートメントを特定したら、以下の手順でアプリケーション・ロジックを適切に調整します。


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

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