COBOL2002 ユーザーズガイド


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では使用できない呼び出し規約の指定に関する言語仕様を,次に示します。

表39‒2 使用できない呼び出し規約の指定に関する言語仕様

言語仕様

指定

環境部の特殊名段落(SPECIAL-NAMES)

  • SPECIAL-NAMESの機能名のCDECL/STDCALL/PASCAL指定

環境部の外部プログラム節(EXTERNAL-PROGRAM SECTION)

  • EXTERNAL-PROGRAM SECTIONの指定

  • CALL-CONVENTION段落の指定

これらの言語仕様を指定した場合,コンパイラはfastcall呼び出し規約で処理し,指定された言語仕様を覚え書きとする警告エラーを出力します。

(b) コンパイラオプション

Windows(x64) COBOL2002では使用できない,呼び出し規約の指定に関するコンパイラオプションを次に示します。

もし,これらのコンパイラオプションを指定した場合は,コンパイラは指定を無視して処理を続けます。

  • -StdCallオプション

  • -StdCallFileオプション

  • -Dllオプションのサブオプション{Stdcall|Cdecl}

注※

-Dllオプションのサブオプションの指定だけが無効になります。

(2) アドレス系データを表現するデータ項目

長さが8バイトになるアドレス系データを表現するデータ項目を,次に示します。これらの項目の自然な境界は8バイトです。SYNCHRONIZED句を指定してけた詰めする場合は,8バイト境界になります。

SYNCHRONIZED句については,マニュアル「COBOL2002 言語 標準仕様編」 「9.16.80 SYNCHRONIZED句」を参照してください。

けた詰めについては,マニュアル「COBOL2002 言語 標準仕様編」 「4.4.1(7) 実行用コードの効率を高めるための項目のけた詰め」を参照してください。

(3) 長さを返す組み込み関数の戻り値

返却値のサイズが8バイト2進になる組み込み関数を,次に示します。

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関数」を参照してください。