非 CICS 環境では、標準の OS リンケージ規約が使用されます。 最大で 30 のパラメーターを call ステートメントに渡すことができます。 実行中の呼び出し先プログラムは、プログラムの終了時に呼び出し側プログラムに戻ります。
call ステートメント用に生成されるリンケージのタイプを指定するには、リンケージ・オプション・パーツを使用します。 非 CICS 環境の場合、call ステートメントが DYNAMIC または STATIC COBOL 呼び出しのいずれかとして生成され、パラメーターは標準 COBOL パラメーター・リスト (OSLINK) を使用して、すべて参照によって渡されるように指定できます。
EGL call ステートメントは、標準の COBOL CALL として生成されます。 EGL call ステートメントのパラメーターは、 COBOL CALL のパラメーターです。 すべてのパラメーターは、内容ではなく、参照によって渡されます。 COBOL CALL が動的呼び出しであるか静的呼び出しであるかを指定するには、リンケージ・オプションを使用します。
コンパイル済みの COBOL CALL は、標準のリンケージ規約を使用してパラメーターを渡します。 レジスター 1 は、パラメーター・アドレスのリストを指しています。 最終パラメーター・アドレスの上位バイトは、下の図に示されているように、1 に設定されます。

パラメーターとして dliLib.psbData または PCBRecord を渡す場合は、特別な考慮事項が適用されます。 詳しくは、「call または transfer ステートメントにおける特殊なパラメーターの参照情報」を参照してください。
IMS/VS、BMP、および z/OS® CICS® 用に生成されたプログラムでは、z/OS バッチ環境用に生成されたサブプログラムを呼び出すことができます。z/OS バッチ・プログラムが SQL I/O、ファイル I/O、またはバッチ環境固有の呼び出しを実行しないことを確認する必要があります。これらは元の環境から許可されないためです。 例えば、CICS はすべてのファイル I/O アクセスを所有しているため、バッチ・タイプのファイル・アクセスの実行を許可しません。z/OS バッチ用に生成され、その他の環境で実行するロジックによって呼び出されるプログラムは、通常、計算やテーブル・ルックアップなどの操作に制限されます。
非 EGL プログラムの呼び出しは、EGL プログラムの呼び出しと同じ方法で生成されます。 PL/I で作成されたプログラムの呼び出しは、静的呼び出しで実行される必要があります。 非 EGL プログラムが COBOL で作成されていない場合は、ご使用のリリースの COBOL のアプリケーション・プログラミング・ガイドに記載されている別の言語へのインターフェースに関する規則に従ってください。
非 EGL プログラムは、標準の COBOL CALL ステートメントを使用して EGL プログラムを呼び出します。 すべてのパラメーターは、内容ではなく、参照によって渡されます。 PL/I で作成されたプログラムからの呼び出しは、静的呼び出しで実行される必要があります。 非 EGL プログラムが COBOL で作成されていない場合は、ご使用のリリースの COBOL のアプリケーション・プログラミング・ガイドに記載されている別の言語へのインターフェースに関する規則に従ってください。
実行単位内で呼び出される最初のプログラムが非 EGL プログラムであり、そのプログラムが EGL プログラムを繰り返し呼び出す場合、Rational® COBOL Runtime for zSeries は、それぞれの呼び出しで初期化および終了の関数を実行します。 呼び出しの数が多い場合は、これらの呼び出しのオーバーヘッドが非常に大きくなる可能性があります。 このオーバーヘッドを回避し、初期化および終了の実行を 1 回にするため、EGL では各環境ごとにラッパー・プログラムを用意しています。 該当するラッパー・プログラムをご使用の EGL プログラムでリンク・エディットする必要があります。 これを自動的に実行するには、ご使用の EGL プログラムと同じ名前のリンク・エディット・パーツを作成します。 ラッパー・プログラム以外のプログラムで EGL プログラムをリンク・エディットする必要がない場合は、以下のようにリンク・エディット・コマンドを使用して、名前 YOURPROG を当該プログラム名に置き換えます。 SELALMD は、ランタイム・サービスのロード・ライブラリーを表しています。
CHANGE NONVGRTN(YOURPROG)
CHANGE ELAAPPL(ELAWBAT)
INCLUDE SELALMD(ELAWBAT)
ENTRY ELARMAIN
NAME YOURPROG(R)
IMS™ BMP の制御ステートメント:
CHANGE NONVGRTN(YOURPROG)
CHANGE ELAAPPL(ELAWBMP)
INCLUDE SELALMD(ELAWBMP)
ENTRY ELARMAIN
NAME YOURPROG(R)
IMS/VS の制御ステートメント:
CHANGE NONVGRTN(YOURPROG)
CHANGE ELAAPPL(ELAWIMS)
INCLUDE SELALMD(ELAWIMS)
ENTRY ELARMAIN
NAME YOURPROG(R)
プログラムを他のモジュール (例えば、PL/I プログラムなど) にリンクする必要がある場合は、『リンク・エディット・パーツの例』を参照してください。CHANGE NONVGRTN(YOURPROG)
CHANGE ELAAPPL(ELAWBAT)
INCLUDE SELALMD(ELAWBAT)
INCLUDE SELALMD(ELARLEMN)
ENTRY ELARLEMN
NAME YOURPROG(R)
z/OS バッチ・プログラムは、外部 CICS インターフェース (EXCI) を使用して、CICS 領域でプログラムを呼び出すことができます。呼び出し先プログラムは、EGL によって生成されたもの、または別の方法で作成されたものです。
call ステートメントを処理するとき、EGL は、EXCI 経由で呼び出すための必要な COBOL コードを生成します。これらのリンケージ・オプションの詳細については、『CICS 環境でのプログラムの呼び出し』を参照してください。
call "calledExci"(d, j);