すべての 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 境界より上にあると、アドレッシング例外が起こる可能性があります。
図 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 は失敗します。