COBOL2002 言語 拡張仕様編


18.3.2 SET文(OLE2オートメーションインタフェース機能)

形式

書き方17 OLEプロパティからの値の取得

[図データ]

書き方18 OLEプロパティへの値の設定

[図データ]

書き方19 データ項目の初期化

[図データ]

書き方20 バリアントデータ項目の設定

[図データ]

機能

書き方17のSET文では,OLEプロパティからの値を取得する。書き方18のSET文では,OLEプロパティへの値を設定する。書き方19のSET文では,データ項目を初期化する。書き方20のSET文では,バリアントデータ項目の値をほかのバリアントデータ項目に設定する。

書き方17のSET文で受け取り側作用対象がバリアントデータ項目の場合,または書き方20のSET文の場合,受け取り側作用対象のバリアントデータ項目にすでにVARIANT値が存在するとき,VARIANT値が設定された領域を解放してバリアントデータ項目のポインタにNULLを設定後,SET文の処理をする。

構文規則
  1. 一意名16および一意名18はOLEオブジェクト参照データ項目として定義されていなければならない。

  2. 一意名15および一意名17には,集団項目,英字項目,英数字項目および日本語項目が指定できる。

  3. 定数1および定数2は,英数字定数または日本語文字定数でなければならない。

  4. 一意名14および一意名19に指定できるのは,集団項目,数字項目,英字項目,英数字項目,日本語項目,1けたのブール項目,バリアントデータ項目またはOLEオブジェクト参照データ項目でなければならない。また,一意名19は,強く型付けされた集団項目を指すものであってもよい。一意名21または一意名22はバリアントデータ項目でなければならない。

  5. 定数3は,数字定数,英数字定数,日本語文字定数,1けたのブール定数または表意定数(ZERO,NULL)でなければならない。

  6. 一意名20は,OLEオブジェクト参照データ項目またはバリアントデータ項目として定義されていなければならない。

  7. 一意名19には,数字編集項目を指定することもできる。

  8. -UniObjGenオプションを指定した場合,一意名14,一意名15,一意名17および一意名19には用途がNATIONALの項目および用途がNATIONALの項目を従属項目として含む集団項目は指定できない。-UniObjGenオプションについては,マニュアル「COBOL2002 ユーザーズガイド」のUnicode機能を参照のこと。

  9. -UniObjGenオプションを指定した場合,定数1,定数2および定数3には日本語文字定数および16進日本語文字定数は指定できない。-UniObjGenオプションについては,マニュアル「COBOL2002 ユーザーズガイド」のUnicode機能を参照のこと。

一般規則

書き方17の規則

  1. 一意名16に設定されているOLEオブジェクトを起点として,一意名15または定数1で指定されたOLEプロパティの値が取得される。

  2. 一意名16にOLEオブジェクトが設定されていない場合は,実行時にエラーとなる。

  3. 一意名15または定数1に指定するOLEプロパティは,起点となるOLEオブジェクトからのコンテナやコレクションを含んで指定しなければならない。

  4. 一意名14には,取得したOLEプロパティ値が設定される。

  5. 取得したOLEプロパティ値がOLEオブジェクトの場合は,一意名14でOLEオブジェクト参照データ項目を指定しなければならない。

  6. OLEプロパティ値がOLEオブジェクトでない場合は,一意名14でCOBOLのデータ項目またはバリアントデータ項目を指定する。

    OLEプロパティ値にCOBOLのデータ項目が指定されている場合は,「表18‒2 VARIANT値からCOBOLデータ項目への変換規則」の変換規則に従い,

    VARIANT値からCOBOLのデータ項目に変換されて設定される。VARIANT値から変換できないCOBOLのデータ項目が指定されている場合は,実行時にエラーとなる。

    また,一意名14でバリアントデータ項目が指定された場合は,変換されずにOLEプロパティ値へのポインタが設定される。

  7. 代入元より代入先が大きい場合は,代入先の一意名14にオブジェクトプロパティを指定した時と,通常のデータ名を指定した時とで結果が異なる。通常のデータ名を指定した場合は,データ名の長さが,オブジェクトプロパティのとき,余ったデータ領域は空白で埋められる。

書き方18の規則

  1. 一意名18に設定されているOLEオブジェクトを起点として,一意名17または定数2で指定されたOLEプロパティに値が設定される。

  2. 一意名18にOLEオブジェクトが設定されていない場合は,実行時にエラーとなる。

  3. 一意名17または定数2に指定するOLEプロパティは,起点となるOLEオブジェクトからのコンテナやコレクションを含んで指定しなければならない。

  4. 一意名19または定数3で指定された値がOLEプロパティに設定される。

  5. 一意名19でバリアントデータ項目が指定された場合は,そのままOLEプロパティへ値が設定される。

  6. 一意名19にOLEオブジェクト参照データ項目またはCOBOLのデータ項目が指定されている場合,もしくは定数3が指定された場合は,「表18‒1 COBOLデータ項目からVARIANT値への変換規則」の変換規則に従ってVARIANT値に変換された後に,OLEプロパティに値が設定される。VARIANT値へ変換できないCOBOLのデータ項目が指定されている場合は,実行時にエラーとなる。

書き方19の規則

  1. 一意名20で指定されたOLEオブジェクト参照データ項目またはバリアントデータ項目が初期化される。

    ・OLEオブジェクト参照データ項目が指定された場合は,設定されていたインスタンスオブジェクトを解放し,OLEオブジェクト参照データ項目を初期化する。

    ・バリアントデータ項目が指定された場合は,ポイントされているVARIANT値を解放し,バリアントデータ項目を初期化する。

書き方20の規則

  1. 一意名22のバリアントデータ項目がポイントするVARIANT値が,一意名21のバリアントデータ項目がポイントするバリアント領域へ設定される。

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「10.8.43 SET文