CMP_DATE
(FASTREXX 条件式で使用できます。)
CMP_DATE は、テンプレートを使用して、またはテンプレートなしで実行できるブール関数です。これにより、フィールド内の日付値に対して条件付きテストを実行できます。
注:
- 日付値には時刻コンポーネントも含めることができます。
- このフィールドがテンプレート内の日時フィールドとして定義されている場合は、imask および omask は File Manager によってテンプレートから取得されるため、これらの値を指定する必要はありません。
- フィールド名 (fieldname)、フィールド参照 (#nn)、演算子 (operator)、および非数値の値はすべて引用符で囲み、構文エラーにならないようにする必要があります。
- 最後に指定された引数の後のコンマは省略可能です。
- #nn または fieldname
- #nn
- テンプレートの編集時に、フリー・フォーマットの基準を指定してある場合に、この形式を使用します。nn は、テンプレートの編集時に表示されたフィールド参照番号です。テンプレートの編集時に基準を指定してある場合は、フィールド参照として fieldname を 使用することは無効です。
- fieldname
- ユーザー・プロシージャーをコーディングする場合に、この形式を使用してフィールドを識別します。名前が固有でない場合は、groupname.dataname という形式を使用して名前を指定できます。名前の突き合わせでは、大/小文字が区別されません。名前を修飾しなかった場合は、最初に出現する名前が使用されます。ユーザー・プロシージャーでは値 #nn をコーディングしないでください。 ユーザー・プロシージャーから実行された場合は、表示されるフィールド参照値が、正しいフィールドを識別しないためです。
- 下付き
- 次元フィールドのみに適用されます。以下のいずれかの形式を指定できます。
- (ANY)
- これが、次元フィールドに添字を指定しなかった場合のデフォルトです。関連する配列の 1 つ以上のエレメントが条件を満たす場合に、結果が真になることを示します。
- (ALL)
- 関連する配列の全エレメントが条件を満たす場合に、結果が真になることを示します。
- (nn)
- この形式では、単一の配列エレメントを指します。その次元フィールドに対応する有効な添字を指定する必要があります。
- start
- フィールド値の読み取りを開始する入力レコード内の位置 (バイト単位)。以下のように指定できます。
- 絶対位置
- 正の整数である必要があります。デフォルト値は 1 です。start が入力レコードの現在の長さより大きければ、この関数は無効になります。
- 現行 INPOS からの相対位置
- IPx または INx、または Px または Nx として指定できます。結果の値がゼロ以下になる場合、または入力レコードの現在の長さより大きくなる場合、この関数は無効になります。
- 現行 OUTPOS からの相対位置
- OPx または ONx として指定する必要があります。結果の値がゼロ以下になる場合、または入力レコードの現在の長さより大きくなる場合、この関数は無効になります。
- length
- フィールドの長さ (バイト数)。
2 進数フィールドの場合、長さを省略するか、4 を指定します。
パック 10 進フィールドでは、長さを指定する場合には 1 から 16 の範囲内でなければなりません。長さを省略すると、CMP_DATE はレコード・データからパック・フィールドの長さを決定して、そのフィールドだけを戻します。
ゾーン 10 進数フィールドの場合、長さは 1 から 32 の範囲でなければなりません。
- type
- フィールドのデータ・タイプ。有効な値は、以下のとおりです。
- B
- 2 進数。
- C
- 文字。これは、デフォルトです。
- P
- パック 10 進数。
- B
- ゾーン 10 進数。
- imask
- フィールドに日付を保管するために使用されるフォーマットを定義する値またはピクチャー・ストリング。ピクチャー・ストリングの場合、File Manager では、「z/OS® Language Environment® Programming Services」の付録 B『Date and time services tables』で説明されているすべてのピクチャーがサポートされます。
File Manager は、以下のいずれかの値の指定もサポートします。
- CBLDATE
- COBOL 日付 (1600 年 12 月 31 日からの日数)。
- CYYDDD
- ユリウス日付 (C を世紀標識として使用。0 は 1900 年代、1 は 2000 年代)
- LILDATE
- リリウス日付 (1582 年 10 月 14 日からの日数)
- LILTIME
- 1582 年 10 月 14 日 00:00:00 からの秒数として格納される日時
- STCK
- TOD クロック値として保管される日時
- STCKE
- 拡張 TOD クロック値として保管される日時
imask 値は File Manager で使用できなければなりません。テンプレートが使用され、imask が指定されていない場合、File Manager はテンプレートに保管された内部マスクを使用します。
- omask
- パラメーターとして CMP_DATE に渡される日付値に使用される形式を記述するピクチャー・ストリング。File Manager では、「z/OS® Language Environment® Programming Services」の付録 B『Date and time services tables』で説明されているすべてのピクチャーがサポートされます。
omask 値は File Manager で使用できなければなりません。テンプレートが使用され、omask が指定されていない場合、File Manager はテンプレートに保管された出力マスクを使用します。
- オペレーター (operator)
- デフォルトは EQ または = です。この機能では、動的テンプレートと基準編集で示した、すべての演算子をサポートしています。サポートする演算子の詳細と説明については、以下の節を参照してください。
- 値
- 値は、参照されている演算子とフィールドでのコンテキストで有効な値である必要があります。例えば、複数の値を使用できる演算子は、CO (包含) など一部の演算子のみです。値の形式は、omask で記述された日付形式に基づいて指定する必要があります。
- tally_literal
- CMP_DATE 関数からのすべての TRUE 結果の回数を示す TALLY レポートに表示するリテラルを指定します。
例 1
START-DATE 値が月曜日または 5 月に該当するレコードのみを処理します。
IF CMP_DATE('START-DATE',,'Www Mmm DD,YYYY','CO','Mon','May') THEN
RETURN
ELSE
RETURN 'DROP'
例 2
2009 年 12 月 31 日以降のユリウス日付の値を含む、5 バイトのパック 10 進フィールドが 34 バイト目に位置するレコードのみを処理します。
IF CMP_DATE(34,5,P,'CYYDDD','YYYY-MM-DD','GT','2009-12-31') THEN
RETURN
ELSE
RETURN 'DROP'