call

EGL call 文は、制御を別のプログラムに移動し、オプションで一連の値を渡します。 呼び出し先プログラムが終了すると、制御が呼び出し元に戻ります。 また、変数によって渡されたデータが呼び出し先プログラムで変更されると、 呼び出し元で使用可能なストレージ域も変更されます。


call 文の構文図
program name
呼び出し先プログラムの名前。 プログラムは、EGL で生成されたプログラムであるか、外部定義されている と見なされます。

指定された名前を予約語にすることはできません。呼び出し側が EGL 予約語と同じ名前を持つ非 EGL プログラムを呼び出す必要がある場合は、 call 文で別のプログラム名を使用し、 リンケージ・オプション・パーツ、callLink エレメントを使用して別名を指定します。 この別名が、実行時に使用される名前です。

呼び出し先プログラムが Java™ プログラムの場合、その呼び出し先プログラムの名前は大文字小文字の区別があります。つまり、calledProgramCALLEDPROGRAM は異なることになります。それ以外の場合、プログラム名に大文字小文字の区別があるかどうかは、呼び出し先プログラムがあるシステムで判断します。UNIX® では大文字小文字の区別があり、その他のシステムでは大文字小文字の区別はありません。

EGL デバッガーでは、呼び出し先プログラムの名前には大文字小文字の区別がありません。

argument
それぞれがコンマで区切られた一連の値参照の 1 つ。 argument には、項目、書式、レコード、非数値リテラル、非数値定数、または (EGL が呼び出し先プログラムに生成時にアクセスできる場合は) より複雑な日時式、数式、またはテキスト式を指定できます。 ANY 型のフィールドを渡すことはできません。
externallyDefined
プログラムが外部定義されていることを示す標識。この標識を使用できるのは、VisualAge® Generator との互換性があるプロジェクト・プロパティーを設定する場合のみです。

EGL 以外で生成されたプログラムは、call 文ではなく、 生成時に使用されるリンケージ・オプション・パーツを使用して、 外部定義されていると識別することをお勧めします。 (関連するプロパティーは、リンケージ・オプション・パーツ、callLink エレメントにあり、 externallyDefined とも呼ばれます。)

noRefresh
呼び出し先プログラムが制御を戻すときに、画面を最新表示しないことを示す標識。

この標識は、プログラム・プロパティー VAGCompatibility が選択されている場合、 または (生成時に) ビルド記述子オプション VAGCompatibilityyes に設定されている場合に、(開発時に) サポートされます。

この標識は、呼び出し側がテキスト書式を画面に表示する実行単位にあり、 以下のいずれかの状態が有効である場合に適切です。
  • 呼び出し先プログラムがテキスト書式を表示しない
  • 呼び出し側が、呼び出し後にフルスクリーン・テキスト書式に書き込む

画面を最新表示するための設定は、call 文ではなく、 生成時に使用されるリンケージ・オプション・パーツを使用して示すことをお勧めします。 (関連するプロパティーは、リンケージ・オプション・パーツ、callLink エレメントにあり、 refreshScreen と呼ばれます。)

以下に例を示します。

  if (userRequest == "C")
    try
      call programA;
    onException
      myErrorHandler(12);
    end
  end

call 文の引き数の数、型、および順序は、呼び出し先プログラムによって予期される値の数、型、および順序と一致している必要があります。

各引き数で渡されるバイト数を予期されるバイト数と同じにすることを特にお勧めします。呼び出し先プログラムが CICS® 内にあり、長さが等しくない場合は、ランタイム異常終了が生じます。EGL 生成の Java プログラムの場合、長さのミスマッチがエラーの原因となるのは、そのミスマッチのランタイム修正によって型ミスマッチが生じる場合のみであり、以下のようになります。

Java の場合は、例えば、NUM 型のデータ項目にブランクが追加される場合はエラーが生じますが、CHAR 型のデータ項目にブランクが追加されてもエラーは生じません。

リテラルおよび定数には、以下の規則が適用されます。

再帰呼び出しは、すべてのターゲット・システムでサポートされています。

次の表に示すように、call の振る舞いは、一部ターゲット・システムに依存します。

ターゲット・システム プラットフォーム固有の詳細
AIX® 再帰呼び出しはサポートされています。
CICS for z/OS®

再帰呼び出しはサポートされていません。

呼び出し先プログラムがレジスター 15 に置く戻りコードは、呼び出し元にとって利用不能です。

iSeries™ 再帰呼び出しはサポートされています。
Linux™ 再帰呼び出しはサポートされています。
z/OS バッチ

再帰呼び出しはサポートされていません。

Windows® 2000、Windows NT® 再帰呼び出しはサポートされています。
z/OS UNIX システム・サービス 再帰呼び出しはサポートされています。
ターゲット・システム プラットフォーム固有の詳細
AIX 再帰呼び出しはサポートされています。
iSeries COBOL 再帰呼び出しはサポートされていません。
iSeries Java 再帰呼び出しはサポートされています。
Linux 再帰呼び出しはサポートされています。
z/OS バッチ 再帰呼び出しはサポートされていません。
Windows 2000、Windows NT 再帰呼び出しはサポートされています。
z/OS UNIX システム・サービス 再帰呼び出しはサポートされています。

生成時に使用されるリンケージ・オプション・パーツが存在する場合、呼び出しは、それによる影響を受けます。(リンケージ・オプション・パーツを組み込むには、ビルド記述子オプション linkage を設定します。)

リンケージの詳細については、『リンケージ・オプション・パーツ』を参照してください。

関連する概念
リンケージ・オプション・パーツ
構文図

関連する参照項目
EGL 文
例外処理
linkage
プリミティブ型

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.(C) Copyright IBM Japan 2005.