言語環境プログラムの以前のリリースから z/OS 言語環境プログラムへ移行する場合は、COBOL の動的呼び出しルーチン IGZCFCC を RMODE へ変更する必要があります。動的呼び出しをされたアセンブラー・プログラムが 入力された時と異なる AMODE で戻ると、IGZCFCC を RMODE へ変更したことにより、問題が 発生する場合があります。IGZCFCC は COBOL for MVS & VM、リリース 2 以降でコンパイルされた COBOL プログラムにのみ使用されます。 VS COBOL II または OS/VS COBOL コンパイラーでコンパイルされたプログラムには使用されません。
IGZCFCC は、z/OS 言語環境プログラム バージョン 1 リリース 2 で初めて 、RMODE 24 から RMODE 31 へ変更され、ライン上にある IGZCPAC ロード・モジュールに取り込まれました。 AMODE 31 プログラムを動的呼び出しすると、 そのリターン・アドレスは IGZCFCC です。
z/OS バージョン 1 リリース 2 以前の言語環境プログラムでは、AMODE 31 で 入力されたアセンブラー・プログラムは AMODE を 24 に変更し、ラインより下で 読み込まれているので、IGZCFCC へ正常に戻ります。z/OS バージョン 1 リリース 2 以降の言語環境プログラムで IGZCFCC がラインより上にあると、 このようなことは起こりません。アセンブラー・プログラムが AMODE 31 で入力され、 AMODE 24 へ切り替わり、呼び出し元へ戻るための読み込みと分岐を行うと、 31 ビットのリターン・アドレスの高位バイトが切り捨てられ、ABEND0C4、ABEND0C1 などの 不良分岐になります。