アプリケーションの中には、日付フィールドで、トリガーとして機能する (つまり、ある特殊な処理が必要であることを知らせる) ゼロのような特殊値を使用するものがあります。
例えば、Orders ファイルで Order-Date に 0 の値を使用すると、レコードはオーダー・レコードではなく顧客合計レコードであることを意味するという場合です。プログラムは、次のように日付を 0 と比較します。
01 Order-Record.
05 Order-Date Pic S9(5) Comp-3 Date Format yyxxx.
. . .
If Order-Date Equal Zero Then . . .
しかし、DATEPROC コンパイラー・オプションの NOTRIG サブオプションを指定してコンパイルしている場合、この比較は有効ではありません。リテラル値の Zero は非日付であるため、仮定による世紀ウィンドウに対してウィンドウ操作されて値は 1900000 になります。
あるいは、次のように、リテラル比較の代わりに符号条件を使用できます。 符号条件を使用すると、Order-Date は非日付として扱われ、世紀ウィンドウは考慮に入れられません。
If Order-Date Is Zero Then . . .
このアプローチが適用されるのは、符号条件内のオペランドが算術式ではなく単純な ID である場合だけです。式を指定した場合は、適宜世紀ウィンドウが適用されてその式が最初に評価されます。そのあと、その式の結果に対して符号条件が比較されます。
代わりに UNDATE 組み込み関数または DATEPROC コンパイラー・オプションの TRIG サブオプションを使用しても、同じ結果が得られます。
関連概念
非日付の処理
関連タスク トリガーと限界の設定
日付処理の明示的制御
関連参照
DATEPROC