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


プログラムの呼び出し - AMODE 要件

VS COBOL II の場合、アセンブラー・プログラムは、AMODE 指定に関係なく COBOL プログラ ムを呼び出すことができました。以下に例を示します。
図 1. プログラムを呼び出す場合の AMODE の影響
igym1019 図の説明の開始。この図は、AMODE 指定に関係なく COBOL プログラムを呼び出す、VS COBOL II でのアセンブラー・プログラムの例を示しています。図の説明の終わり。

上の図では、以下のことが行われます。

  1. プログラム COBOLAAssemblerA を動的に呼び出しま す (アセンブラーは AMODE 31 です)。
  2. AssemblerACOBOLB をロードします。COBOLB は RENT、DATA(24)、および AMODE(24) です。
  3. AssemblerACOBOLB への BALR を行います (COBOLB は AMODE 31 で入られました)。
  4. COBOLBAssemblerA に戻ります。
  5. AssemblerAAssemblerB を呼び出します。
  6. AssemblerBCOBOLB への BASSM を行います (COBOLB は AMODE 24 で入られました)。
  7. COBOLB は、AMODE 31 で入られることを予期しているため、異常終了します。

言語環境プログラムの場合、VS COBOL II、IBM COBOL、または Enterprise COBOL でコンパイルされ、アセンブラー・プログラムによって呼び出される COBOL プログラムは、それが呼び出されるたびに同じ AMODE で入れられる必要があります。

上の例で異常終了を避けるためには、

AMODE 31 であるアセンブラー・プログラムが AMODE 24 である COBOL プログラム を呼び出す場合、COBOL がアセンブラー・プログラムに戻るためには、アセンブラー・プロ グラムは RMODE 24 であることも必要です。この場合、アセンブラー・プログラムが AMODE ANY であれば、COBOL プログラムからの 戻り時に、無効アドレスへの分岐の結果として異常終了が発生する可能性があります。その理由は、R14 にはアセンブラー・プログラムの保存域からの 31 ビット・アドレスが 入りますが、COBOL は AMODE 24 でアセンブラー・プログラムに戻るためです。


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

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