4-4-10 グローバル変数

グローバル変数は、VrInit~VrQuit関数までの間、有効な文字型データのパラメーター値として定義できる変数です。
グローバル変数を定義することで、上位アプリケーションから出力されたデータを、複数のフォーム間で共通して使用することが可能です。
例えば、自社名や自社住所などを帳票上に印刷するために、フォーム設計時に固定文字として直接値を定義している場合、自社名が変更になると、固定文字で自社名を出力している帳票を、すべて個別に変更する必要があります。
しかし、固定文字の代わりに自社名をあらわすグローバル変数を用いたフィールドを設定しておけば、上位アプリケーション側からグローバル変数に与える変数値を変更するだけで、すべての出力データが変更されるため、XML様式ファイルを修正する必要はありません。

グローバル変数とその初期値を定義する

計算式・編集式でグローバル変数を使用するために、まずグローバル変数を定義します。任意の変数をグローバル変数として設定できます。グローバル変数の初期値をXML様式ファイル内に登録するには、次の手順で行います。
ここでは、[編集式]ダイアログからグローバル変数を登録する例を説明します。


  1. 編集式]ダイアログの[グローバル変数の設定]ボタンをクリックします。


    編集式]ダイアログ


  2. グローバル変数]ダイアログを表示して、[追加]ボタンをクリックします。


    グローバル変数]ダイアログ


  3. 変数追加]ダイアログで各項目を設定します。
    ここでは、変数名を「$COMPANY$」、データを「帳票商事」、「初期値なし」を設定する例を用いて説明します。
    設定が完了したら、[OK]ボタンをクリックします。


    変数名とデータを指定する

    項目
    説明

    変数名

    変数名を入力します。
    「COMPANY」のように"$"で囲わずに変数名を入力しても"$"が前後に自動的に付加され「$COMPANY$」と登録されます。

    データ

    変数の初期値を任意に設定します。
    データは内部で文字データとして扱われます。データを入力する際には、文字データを指定する場合でも、""(ダブルクォーテーション)でくくる必要はありません。 「"帳票商事"」のようにダブルクォーテーション付きの文字列として、データを入力したい場合にのみダブルクォーテーションでくくるようにしてください。
    ここでは、「帳票商事」と入力します。
    初期値なし
    プログラムで印刷するときの初期値として使用されます。
    次の場合にチェックを付けます。
    • プログラムで値を動的に変更したい場合
    • 同じグローバル変数名で異なる値を登録したXML様式ファイルを使用して出力する際に、1つ目のXML様式ファイル内で登録されたグローバル変数の値を、2つ目以降のXML様式ファイルにも引き継いで使用したい場合

  4. リストに追加されたことを確認し、[OK]ボタンをクリックします。


    グローバル変数]ダイアログ

    参考
    • 設定済みのグローバル変数を修正したい場合は、[修正]ボタンをクリックします。
      ただし、修正時は変数名を変更できません。


    変数修正]ダイアログ

    • 設定してあるグローバル変数を削除したい場合は、[削除]ボタンをクリックします。

フィールドにグローバル変数を設定する

定義したグローバル変数を、フィールドの計算式・編集式に設定する方法について説明します。
ここでは、編集式にグローバル変数「$COMPANY$」を設定する例を用いて説明します。


  1. 編集式]ダイアログの[グローバル変数の参照]ボタンをクリックします。


    編集式]ダイアログ

    参考

    定義されていないグローバル変数名を、式の設定欄に直接入力することも可能です。ただし、その場合は、グローバル変数の初期値を登録できません。初期値も登録しておきたい場合は、前項「グローバル変数とその初期値を定義する」に戻って操作してください。


  2. XML様式ファイルに定義しているグローバル変数名が一覧で表示されます。
    使用するグローバル変数名をダブルクリックします。


    定義したグローバル変数が表示される

    設定欄にグローバル変数が入力されます。

    参考
    • グローバル変数を選択せずにリストを閉じたい場合は、[グローバル変数の参照]リスト右上の[]をクリックします。

    • グローバル変数では、文字型データとして値が扱われます。
      数値データとして扱うためには、VAL関数やNUMVAL関数を使用してデータを変換する関数を設定する必要があります。
      設定例については、「定義されていないグローバル変数名の指定($グローバル変数名$)」を参照してください。

グローバル変数による出力結果を確認する

編集式に指定したグローバル変数がどのように出力されるのかを確認する方法について説明します。
ここでは、編集式に「$COMPANY$+"御中"」を設定する例を説明します。


  1. 編集式に「$COMPANY$+"御中"」と入力します。
    グローバル変数「$COMPANY$」は、[グローバル変数の参照]から入力すると、より確実です。


  2. 結果の確認]ボタンをクリックします。


    編集式]ダイアログ


  3. 確認]ボタンをクリックします。
    グローバル変数より"帳票商事"を取得し、「御中」を付加したデータ「帳票商事御中」が表示されます。


    結果が表示される

    データ]欄には、[グローバル変数]ダイアログで設定した[データ]の値が表示されます。

    参考

    グローバル変数の初期値あり/なしの設定にかかわらず、[データ]が定義されている場合はその値が初期値として表示されます。
    初期値あり/なしの設定は、実際にプログラムから実行する際にのみ有効です。

    参考

    結果の確認時には、グローバル変数の定義時に設定したデータ値に文字列としての""が付加されて表示されます。
    例えば、グローバル変数$ADDRESS$のデータとして「"東京都渋谷区"」とダブルクォーテーション付きの文字列が設定されている場合は、「""東京都渋谷区""」とダブルクォーテーション付きの文字列データとして表示されます。
    そのため編集式に、「$ADDRESS$+"渋谷XX"」を設定した場合は、結果欄には、「""東京都渋谷区"渋谷XX"」と表示されます。「"東京都渋谷区渋谷XX"」とデータを取得したい場合は、グローバル変数のデータ値を入力する際に「東京都渋谷区」と文字列をダブルクォーテーションでくくらないようにしてください。


    グローバル変数は文字列として扱われる

