Rational Developer for System z
COBOL for Windows バージョン 7.5 プログラミング・ガイド


CEESECS - タイム・スタンプの秒への変換

CEESECS は、タイム・スタンプを表すストリングをリリアン秒 (1582 年 10 月 14 日の 00:00:00 から数えた秒数) に変換します。 このサービスを使用すると、2 つのタイム・スタンプ間の経過時間を計算するなどの時間演算が容易になります。

CALL CEESECS の構文
構文図を読む構文図をスキップする>>-CALL--"CEESECS"--USING--input_timestamp,--picture_string,---->
 
>--output_seconds,--fc.----------------------------------------><
 
input_timestamp (入力)
picture_string の指定と一致した形式で日付またはタイム・スタンプを表す、ハーフワード長の接頭部の付いた文字ストリング。

文字ストリングに含められる文字数は 5 から 80 ピクチャー文字です。input_timestamp には、先行または末尾ブランクを含めることができます。構文解析は、最初の非ブランク文字から始まります (ピクチャー・ストリング自体に先行ブランクが含まれる場合は、CEESECS がその位置を正確にスキップした後、構文解析が始まります)。

picture_string で指定された日付形式によって判別される有効な日付を解析したら、CEESECS は残りの文字をすべて無視します。有効な日付範囲は、1582 年 10 月 15 日から 9999 年 12 月 31 日です。完全な日付を指定する必要があります。有効な時刻範囲は 00:00:00.000 から 23:59:59.999 です。

時刻値の一部または全部を省略すると、残りの値には 0 が代入されます。以下に、その例を示します。

1992-05-17-19:02 is equivalent to 1992-05-17-19:02:00
1992-05-17       is equivalent to 1992-05-17-00:00:00
picture_string (入力)
input_timestamp で指定された日付またはタイム・スタンプ値の形式を示す、ハーフワード長の接頭部の付いた文字ストリング。

picture_string 内の各文字は、input_timestamp 内の文字を表します。例えば、MMDDYY HH.MI.SS を picture_string として指定すると、CEESECS は input_char_date の値 060288 15.35.02 を 1988 年 6 月 2 日の 3:35:02 PM として読み取ります。スラッシュ (/) などの区切り文字がピクチャー・ストリング内にある場合は、先行ゼロを省略することができます。例えば、次に示す CEESECS への呼び出しはすべて、同じ値をデータ項目 secs に割り当てます。

    CALL CEESECS USING '92/06/03 15.35.03',
                       'YY/MM/DD HH.MI.SS', secs, fc.
    CALL CEESECS USING '92/6/3 15.35.03',
                       'YY/MM/DD HH.MI.SS', secs, fc.
    CALL CEESECS USING '92/6/3 3.35.03 PM',
                       'YY/MM/DD HH.MI.SS AP', secs, fc.
    CALL CEESECS USING '92.155 3.35.03 pm',
                       'YY.DDD   HH.MI.SS AP', secs, fc.
 
picture_string に日本元号のシンボル <JJJJ> が含まれる場合は、input_timestampYY の位置に、日本元号での年号が入ります。例えば、1988 年は日本の昭和 63 年に相当します。
output_seconds (出力)
1582 年 10 月 14 日の 00:00:00 から数えた (うるう秒は数えない) 秒数を表す、64 ビット長の浮動小数点数。例えば、1582 年 10 月 15 日の 00:00:01 は、リリアン形式の秒数 86,401 (24*60*60 + 01) に相当します。1988 年 5 月 16 日の 19:00:01.12 は、秒数 12,799,191,601.12 に相当します。

表現される最大値は 9999 年 12 月 31 日の 23:59:59.999 です。これは、リリアン形式では秒数 265,621,679,999.999 に相当します。

64 ビット長の浮動小数点値は、精度を失うことなく約 16 桁の有効小数桁数を正確に表現することができます。このため、最も近いミリ秒 (15 桁の小数桁数) を正確に使用することができます。

input_timestamp に有効な日付またはタイム・スタンプが含まれていない場合は、output_seconds が 0 に設定され、CEESECS が終了して非 CEE000 シンボリック・フィードバック・コードが戻されます。

output_seconds は経過時間を表すので、経過時間の計算を容易に行うことができます。うるう年や年末偏差は計算に影響しません。

fc (出力)
このサービスの結果を示す 12 バイトのフィードバック・コード (オプション)。

表 96. CEESECS のシンボリック条件
シンボリック・フィードバック・コード 重大度 メッセージ番号 メッセージ・テキスト
CEE000 0 サービスが正しく完了した。
CEE2EB 3 2507 CEEDAYS または CEESECS に渡されたデータが不十分です。リリアン日付の値は計算されませんでした。
CEE2EC 3 2508 CEEDAYS または CEESECS に渡された日付値が無効です。
CEE2ED 3 2509 CEEDAYS または CEESECS に渡された元号が認識されませんでした。
CEE2EE 3 2510 CEEISEC または CEESECS への呼び出しで時間の値が認識されませんでした。
CEE2EH 3 2513 CEEISEC、CEEDAYS、CEESECS のいずれかの呼び出しで渡された入力日付が、対応範囲内にありませんでした。
CEE2EK 3 2516 CEEISEC 呼び出し内の分の値が認識されませんでした。
CEE2EL 3 2517 CEEISEC 呼び出し内の月の値が認識されませんでした。
CEE2EM 3 2518 日時サービスへの呼び出しに無効なピクチャー・ストリングが指定されました。
CEE2EN 3 2519 CEEISEC 呼び出し内の秒の値が認識されませんでした。
CEE2EP 3 2521 CEEDAYS または CEESECS に渡された <JJJJ>、 <CCCC>、または <CCCCCCCC> の元号年数値がゼロでした。
CEE2ET 3 2525 CEESECS が数値フィールド内に非数値データを検出したか、あるいはタイム・スタンプ・ストリングとピクチャー・ストリングが一致しませんでした。

