メインプログラムはオプションでパラメーターを呼び出し先パラメーターに渡します。呼び出し先プログラムが渡されたデータを変更すると、呼び出し側が使用できるストレージ領域も変わります。 メインプログラムと呼び出し先プログラムの違いについて詳しくは、『プログラム・パーツ』を参照してください。
呼び出し先プログラムは、EGL で生成されたプログラムであるか、外部定義されていると見なされるかのいずれかです。 プログラムが外部定義されていることを示す方法に関する詳細については、このトピックの『構文』セクションで isExternal プロパティーの説明を参照してください。
call ステートメントで渡す引数の数、型、および順序は、呼び出し先プログラムで予期されるパラメーターの数、型、および順序と一致している必要があります。一回のローカル呼び出しで渡すことができるパラメーターの数に制限はありません。リモート呼び出しの場合、受け渡し可能なパラメーターの数およびサイズに対する制限があります。すべてのリモート呼び出し実装は、少なくとも 30 のパラメーター (結合パラメーター長が 32,000 バイト未満) での受け渡しをサポートします。独自の設計で、30 を超えるパラメーターか、呼び出しごとに 32,000 バイトを超える受け渡しを必要とする場合、すべての必要な実装でテストして、受け渡しに必要なデータ量がサポートされていることを確認します。
サービス呼び出しでの call ステートメントの使用に関する詳細については、『サービス・アクセスのための call ステートメントとコールバック関数のコーディング』を参照してください。
VisualAge® Generator からマイグレーションしたプログラムを呼び出す場合、VisualAge Generator Developer は通常、固定テキスト変数型を使用することを覚えておいてください。 textLiteralDefaultIsString プロパティーを使用するか、リテラルに型を指定することにより、文字リテラルの型を制御できます。textLiteralDefaultIsString プロパティーの詳細については、textLiteralDefaultIsStringを参照してください。リテラルについては、リテラルを参照してください。

