39.1.2 Windows(x64) COBOL2002固有の言語仕様
Windows(x64) COBOL2002では,Windows(x86) COBOL2002と比べて呼び出し規約の変更,およびポインタサイズの64bit化に対応しました。そのため,Windows(x64) COBOL2002に対応するCOBOL2002の言語仕様にもWindows(x86) COBOL2002と比べて一部変更があります。
Windows(x64) COBOL2002固有の言語仕様について説明します。
(1) 呼び出し規約のfastcallへの限定
Windows(x64) COBOL2002では,呼び出し規約がfastcallに限定されます。ほかの呼び出し規約を指定することはできません。fastcall呼び出し規約については,「18.4.2 呼び出し規約」の「(3) fastcall呼び出し規約(Windows(x64) COBOL2002で有効)」を参照してください。
(a) 言語仕様
Windows(x64) COBOL2002では使用できない呼び出し規約の指定に関する言語仕様を,次に示します。
言語仕様 |
指定 |
---|---|
環境部の特殊名段落(SPECIAL-NAMES) |
|
環境部の外部プログラム節(EXTERNAL-PROGRAM SECTION) |
|
これらの言語仕様を指定した場合,コンパイラはfastcall呼び出し規約で処理し,指定された言語仕様を覚え書きとする警告エラーを出力します。
(b) コンパイラオプション
Windows(x64) COBOL2002では使用できない,呼び出し規約の指定に関するコンパイラオプションを次に示します。
もし,これらのコンパイラオプションを指定した場合は,コンパイラは指定を無視して処理を続けます。
-
-StdCallオプション
-
-StdCallFileオプション
-
-Dllオプションのサブオプション{Stdcall|Cdecl}※
- 注※
-
-Dllオプションのサブオプションの指定だけが無効になります。
(2) アドレス系データを表現するデータ項目
長さが8バイトになるアドレス系データを表現するデータ項目を,次に示します。これらの項目の自然な境界は8バイトです。SYNCHRONIZED句を指定してけた詰めする場合は,8バイト境界になります。
-
アドレス名
-
アドレスデータ項目
-
ポインタ項目
-
OLEオブジェクト参照項目
-
バリアントデータ項目
-
指標名
-
指標データ項目
-
オブジェクト参照データ項目
-
既定義オブジェクト参照
-
ADDRESS OF指定で指定した一意名のアドレス
-
連絡節でのBY REFERENCE指定のデータ項目
SYNCHRONIZED句については,マニュアル「COBOL2002 言語 標準仕様編」 「9.16.80 SYNCHRONIZED句」を参照してください。
けた詰めについては,マニュアル「COBOL2002 言語 標準仕様編」 「4.4.1(7) 実行用コードの効率を高めるための項目のけた詰め」を参照してください。
(3) 長さを返す組み込み関数の戻り値
返却値のサイズが8バイト2進になる組み込み関数を,次に示します。
-
LENGTH関数
-
LENGTH-OF-VARIANT関数
-
LENGTH OF指定で生成されるデータ領域
-
COUNT-CHAR関数
-
LENGTH-OF-SUBSTRING関数
LENGTH関数については,マニュアル「COBOL2002 言語 標準仕様編」 「11.31 LENGTH関数」を参照してください。
LENGTH-OF-VARIANT関数については,マニュアル「COBOL2002 言語 標準仕様編」 「11.33 LENGTH-OF-VARIANT関数」を参照してください。
COUNT-CHAR関数については,マニュアル「COBOL2002 言語 拡張仕様編」 「23.2.1 COUNT-CHAR関数」を参照してください。
LENGTH-OF-SUBSTRING関数については,マニュアル「COBOL2002 言語 拡張仕様編」 「23.2.3 LENGTH-OF-SUBSTRING関数」を参照してください。