システム変数とは、すべてのLANSA区画で使用されるグローバル変数です。全体で共通の、動的に値が変化しうる情報を格納するために使います。
例えば「現在の日付」は、全体で共通であり、しかもその値は毎日変わります。そこで、現在の日付に「*TODAYS_DATE」という名前のシステム変数を割り当てることができます。
一度このシステム変数を作成すると、その名前を以下のようにLANSA内の多くの場所で使用することができます。
- リポジトリ内でフィールドの省略値として使用可能
- フィールドに対する妥当性規則で使用
- RDMLコンポーネント内で使用
妥当性規則の記述にシステム変数を使うと、次のような利点があります。
- 規則が簡潔でわかりやすくなる
- 検証内容を厳密に記述できる
- 長期間にわたって使える、保守しやすい規則を記述できる
例えば「DATDUE」というフィールドに、その日の日付しか設定できないようにするとしましょう。この場合、妥当性規則は、次のようにさまざまな書き方ができます。
- 値の範囲として記述する方法。DATDUEの値が「*TODAYS_DATE~*TODAYS_DATE」の範囲にあることを検証します。
- 取りうる値を列挙する形で記述する。DATEDUEの値が「*TODAYS_DATE」というリストに含まれることを検証します。
- 式で記述する。DATDUEの値が「#DATDUE = *TODAYS_DATE」という式を満たすことを検証します。
出荷バージョンのLANSAには多くのシステム変数が搭載されていますが、システム変数の主な目標は、各企業に特有の情報へのアクセスを支援することです。例えば、次のシステム変数を作成して、自社特有の要件に一致させることができます。
システム変数 | 説明 | タイプ | 長さ | 小数点の位置 |
|---|---|---|---|---|
*PERIOD | 現在の会計年度 | N | 4 | 0 |
*LASTPERIOD | 直前の会計年度 | N | 4 | 0 |
*NEXTPERIOD | 次の会計年度 | N | 4 | 0 |
*BEGINMONTH | 今月の初日 | N | 6 | 0 |
*ENDMONTH | 今月の末日 | N | 6 | 0 |
*SYDOFFICE | シドニー支店の名称と住所コード | A | 7 | |
*MEBOFFICE | メルボルン支店の名称と住所コード | A | 7 | |
*COMPANY | 総勘定元帳で使う企業番号 | A | 2 |
上述のシステム変数はLANSAに同梱されないことに注意してください。これらは、独自のシステム変数を作成するための例です。
LANSAにシステム変数を定義する場合、取り出し方法を指定する必要があります。これは、システム変数をいつ派生または評価するかを示します。STATICまたはDYNAMICを指定できます。さらに、「呼び出しによる値の設定」パラメータは、システム変数を「評価」するLANSAファンクションまたは3GLプログラムを特定します。変数値を適切に設定、維持できるかどうかはこのファンクション/プログラム次第なので、その処理内容は重要です。
注:システム変数は、LANSAシステム・レベルに存在するため、すべての区画で共有されます。システム変数の値をある LANSA 区画で変更すれば、その新しい値はすべての区画で使用されます。