COBOL2002 言語 拡張仕様編


18.2.2 バリアントデータ項目(OLE2オートメーションインタフェース機能)

バリアントデータ項目は,VARIANT値へのポインタを格納するためのデータ領域である。

形式

[図データ]

構文規則
  1. レベル番号は,01〜49または77でなければならない。

  2. バリアントデータ項目は,作業場所節および連絡節に定義しなければならない。

  3. バリアントデータ項目は,EXTERNAL句やGLOBAL句を指定したレコード記述中に書いてもよい。

  4. バリアントデータ項目が独立した基本項目として定義された場合は,EXTERNAL句やGLOBAL句を指定できる。ただし,EXTERNAL句やGLOBAL句を指定できるのは,バリアントデータ項目が作業場所節で定義されている場合だけである。

  5. バリアントデータ項目にVALUE句を指定してもよい。VALUE句には,表意定数ZEROとNULLが指定できる。VALUE句を指定していない場合の動作は保証しない。

  6. バリアントデータ項目に関連する条件名が記述できる。ただし,条件名のVALUE句には表意定数ZEROとNULLだけが指定できる。

  7. USAGE句のVARIANT指定と同時にPICTURE句を指定してはならない。

  8. バリアントデータ項目を明示的に参照できる個所を次に示す。

    ・OLE2オートメーションインタフェース機能でのINVOKE文

    ・OLE2オートメーションインタフェース機能でのSET文

    ・バリアントデータ比較の条件式

    ・利用者定義関数の引数

    ・TYPE-OF-VARIANT関数

    ・VARIANT-TO-INTEGER関数

    ・VARIANT-TO-NUMERIC関数

    ・VARIANT-TO-ALPHANUMERIC関数

    ・VARIANT-TO-OBJECT関数

    ・LENGTH-OF-VARIANT関数

一般規則
  1. バリアントデータ項目は内部的に4バイト(Windows(x64) COBOL2002では8バイト)の領域が確保される。

  2. バリアントデータ項目を指定すると,VARIANT値をCOBOLのデータ項目に変換せずに,そのままVARIANT値として保持できる。また,バリアントデータ項目には,VARIANT値そのものではなく,バリアント値を指すポインタが格納される。

  3. バリアントデータ項目にSYNCHRONIZED句の機能が適用された場合は4バイト(Windows(x64) COBOL2002では8バイト)境界に割り付けられる。

    SYNCHRONIZED句の機能が適用されない場合は,バイト境界に割り付けられる。

  4. バリアントデータ項目にVARIANT値へのポインタを格納する場合,すでに別のVARIANT値へのポインタが設定されているときは,前に格納されたVARIANT値を解放した後に格納する。

  5. バリアントデータ項目にEXTERNAL句を指定した場合の注意事項については,マニュアル「COBOL2002 ユーザーズガイド」のVARIANT値とCOBOLデータのやり取りの説明を参照のこと。