日付フィールドを含む算術演算は、以下のものに限定されています。
日付フィールド・オペランドは、年部分を除いて同じ日付フォーマットである場合に互換性があります (年部分はウィンドウ化西暦年でも拡張西暦年でも可能です)。
次の演算は許可されません。
サポートされる加算および減算で日付フィールドを使用した場合の結果を、以下のセクションに示します。
算術演算で日付フィールドを使用する方法については、以下を参照してください。
使用上の注意
次の表は、日付フィールドを使用した場合の結果および加算の互換オペランドを示しています。
| 非日付データの第 2 オペランド | 日付フィールドの第 2 オペランド | |
|---|---|---|
| 非日付データの第 1 オペランド | 非日付データ | 日付フィールド |
| 日付フィールドの第 1 オペランド | 日付フィールド | 許可されない |
結果が受け取りフィールドにどのように保管されるかについては、日付フィールドに関連する算術演算結果の保管を参照してください。
次の表は、日付フィールドを使用した場合の結果および減算の互換オペランドを示しています。
第 1 オペランド - 第 2 オペランド
SUBTRACT ステートメントでは、 これらのオペランドは次のように逆順に現れます。
SUBTRACT 第 2 オペランド FROM 第 1 オペランド
| 非日付データの第 2 オペランド | 日付フィールドの第 2 オペランド | |
|---|---|---|
| 非日付データの第 1 オペランド | 非日付データ | 許可されない |
| 日付フィールドの第 1 オペランド | 日付フィールド | 非日付データ |
以下のステートメントは、算術演算を実行し、その結果または送り出しフィールドを 1 つ以上の受け取りフィールドに保管します。
MULTIPLY ステートメントでは、GIVING ID だけに日付フィールドを使用することができます。DIVIDE ステートメントでは、GIVING ID または REMAINDER ID だけに日付フィールドを使用することができます。
算術式または算術ステートメントのオペランドであるウィンドウ化日付フィールドは、ウィンドウ化日付フィールドのセマンティクスで説明されているように、使用前に拡張されたかのように扱われます。
送り出しフィールドが日付フィールドである場合、受け取りフィールドは互換日付フィールドでなければなりません。 すなわち、ウィンドウ化西暦年か拡張西暦年の年部分を除けば、 2 つのフィールドの日付フォーマットは同じでなければなりません。
ON SIZE ERROR 文節がステートメントに指定されなかった場合には、保管操作はそのステートメントの既存の COBOL 規則に従い、受け取りフィールドと送り出しフィールド (ウィンドウ化日付フィールド・オペランド、または結果の自動拡張後) の両方が非日付フィールドであるかのように処理されます。
ON SIZE ERROR を指定した場合の、日付フィールドに関連する算術演算結果の保管 (表 21) は、これらのステートメントが送り出しフィールドの値を受け取りフィールドに保管する方法を示しています (どちらかのフィールドが日付フィールドである場合)。このセクションでは、保管の実行方法を記述するのに以下の用語を使用します。
サイズ・エラー処理: 2 種類の送り出しフィールドのいずれについても、送り出しフィールドの想定または実際の年部分が世紀ウィンドウの範囲内であれば、 送り出しフィールドは、年部分の世紀コンポーネントを取り除いた後で受け取りフィールドに保管されます。すなわち、拡張西暦年部分の下位または右端の 2 桁は保持され、上位または左端の 2 桁は破棄されます。
年部分が世紀ウィンドウの範囲内にない場合、受け取りフィールドは変更されず、残りの算術演算が完了した時点でサイズ・エラー命令ステートメントが実行されます。
以下に例を示します。
77 DUE-DATE PICTURE 9(5) DATE FORMAT YYXXX.
77 IN-DATE PICTURE 9(8) DATE FORMAT YYYYXXX VALUE 1995001.
...
COMPUTE DUE-DATE = IN-DATE + 10000
ON SIZE ERROR imperative-statement
END-COMPUTE
送り出しフィールドは拡張日付フィールドで、2005 年 1 月 1 日を表します。2005 が世紀ウィンドウの範囲内であるとすると、 DUE-DATE に保管される値は 05001 です (世紀コンポーネント 20 がない場合は 2005001 の送り出し値)。
| 非日付データ送り出しフィールド | 日付フィールド送り出しフィールド | |
|---|---|---|
| 非日付データの受け取りフィールド | ウィンドウ化なし | 許可されない |
| ウィンドウ化日付フィールド受け取りフィールド | ウィンドウ化 | ウィンドウ化 |
| 拡張日付フィールド受け取りフィールド | ウィンドウ化なし | ウィンドウ化なし |