Rational Developer for System z
PL/I for Windows, Version 8.0, プログラミング・ガイド

データが受け渡される場所

相互作用するルーチンにとって、受け渡すデータの内容およびデータを受け渡す場所について同意することは、データを受け渡す 方法について同意するのと同じように重要です。 PL/I および C のいずれの場合も、データを、スタック上、汎用レジスター内、または浮動小数点レジスター内で受け渡すことが できます。

PL/I では、LINKAGE オプション (プロシージャー・ステートメントとエントリー宣言の OPTIONS オプションでの) によって、 データが受け渡される場所が決定します。 データ位置のエラーが発生する一般的な場合の 1 つに、ミスマッチのリンケージ・タイプを指定する (または、デフォルトが 正しくない場合にリンケージ・タイプを指定しない) 場合があります。

PL/I for Windows は、3 つの 32 ビット・リンケージ・タイプ (OPTLINK、 CDECL、および STDCALL) をサポートします。 次の PL/I 宣言は、関数 dosSleep が SYSTEM リンケージを使用することを指示します。

  dcl dosSleep entry( fixed bin(31) byvalue )
               returns( fixed bin(31) )
               options( linkage(system) );

オプション・リストは、呼び出すすべての C ルーチンによって使用されるリンケージを指定する必要があります。 PL/I および VisualAge for C++ のいずれのコンパイラーも、OPTLINK をデフォルト・リンケージとして使用します。 Windows 上の多くの C ルーチンは STDCALL リンケージを使用します。これらのルーチンの場合、OPTIONS 属性で LINKAGE(STDCALL) を指定する必要があります。 例えば、DosSleep の Windows での同等の宣言は以下のようになります。

  dcl Sleep    ext('Sleep')
               entry( fixed bin(31) byvalue )
               returns( fixed bin(31) )
               options( linkage(stdcall) );

Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)