ページの先頭行へ戻る
NetCOBOL V12.2 PowerCOBOL ユーザーズガイド
FUJITSU Software

7.5.1 VT_BSTR型の変換方法

PowerCOBOLでは、プロパティやメソッドの引数の型がVT_BSTR型の場合、標準では英数字項目として扱われますが、VT_BSTR型のプロパティやメソッドの引数を、COBOLの手続き中で、異なる項類のデータと組み合わせて利用する場合、その利用方法により、項類は以下のように変換して扱われます。

たとえば、テキストボックスコントロール(Text1)のTextプロパティはVT_BSTR型ですが、以下のように記述することで、数値項類に変換され、数値を直接テキストボックスコントロールに表示できます。

  DATA            DIVISION.
  WORKING-STORAGE SECTION.
  01  NUM         PIC S9(4) COMP-5 VALUE IS 0.
  PROCEDURE       DIVISION.
      ・
      MOVE NUM TO "Text" OF Text1.

また、VT_BSTRのプロパティやメソッドの引数を、他のプロパティと組み合わせて利用する場合は、項類は変換されず、標準の英数字項目として扱われます。

たとえば、コンボボックスコントロール(Combo1)のStyleプロパティ(VT_I2型)を、テキストボックスコントロール(Text1)のTextプロパティ(VT_BSTR型)に転記した場合、正しい結果は取得できません。

  PROCEDURE       DIVISION.
      ・
      MOVE "Style" OF Combo1 TO "Text" OF Text1.

このような場合には、作業用のデータを定義し、そのデータへ値をいったん取り出すことにより、正しい結果を得ることができるようになります。

  DATA            DIVISION.
  WORKING-STORAGE SECTION.
  01  NUM         PIC S9(4) COMP-5 VALUE IS 0.
  PROCEDURE       DIVISION.
      ・
      MOVE "Style" OF Combo1 TO NUM.
      MOVE NUM TO "Text" OF Text1.

注意

VALUATE文では上記のような変換は行われません。つねに英数字項目として扱われます。

VT_BSTR型の空白の取り扱い方法

VT_BSTR型のプロパティやメソッドの引数に空白を使用した場合、PowerCOBOLでは文字列の末尾にある全角および半角の空白は、すべて取り除かれます。

たとえば、以下の手続きを実行すると、スタティックテキストコントロール(Static1)に表示される文字列には、"#A#"ではなく、末尾の空白を取り除いた、"#A"が設定されます。("#"は空白を示します。)

        MOVE "#A#" TO "Caption" OF Static1.