Rational Developer for System z
COBOL for Windows バージョン 7.5 言語解説書


日付フィールドを使用する算術計算

日付フィールドを含む算術演算は、以下のものに限定されています。

日付フィールド・オペランドは、年部分を除いて同じ日付フォーマットである場合に互換性があります (年部分はウィンドウ化西暦年でも拡張西暦年でも可能です)。

次の演算は許可されません。

サポートされる加算および減算で日付フィールドを使用した場合の結果を、以下のセクションに示します。

算術演算で日付フィールドを使用する方法については、以下を参照してください。

使用上の注意

日付フィールドが関係する加算

次の表は、日付フィールドを使用した場合の結果および加算の互換オペランドを示しています。

表 19. 加算で日付フィールドを使用した場合の結果
  非日付データの第 2 オペランド 日付フィールドの第 2 オペランド
非日付データの第 1 オペランド 非日付データ 日付フィールド
日付フィールドの第 1 オペランド 日付フィールド 許可されない

結果が受け取りフィールドにどのように保管されるかについては、日付フィールドに関連する算術演算結果の保管を参照してください。

日付フィールドが関係する減算

次の表は、日付フィールドを使用した場合の結果および減算の互換オペランドを示しています。

第 1 オペランド - 第 2 オペランド

SUBTRACT ステートメントでは、 これらのオペランドは次のように逆順に現れます。

SUBTRACT 第 2 オペランド FROM 第 1 オペランド

表 20. 減算で日付フィールドを使用した場合の結果
  非日付データの第 2 オペランド 日付フィールドの第 2 オペランド
非日付データの第 1 オペランド 非日付データ 許可されない
日付フィールドの第 1 オペランド 日付フィールド 非日付データ

日付フィールドに関連する算術演算結果の保管

以下のステートメントは、算術演算を実行し、その結果または送り出しフィールドを 1 つ以上の受け取りフィールドに保管します。

MULTIPLY ステートメントでは、GIVING ID だけに日付フィールドを使用することができます。DIVIDE ステートメントでは、GIVING ID または REMAINDER ID だけに日付フィールドを使用することができます。

算術式または算術ステートメントのオペランドであるウィンドウ化日付フィールドは、ウィンドウ化日付フィールドのセマンティクスで説明されているように、使用前に拡張されたかのように扱われます。

送り出しフィールドが日付フィールドである場合、受け取りフィールドは互換日付フィールドでなければなりません。 すなわち、ウィンドウ化西暦年か拡張西暦年の年部分を除けば、 2 つのフィールドの日付フォーマットは同じでなければなりません。

ON SIZE ERROR 文節がステートメントに指定されなかった場合には、保管操作はそのステートメントの既存の COBOL 規則に従い、受け取りフィールドと送り出しフィールド (ウィンドウ化日付フィールド・オペランド、または結果の自動拡張後) の両方が非日付フィールドであるかのように処理されます。

ON SIZE ERROR を指定した場合の、日付フィールドに関連する算術演算結果の保管 (表 21) は、これらのステートメントが送り出しフィールドの値を受け取りフィールドに保管する方法を示しています (どちらかのフィールドが日付フィールドである場合)。このセクションでは、保管の実行方法を記述するのに以下の用語を使用します。

ウィンドウ化なし
ステートメントは、SIZE ERROR 句で説明しているように、 特殊な日付依存サイズ・エラー処理を使わずに保管を実行します。
ウィンドウ化非日付送り出しフィールド
非日付データ送り出しフィールドは、ウィンドウ化日付受け取りフィールドと互換性のあるウィンドウ化日付フィールドとして扱われます。ただし、年部分は 1900 年以降の年の値を表します (この表記は、年部分が 2 桁以下の正の値に限定されないことを除けば、基本年が 1900 であるウィンドウ化日付フィールドに似ています)。 送り出しフィールドのこの想定年部分に 1900 を追加して拡張されたかのようにして、保管が行われます。
ウィンドウ化日付送り出しフィールド
送り出しフィールドが拡張日付フィールドと互換性をもつように、すべてのウィンドウ化日付フィールド・オペランドが必要に応じて拡張されたかのようにして、保管が行われます。

サイズ・エラー処理: 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 の送り出し値)。

表 21. ON SIZE ERROR を指定した場合の、日付フィールドに関連する算術演算結果の保管
  非日付データ送り出しフィールド 日付フィールド送り出しフィールド
非日付データの受け取りフィールド ウィンドウ化なし 許可されない
ウィンドウ化日付フィールド受け取りフィールド ウィンドウ化 ウィンドウ化
拡張日付フィールド受け取りフィールド ウィンドウ化なし ウィンドウ化なし

ご利用条件 | フィードバック

Copyright IBM Corporation 1996, 2008.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)