CMP_DATE

1. CMP_DATE syntax – with template

1 CMP_DATE(
2.1 #nn(subscript)
2.1 fieldname(subscript)? ,imask? ,omask
1! ‘ EQ’
1 ‘operator’
2 ,
2 + , value
2 ?,tally_literal)
2. CMP_DATE syntax – without template

1 CMP_DATE(start, length, type, imask,  omask
1! ‘EQ’
1 ‘operator’
2 ,
2 + , value
2 ?,tally_literal)

(FASTREXX 条件式で使用できます。)

CMP_DATE は、テンプレートを使用して、またはテンプレートなしで実行できるブール関数です。これにより、フィールド内の日付値に対して条件付きテストを実行できます。

注:
  1. 日付値には時刻コンポーネントも含めることができます。
  2. このフィールドがテンプレート内の日時フィールドとして定義されている場合は、imask および omaskFile Manager によってテンプレートから取得されるため、これらの値を指定する必要はありません。
  3. フィールド名 (fieldname)、フィールド参照 (#nn)、演算子 (operator)、および非数値の値はすべて引用符で囲み、構文エラーにならないようにする必要があります。
  4. 最後に指定された引数の後のコンマは省略可能です。
#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'