定義されていないグローバル変数名の指定($グローバル変数名$)

定義されていないグローバル変数名を、式の設定欄に直接入力することも可能です。
ただし、グローバル変数の初期値は登録できません。
また、式の設定欄に直接入力したグローバル変数名は、グローバル変数のリストには表示されません。

書式

$グローバル変数名$

設定

フィールドの計算式、または編集式で、変数名を「$」で囲って定義します。
グローバル変数の初期値データを設定し、そのデータ値をXML様式ファイル内に保存したい場合は、[グローバル変数の設定]ボタンから変数を定義する必要があります。

使用例

出荷伝票として複数のXML様式ファイル(FORM1からFORM3)を1つのスプールに出力する場合は、XML様式ファイルの設計方法には、次の2つのパターンがあります。

  • パターン1: グローバル変数を使用しない場合
    自社名、自社住所など、伝票内で値が固定のものは、固定文字として設定する。また、金額、単価、売価のデータは、各フィールドに入ってくる値に対して、通貨レートの値を乗じた値とする。通貨レートの値は、ダミーフィールドを作成して取得する。

    FORM1

    項目名フィールド名データ型計算式編集式
    金額PRICE数値PRICE*RATE 
     RATE(マスク設定)数値  

    FORM2

    項目名フィールド名データ型計算式編集式
    単価UNIT_PRICE数値UNIT_PRICE*RATE 
     RATE(マスク設定)数値  

    FORM3

    項目名フィールド名データ型計算式編集式
    売価SELLING_PRICE数値SELLING_PRICE*RATE 
     RATE(マスク設定)数値  
  • パターン2: グローバル変数を使用する場合
    自社名と自社住所など、伝票内で値が固定のものでも、固定文字ではなくフィールドを設定する。そのフィールドに計算式・編集式を使ってグローバル変数を指定する。また通貨レートもグローバル変数として指定する。

    FORM1

    項目名フィールド名データ型計算式編集式
    社名C_NAME文字 $COMPANY$
    住所C_ADD文字 $ADDRESS$
    金額PRICE数値PRICE*VAL($RATE$) 

    FORM2

    項目名フィールド名データ型計算式編集式
    社名C_NAME文字 $COMPANY$
    住所C_ADD文字 $ADDRESS$
    単価UNIT_PRICE数値UNIT_PRICE*VAL($RATE$) 

    FORM3

    項目名フィールド名データ型計算式編集式
    社名C_NAME文字 $COMPANY$
    住所C_ADD文字 $ADDRESS$
    売価SELLING_PRICE数値SELLING_PRICE*VAL($RATE$) 

各アイテムのプロパティに設定する値

参考

グローバル変数では、値は文字型データとして扱われます。
数値データとして扱うためには、VAL関数やNUMVAL関数を使用してデータを変換する関数を設定する必要があります(上図パターン2の表を参考)。

グローバル変数を使用する場合のプログラムの違いは、次のとおりです。
印刷結果は、どちらの場合も同じです。

パターン1: グローバル変数を使用しない場合

VrInit()


VrSetForm("FORM1",1)
VrsOut("PRICE","1000")
VrsOut("RATE","1.2")
...
VrEndPage()

VrSetForm("FORM2",1)
VrsOut("UNIT_PRICE","500")
VrsOut("RATE","1.2")
...
VrEndPage()

VrSetForm("FORM3",1)
VrsOut("SELLING_PRICE","5000")
VrsOut("RATE","1.2")
...
VrEndPage()
VrQuit()

パターン2: グローバル変数を使用する場合

VrInit()
VrsOut("$RATE$","1.2")
VrsOut("$COMPANY$","帳票商事")
VrsOut("$ADDRESS$","東京都渋谷区渋谷×××")
VrSetForm("FORM1",1)
VrsOut("PRICE","1000")
...

VrEndPage()

VrSetForm("FORM2",1)
VrsOut("UNIT_PRICE","500")

...
VrEndPage()

VrSetForm("FORM3",1)
VrsOut("SELLING_PRICE","5000")

...
VrEndPage()
VrQuit()

参考

自社名や住所が変更になった場合は、緑色の箇所の修正が必要です。換算率が変更になった場合は、 橙色の箇所の修正が必要です。
この例からもわかるように、グローバル変数を使用することで帳票移行処理時の作業工数を削減できます。

出力結果

出力結果は、どちらの場合も同様です。

  • 1ページ目
  • 2ページ目
  • 3ページ目