CALL...BY REFERENCE、CALL...BY VALUE、または CALL...BY CONTENT を使用することにより、 呼び出し先の ILE C プログラムまたはプロシージャーにデータを渡すことができます。 CALL...BY REFERENCE、CALL...BY VALUE、または CALL...BY CONTENT の使用の詳細については CALL...BY REFERENCE、BY VALUE、または BY CONTENT を使用したデータの受け渡しを参照してください。
CALL...BY REFERENCE を使用してデータを ILE C プログラムに渡すと、ILE C プログラムに受け入れられた引き数リストの中にデータ項目へのポインターが入れられます。
CALL...BY CONTENT を使用してデータを ILE C プログラムに渡すと、データ項目の値が一時ロケーションにコピーされ、コピーの一時ロケーションのアドレスを含むポインターは、ILE C プログラムに受け入れられた引き数リストに置かれます。
CALL...BY VALUE では、ILE C プログラムに受け入れられた引き数リストに、項目の値が入れられます。 CALL...BY VALUE は、ILE C プロシージャーを呼び出すのに使用できます。 しかし、ILE C プログラム・オブジェクトの呼び出しには使用できません。
ILE COBOL プログラムにおいて、ILE C プログラムまたはプロシージャーに渡したい引き数をデータ部に記述する方法は、 他のデータ項目をデータ部に記述するときの方法と同じです。 渡したい引き数の記述方法の詳細については プログラム間でのデータの受け渡しと共用を参照してください。
呼び出し先 ILE C プログラム・オブジェクトの実行が始まると、関数 main が自動的に呼び出されます。 各 ILE C プログラム・オブジェクトには、main という名前の関数が必ず 1 つ存在しなければなりません。 パラメーターを ILE C プログラム・オブジェクトに渡す場合、関数 main に 2 つのパラメーターを宣言する必要があります。 これらのパラメーターには任意の名前を付けることができますが、通常は argc と argv を使います。 最初のパラメーター argc (引き数カウント) のタイプは int で、 これは ILE C プログラム・オブジェクトを呼び出した CALL ステートメントに引き数を何個指定したかを示すものです。 2 番目のパラメーター argv (引き数ベクトル) のデータ・タイプは、char 配列オブジェクトへのポインターの配列です。
argc の値は、配列 argv 内のポインターの数を示しています。 プログラム名が使用可能なら、argv の最初のエレメントは、 実行中の ILE C プログラムの呼び出し名のプログラム名を含む文字配列を指します。 argv の残りのエレメントには、呼び出し先 ILE C プログラムに渡されるパラメーターを指すポインターが入れられます。 最後のエレメント argv[argc] は、常に NULL です。
呼び出し先 ILE C プログラムまたはプロシージャーにパラメーターを記述する方法の詳細については、「WebSphere Development Studio: ILE C/C++ Programmer's Guide」を参照してください。
ILE C と ILE COBOL のデータ・タイプは異なります。 ILE C で作成されたプログラムと ILE COBOL で作成されたプログラムとの間でデータを渡したい場合には、 このデータ・タイプの違いに注意する必要があります。 ILE C と ILE COBOL のデータ・タイプによっては、相手の言語に直接対応するものがない場合があります。
ILE C プログラムは常に、文字ストリングはヌル文字で終了していることを想定しています。ILE C プログラムに渡されるストリング・データがヌル終了されていることを確認してください。詳しくは、ヌル終了ストリングの操作を参照してください。
表 18 に ILE COBOL データ・タイプと ILE C データ・タイプの互換性を示します。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.