Rational Developer for System z
COBOL for Windows バージョン 7.5 言語解説書


USING 句

USING 句は、プログラムまたはメソッドの呼び出し時にプログラムまたはメソッドが受け取るパラメーターを指定します。

USING 句は、非宣言部分の先頭部分に入力される、呼び出されるサブプログラムのまた は呼び出されるメソッドの手続き部ヘッダーで有効です。それぞれの USING ID は、呼び出されるサブプログラムまたは呼び出されるメソッドのリンケージ・セクションで、レベル 01 またはレベル 77 の項目として定義する必要があります。

ENTRY ステートメントの後に続く最初の実行可能ステートメントで入力された呼び出されるサブプログラムにおいて、USING 句は、ENTRY ステートメントの中で有効です。それぞれの USING ID は、呼び出されるサブプログラムのリンケージ・セクションで、 レベル 01 またはレベル 77 の項目として定義する必要があります。

ただし、CALL ステートメントの USING 句に指定されたデータ項目は、呼び出し側の COBOL プログラムまたはメソッドのデータ部では、任意のレベルのデータ項目にすることができます。INVOKE ステートメントの USING 句で指定されたデータ項目は、呼び出し側の COBOL プログラムまたはメソッドのデータ部では、任意のレベルのデータ項目にすることができます。

手続き部ヘッダーの USING 句の中のデータ項目のデータ記述項目の中には、 REDEFINES 文節を指定できます。

ユーザーは、COBOL 以外のプログラムから COBOL プログラムを呼び出したり、システム・コマンドから COBOL メインプログラムにユーザー・パラメーターを渡したりすることができます。 COBOL メソッドは、Java または COBOL からしか呼び出すことができません。

コマンド行の引数は、常にネイティブ・データ型として受け渡されます。ホスト・データ型のコンパイラー・オプション CHAR(EBCDIC)、FLOAT(HEX)、または BINARY(S390) を指定する場合、これらのコンパイラー・オプションの影響を受けるデータ型を持つ引数の記述に NATIVE 句を指定する必要があります。

呼び出す側と呼び出される側のサブプログラム、あるいは呼び出す側のメソッドまたはプログラム、および呼び出される側のメソッド内で、USING ID を指定する順序によ り、両方で使用可能な単一データ・セットの対応が決まります。この対応付けは、位置関係によって決まるもので名前によるものではありません。 呼び出しサブプログラムと呼び出されるサブプログラムの場合、対応する ID のバイト数は同じでなければならず、データ記述は同じである必要はありません。

指標名の場合、対応は確立されません。呼び出し側プログラムと呼び出さ れるプログラム、または呼び出しメソッド/プログラムと呼び出されるメソッドの中の 指標名は、常にそれぞれ個別の指標を参照します。

CALL USING ステートメントまたは INVOKE USING ステートメントで指定した ID は、呼び出し側プログラムまたは呼び出しメソッド、あるいは呼び出されたプログラムまたは呼び出されたメソッド内で参照できるプログラムが使用可能なデータ項目を指定します。これらの項目は、どのデータ部セクションにも定義できます。

手続き部の USING 句には、特定の ID を複数回指定できます。CALL または INVOKE ステートメントによって渡される最後の値が使用されます。

BY REFERENCE 句も BY VALUE 句も、別の BY REFERENCE 句や BY VALUE 句で上書きされるまで、 それぞれの後に付くすべてのパラメーターに適用されます。

BY REFERENCE (プログラムのみ)
BY CONTENT または BY REFERENCE によって引数を渡す場合は、 PROCEDURE または ENTRY USING 句の対応する仮パラメーターに対して BY REFERENCE を指定または暗黙指定する必要があります。

BY REFERENCE と BY VALUE を両方とも指定しないと、 BY REFERENCE がデフォルト値になります。

CALL ステートメント内の対応するデータ項目への参照で、BY REFERENCE によって (明示的または暗黙的に) 渡されるパラメーターが宣言されている場合は、呼び出されるサブプログラム手続き部の USING ID への各参照が、呼び出し側プログラムの対応する USING ID への参照によって置換されるようにプログラムが実行されます。

CALL ステートメント内の対応するデータ項目への参照で、BY CONTENT によって渡されるパラメーターが宣言されている場合、項目の値が移動するのは、CALL ステートメントが実行され、データ名-1 のリンケージ・セクションで宣言された属性を所有しているシステム定義ストレージ項目にそのステートメントが格納された場合です。CALL ステートメントの BY CONTENT 句の中の各パラメーターのデータ記 述は、手続き部ヘッダーの USING 句の中の対応するパラメーターのデータ記述と 同じでなければなりません (変換、拡張、切り捨てがあってはなりません)。

BY VALUE
BY VALUE により引数が渡されるときは、送り出しデータ項目への参照ではなく、引数の値が渡されます。受け取り側のサブプログラムまたはメソッドは、送り出しデータ項目の 一時コピーにしかアクセスできません。 つまり、BY VALUE により渡された引数に対応する 仮パラメーターを変更しても、その引数には影響がありません。

メソッド手続き部ヘッダーの USING 句に指定するパラメーターは、メソッド BY VALUE に渡す必要があります。メソッドの引数は、常にネイティブ・データ型として受け渡されます。ホスト・データ型のコンパイラー・オプション FLOAT(HEX) または BINARY(390) を指定する場合、これらのコンパイラー・オプションの影響を受ける引数の記述に NATIVE 句を指定する必要があります。

これらの概念を表す例については、「COBOL for Windows プログラミング・ガイド」を参照してください。

データ名-1
リンケージ・セクションでは、データ名-1 をレベル 01 項目またはレベル 77 項目にする必要があります。

メソッド手続き部のヘッダーでデータ名-1 がオブジェクト・リファレンスである場合、そのオブジェクト・リファレンスのデータ記述項目には、クラス名を明示的に指定する必要があります。つまり、データ名-1 は、ユニバーサル・オブジェクト・リファレンスであってはなりません。

メソッドの場合、パラメーター・データ型は、COBOL と Java との間で相互に運用が可能なデータ型 しか使用できません。詳しくは、COBOL と Java の相互運用可能なデータ型を参照してください。

 

RETURNING 句

RETURNING 句は、プログラムまたはメソッドを実行した結果を受け取るデータ項目を指定します。

データ名-2
データ名-2 は、RETURNING データ項目です。リンケージ・セクションでは、データ名-2 をレベル 01 項目またはレベル 77 項目にする必要があります。

メソッド手続き部のヘッダーでは、データ名-2 のデータ型を Java 相互運用に対応したデータ型にする必要があります。詳しくは、COBOL と Java の相互運用可能なデータ型を参照してください。

RETURNING データ項目は、出力専用のパラメーターです。メソッドへの入力時、RETURNING データ項目の初期状態の値は定まっておらず、予測できません。 RETURNING データ項目の値を参照するには、PROCEDURE DIVISION RETURNING データ項目を初期化する必要があります。呼び出しルーチンに戻される値は、 メソッドの終了時にデータ項目が持つ値です。 INVOKE RETURNING ID およびメソッド RETURNING のデータ項目へ準拠するための要件については、RETURNING 句を参照してください。

次のプログラムには、手続き部 RETURNING 句を使わないでください。

リンケージ・セクションの項目への参照

呼び出されるプログラムまたは呼び出されるメソッドのリンケージ・セクションで定義されたデー タ項目は、これらが次の条件のいずれかを満たす場合にのみ、そのプログラムの手続き部の 中で参照することができます。


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

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