callLink 要素の関連属性は、ローカル呼び出しの場合は pgmType で、リモート呼び出しまたは EJB 呼び出しの場合は remotePgmType です。
このプロパティーには、以下の 2 つの値があります。
EGL 生成コードとの間で使用できる有効な呼び出しは、以下の表のとおりです。
| 呼び出し側オブジェクト | 呼び出されるオブジェクト |
|---|---|
| J2EE の外部の Java クラス内 EGL 生成 Java ラッパー | EGL 生成 Java プログラム (J2EE 以外) |
| J2EE アプリケーション・クライアント内 EGL 生成 Java プログラム | |
| EGL 生成 EJB セッション Bean | |
| IMS/VS プログラム (EGL または EGL 以外で生成された) | |
| IMS™ トランザクション | |
| CICS プログラム (EGL または EGL 以外で生成された) | |
| J2EE アプリケーション・クライアント内 EGL 生成 Java ラッパー | EGL 生成 Java プログラム (J2EE 以外) |
| J2EE アプリケーション・クライアント内 EGL 生成 Java プログラム | |
| EGL 生成 EJB セッション Bean | |
| IMS/VS プログラム (EGL または EGL 以外で生成された) | |
| IMS トランザクション | |
| CICS プログラム (EGL または EGL 以外で生成された) | |
| J2EE Web アプリケーション内 EGL 生成 Java ラッパー | EGL 生成 Java プログラム (J2EE 以外) |
| J2EE アプリケーション・クライアント内 EGL 生成 Java プログラム | |
| 同一の J2EE Web アプリケーション内 EGL 生成 Java プログラム | |
| EGL 生成 EJB セッション Bean | |
| IMS/VS プログラム (EGL または EGL 以外で生成された) | |
| IMS トランザクション | |
| CICS プログラム (EGL または EGL 以外で生成された) | |
| J2EE の外部の EGL 生成 Java プログラム | EGL Java プログラム (J2EE 以外) |
| J2EE アプリケーション・クライアント内の EGL Java プログラム | |
| EGL EJB セッション Bean | |
| IBM® i 上の Java プログラム | |
| IBM i 上の COBOL プログラム | |
| C または C++ で作成された非 EGL プログラム | |
| IMS/VS プログラム (EGL または EGL 以外で生成された) | |
| IMS トランザクション | |
| CICS プログラム (EGL または EGL 以外で生成された) | |
| J2EE アプリケーション・クライアント内の EGL Java プログラム | EGL Java プログラム (J2EE 以外) |
| J2EE アプリケーション・クライアント内の EGL Java プログラム | |
| EGL EJB セッション Bean | |
| IBM i 上の Java プログラム | |
| IBM i 上の COBOL プログラム | |
| C または C++ で作成された非 EGL プログラム | |
| IMS/VS プログラム (EGL または EGL 以外で生成された) | |
| IMS トランザクション | |
| CICS プログラム (EGL または EGL 以外で生成された) | |
| J2EE Web アプリケーション内の EGL Java プログラム | EGL Java プログラム (J2EE 以外) |
| J2EE アプリケーション・クライアント内の EGL Java プログラム | |
| 同じ J2EE Web アプリケーション内の EGL Java プログラム | |
| IBM i 上の Java プログラム | |
| IBM i 上の COBOL プログラム | |
| C または C++ で作成された非生成プログラム | |
| CICS プログラム (EGL または EGL 以外で生成された) | |
| EGL EJB セッション Bean | EGL Java プログラム (J2EE 以外) |
| J2EE アプリケーション・クライアント内の EGL Java プログラム | |
| EGL EJB セッション Bean | |
| C または C++ で作成された非生成プログラム | |
| CICS プログラム (EGL または EGL 以外で生成された) | |
| EGL CICS プログラム | CICS プログラム (EGL または EGL 以外で生成された) |
| EGL z/OS バッチ・プログラム | |
| EGL z/OS バッチ・プログラム | 任意の言語 (EGL を含む) で作成されて、z/OS (CICS または IMS の外部) で 実行されるバッチ・プログラム |
| 非 EGL CICS プログラム | CICS COBOL プログラム (EGL または EGL 以外で生成された) |
| 任意の言語 (EGL を含む) で作成されて、z/OS (CICS または IMS の外部) で 実行されるバッチ・プログラム | |
| IBM i 上の EGL COBOL プログラム | IBM i 上の EGL COBOL プログラム |
| 任意の言語で作成され、IBM i で実行される非 EGL プログラム | |
| 任意の言語で作成され、IBM i で実行される非 EGL プログラム | IBM i 上の EGL COBOL プログラム |
| 任意の言語で作成され、IBM i で実行される非 EGL プログラム |
非 EGL 生成の Java コードから EGL 生成の Java コードを呼び出すには、EGL 外部型または Java アクセス関数を使用します。
以下の例は、ローンの利息を計算する呼び出し先プログラムを示しています。
if (userRequest == "C")
try
call programA(myCustomer, interestRate);
onException(myEx InvocationException)
myErrorHandler(12);
end
end
各引数で渡されるバイト数は、受け取るパラメーターによって予期されるバイト数と同じにする必要があります。詳細については、『互換性』を参照してください。
リモート側の呼び出し先プログラム内の例外は、呼び出し側プログラムに直接伝搬することはありません。その代わり、InvocationException によってラップされます。 リモート側の呼び出し先プログラムが例外を処理しない場合は、呼び出し先プログラムが終了し、 呼び出し元は InvocationException をスローします。
| プラットフォーム | 問題 |
|---|---|
| Java 生成 |
|
| COBOL 生成 | 再帰的プログラム呼び出しは、zSeries の場合のみ許可されます。このサポートは、再帰を許可する COBOL に依存しています。これは CICS では通常は問題になりませんが、バッチ・モードで問題になる可能性があります。シンボリック・パラメーター ALLOWRECURSIVEPROGRAMS を YES に設定することにより再帰呼び出しを使用可能にする必要があります。 詳しくは、ユーザーが設定可能な事前定義シンボリック・パラメーターを参照してください。 |
| CICS | 各引数で渡されるバイト数が CICS プログラムで予期されるバイト数と同じでない場合、実行時に異常終了が発生します。 |
| Rich UI | call ステートメントの 1 バージョンはサポートされますが、サービスを呼び出すのみです。詳細については、『サービス・アクセスのための call ステートメントとコールバック関数のコーディング』を参照してください。 |