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


AMODE および RMODE の考慮事項

すべての OS/VS COBOL プログラムは AMODE 24 および RMODE 24 です。Enterprise COBOL プログラムは常に AMODE ANY であり、RMODE 24 または RMODE ANY のいず れかです。WORKING-STORAGE データ項目は、DATA、 RENT、および RMODE コンパイラー・オプションに基づいて、16MB 境界より上または下に置かれます。

OS/VS COBOL プログラムは、AMODE 問題なしで CALL ステートメントを使用して Enterprise COBOL プログラムを呼び出すことができます。これは、両方のプログラムが 16MB 境界より下のデータにアクセスできるためです。Enterprise COBOL プログラムが CALL ステートメントを使用して OS/VS COBOL プログラムを呼び出すときは、データまたはパラメーター・リストが 16MB 境界より上にあると、アドレッシング例外が起こる可能性があります。

アドレッシング例外を避けるためには、RENT プログラムの場合は DATA(24)、 NORENT プログラムの場合は RMODE(24) または RMODE(AUTO) を指定してコンパイルすることによって、すべてのデータおよびパラメーター・リストを 16MB 境界より下に置くようにしてください。
注: バージョン 2 リリース 9 以前のリリースの言語環境プログラムでは、DATA(31) に対して要求を出すと、言語環境プログラムが 16MB 境界より下のストレージを獲得することにより、正常にコンパイルされなかったプログラムがアドレッシング例外を出さずにパラメーターを OS/VS COBOL プログラムに渡す可能性がありました。言語環境プログラム バージョン 2 リリース 9 以降では、このように DATA(31) の使用法を誤ると予期アドレッシング例外が発行されます。

図 1 に、コンパイラー・オプションとコンパイラーの各種の 組み合わせの結果を示します。すべての CALL ステートメントは動的であり、矢印によって表されています。実線は有効な CALL ステートメントを表し、点線は無効な呼び出しを表しています。

P1 および P5 は OS/VS COBOL プログラムであるため、WORKING-STORAGE データ項目はオブ ジェクト・モジュールに組み込まれ、16MB 境界より下になければなりません。RENT オプションを指定してコンパイルされた Enterprise COBOL プログラムの場合、WORKING-STORAGE データ項目はオブジェクト・モジュールから分離され、それらの位置は DATA コンパイラー・オプションによって制御されます (プログラム P2 および P3 と同様)。NORENT を指定してコンパイルされたプログラムの場合、WORKING-STORAGE データ項目はオ ブジェクト・モジュールに組み込まれるため、それらの位置は RMODE オプションによって異 なります (プログラム P4 と同様)。

これらの呼び出しは、P5 を呼び出す P3 を除き、すべて正しく機能します。P3 は RENT および DATA(31) を指定してコンパイルされたため、P3 の WORKING-STORAGE およびパラメーター・リストは 16MB 境界より上に置かれます。これは、P3 が P2 から受け取ったパラメーターを渡す場合でも、P5 はパラメーター・リスト にアドレッシングできないことを意味し、このため CALL は失敗します。P1 および P3 の WORKING-STORAGE SECTION 内のデータ項目のように、パラメーター自体 が 16MB 境界より上にある場合も、CALL は失敗します。

注: AMODE 31 プログラムから OS/VS COBOL プログラムへの静的 CALL ステートメントは、必ず失敗します。
図 1. OS/VS COBOL プログラムと Enterprise COBOL プログラム間の有効な呼び出しと無効な呼び出し
igym1018 図の説明の開始。この図は、周りのテキストで説明されています。図の説明の終わり。

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

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