使用上の注意

CBL LIB
      ************************************************
      **                                            **
      ** Function: Call CEESECS to convert          **
      **           timestamp to number of seconds   **
      **                                            **
      ** In this example, calls are made to CEESECS **
      ** to convert two timestamps to the number of **
      ** seconds since 00:00:00 14 October 1582.    **
      ** The Lilian seconds for the earlier         **
      ** timestamp are then subtracted from the     **
      ** Lilian seconds for the later timestamp     **
      ** to determine the number of between the     **
      ** two.  This result is displayed.            **
      **                                            **
      ************************************************
       IDENTIFICATION DIVISION.
       PROGRAM-ID. CBLSECS.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  SECOND1                 COMP-2.
       01  SECOND2                 COMP-2.
       01  TIMESTP.
           02  Vstring-length      PIC S9(4) BINARY.
           02  Vstring-text.
               03  Vstring-char        PIC X,
                           OCCURS 0 TO 256 TIMES
                           DEPENDING ON Vstring-length
                              of TIMESTP.
       01  TIMESTP2.
           02  Vstring-length      PIC S9(4) BINARY.
           02  Vstring-text.
               03  Vstring-char        PIC X,
                           OCCURS 0 TO 256 TIMES
                           DEPENDING ON Vstring-length
                              of TIMESTP2.
       01  PICSTR.
           02  Vstring-length      PIC S9(4) BINARY.
           02  Vstring-text.
               03  Vstring-char        PIC X,
                           OCCURS 0 TO 256 TIMES
                           DEPENDING ON Vstring-length
                              of PICSTR.
       01  FC.
           02  Condition-Token-Value.
           COPY  CEEIGZCT.
               03  Case-1-Condition-ID.
                   04  Severity    PIC S9(4) COMP.
                   04  Msg-No      PIC S9(4) COMP.
               03  Case-2-Condition-ID
                         REDEFINES Case-1-Condition-ID.
                   04  Class-Code  PIC S9(4) COMP.
                   04  Cause-Code  PIC S9(4) COMP.
               03  Case-Sev-Ctl    PIC X.
               03  Facility-ID     PIC XXX.
           02  I-S-Info            PIC S9(9) COMP.
       PROCEDURE DIVISION.

       PARA-SECS1.
      ************************************************
      ** Specify first timestamp and a picture string
      **     describing the format of the timestamp
      **     as input to CEESECS
      ************************************************
           MOVE 25 TO Vstring-length of TIMESTP.
           MOVE '1969-05-07 12:01:00.000'
                   TO Vstring-text of TIMESTP.
           MOVE 25 TO Vstring-length of PICSTR.
           MOVE 'YYYY-MM-DD HH:MI:SS.999'
                   TO Vstring-text of PICSTR.

      ************************************************
      ** Call CEESECS to convert the first timestamp
      ** to Lilian seconds
      ************************************************
           CALL 'CEESECS' USING TIMESTP, PICSTR,
                                SECOND1, FC.
           IF NOT CEE000 of FC  THEN
               DISPLAY 'CEESECS failed with msg '
                   Msg-No of FC UPON CONSOLE
               STOP RUN
           END-IF.

       PARA-SECS2.
      ************************************************
      ** Specify second timestamp and a picture string
      **     describing the format of the timestamp as
      **     input to CEESECS.
      ************************************************
           MOVE 25 TO Vstring-length of TIMESTP2.
           MOVE '2004-01-01 00:00:01.000'
                   TO Vstring-text of TIMESTP2.
           MOVE 25 TO Vstring-length of PICSTR.
           MOVE 'YYYY-MM-DD HH:MI:SS.999'
                   TO Vstring-text of PICSTR.

      ************************************************
      ** Call CEESECS to convert the second timestamp
      **     to Lilian seconds
      ************************************************
           CALL 'CEESECS' USING TIMESTP2, PICSTR,
                                SECOND2, FC.
           IF NOT CEE000 of FC  THEN
               DISPLAY 'CEESECS failed with msg '
                   Msg-No of FC UPON CONSOLE
               STOP RUN
           END-IF.

       PARA-SECS2.
      ************************************************
      ** Subtract SECOND2 from SECOND1 to determine the
      **     number of seconds between the two timestamps
      ************************************************
           SUBTRACT SECOND1 FROM SECOND2.
           DISPLAY 'The number of seconds between '
               Vstring-text OF TIMESTP ' and '
               Vstring-text OF TIMESTP2 ' is: ' SECOND2.

           GOBACK.

例: 日時のピクチャー・ストリング

関連参照
ピクチャー文字項およびストリング


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

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