COBOLのDISPLAY文は画面・ログへの出力に使う基本命令です。単純な文字表示だけでなく、UPON句による出力先の切り替え・WITH NO ADVANCINGによる改行抑制・編集項目を使ったフォーマット出力まで活用することで、バッチ処理のログ出力や対話的な入力プロンプトを実装できます。
この記事ではDISPLAY文の完全な構文から、数値データの読みやすい表示・デバッグ活用・タイムスタンプ付きログ出力の実践パターンまで解説します。
- DISPLAY文の完全な構文(複数項目・UPON句・WITH NO ADVANCING)
- UPON句による出力先の切り替え(SYSOUT・CONSOLE・SYSERR)
- WITH NO ADVANCINGで改行なしのプロンプト表示をする方法
- PIC Z・編集項目を使って数値を読みやすく表示する方法
- COMP/COMP-3変数をDISPLAYする際の注意点
- バッチ処理のデバッグ・ログ出力・進捗表示の実践パターン
DISPLAY文の完全な構文
DISPLAY文の基本構文は以下のとおりです。複数の項目をスペースなしで連結して1行に出力できます。
DISPLAY {データ名 | リテラル} ...
[UPON {SYSOUT | CONSOLE | SYSERR | デバイス名}]
[WITH NO ADVANCING]
[END-DISPLAY].
| 句 | 説明 |
|---|---|
| {データ名 | リテラル} | 表示する項目。複数指定した場合はスペースなしで連結して1行に出力される |
| UPON 出力先 | 出力先のデバイスを指定。省略時はSYSOUT(標準出力) |
| WITH NO ADVANCING | 末尾に改行を出力しない。次のDISPLAYやACCEPTが同じ行に続く |
| END-DISPLAY | DISPLAYブロックの終端。WITH NO ADVANCINGと組み合わせる場合などに明示 |
WORKING-STORAGE SECTION.
01 WS-NAME PIC X(20) VALUE '山田 太郎'.
01 WS-DEPT PIC X(10) VALUE '経理部'.
01 WS-EMP-NO PIC 9(6) VALUE 100123.
01 WS-SALARY PIC 9(8) VALUE 350000.
PROCEDURE DIVISION.
*--- リテラルのみ ---
DISPLAY '処理を開始します'
*--- リテラルとデータ名の混在 ---
DISPLAY '社員番号: ' WS-EMP-NO
*--- 複数項目を連結(スペースなし)---
DISPLAY WS-NAME '(' WS-DEPT ')'
*> 出力例: 山田 太郎(経理部 )
*--- 数値データ ---
DISPLAY '給与: ' WS-SALARY '円'
*--- 空行を出力(スペースリテラル) ---
DISPLAY SPACE
STOP RUN.
DISPLAY A B C と書くと、AとBとCの値がスペースなしに並んで出力されます。項目間にスペースを入れたい場合は、間にスペースのリテラル(
' ')やSPACEを挟みます。またDISPLAY '文字列' 変数のように文字列リテラルとデータ名を自由に混在させられます。UPON句で出力先を切り替える
UPON句を使うと出力先のデバイスを指定できます。標準出力・標準エラー・印刷など環境に応じて使い分けます。
| 指定 | 出力先 | 用途・備考 |
|---|---|---|
| UPON SYSOUT | 標準出力(デフォルト) | IBM z/OSのJCL DD名SYSOUT・GnuCOBOLの標準出力 |
| UPON CONSOLE | オペレータコンソール | z/OSではオペレータコンソールへ出力。バッチ運用での警告メッセージに使う |
| UPON SYSERR | 標準エラー出力 | GnuCOBOLなど対応環境ではstderrへ出力。エラーメッセージの分離に使う |
| UPON PRINTER | プリンタ(方言) | 一部のCOBOL実装でプリンタ出力をサポート。標準外 |
| 省略 | デフォルト(SYSOUTと同等) | ほとんどの場合はOUPON省略でSYSOUTに出力される |
PROCEDURE DIVISION.
*--- 標準出力(デフォルト・省略可)---
DISPLAY '処理開始: ' WS-DATE UPON SYSOUT
*--- エラー出力(GnuCOBOL・一部環境)---
IF WS-ERROR-FLAG = 'Y'
DISPLAY 'ERROR: ' WS-ERROR-MSG UPON SYSERR
END-IF
*--- オペレータコンソール(z/OS環境)---
* バッチ処理の重大エラーをオペレータに通知する
IF WS-ABEND-FLAG = 'Y'
DISPLAY 'ABEND: PAYROLL-CALC FATAL ERROR' UPON CONSOLE
END-IF
STOP RUN.
SYSOUT・CONSOLE・SYSERRの挙動はCOBOLの実装(IBM z/OS COBOL・GnuCOBOL・Micro Focus COBOL等)によって異なります。IBM z/OSでは
UPON SYSOUTがJCLのDD SYSOUT=*にルーティングされます。移植性が必要な場合はOUPON句を使わないか、環境変数で切り替える設計にしましょう。WITH NO ADVANCINGで改行を抑制する
通常のDISPLAY文は末尾に改行(改行コード)を出力します。WITH NO ADVANCINGを指定するとその改行が抑制され、次の出力が同じ行に続きます。ACCEPT文と組み合わせた入力プロンプトに特に便利です。
PROCEDURE DIVISION.
*--- 通常: DISPLAY後に改行が入る ---
DISPLAY '処理開始'
DISPLAY '次の行'
*> 出力:
*> 処理開始
*> 次の行
*--- WITH NO ADVANCING: 改行が入らない ---
DISPLAY '処理開始' WITH NO ADVANCING
DISPLAY '→完了'
*> 出力:
*> 処理開始→完了
*--- ACCEPT文と組み合わせた入力プロンプト ---
DISPLAY '社員番号を入力してください: ' WITH NO ADVANCING
ACCEPT WS-EMP-NO
*> 出力:
*> 社員番号を入力してください: ← カーソルがここに来る
STOP RUN.
WORKING-STORAGE SECTION.
01 WS-ANSWER PIC X(1).
88 ANS-YES VALUE 'Y' 'y'.
88 ANS-NO VALUE 'N' 'n'.
01 WS-INPUT-DATE PIC 9(8).
01 WS-DEPT-CODE PIC X(4).
PROCEDURE DIVISION.
DISPLAY '====================================='
DISPLAY ' 月次処理 実行確認 '
DISPLAY '====================================='
DISPLAY SPACE
*--- プロンプト: 入力と同じ行に表示 ---
DISPLAY '処理対象日付 (YYYYMMDD): '
WITH NO ADVANCING
ACCEPT WS-INPUT-DATE
DISPLAY '部門コード (4桁) : '
WITH NO ADVANCING
ACCEPT WS-DEPT-CODE
DISPLAY SPACE
DISPLAY '日付: ' WS-INPUT-DATE
' 部門: ' WS-DEPT-CODE
DISPLAY '上記で実行しますか? (Y/N): '
WITH NO ADVANCING
ACCEPT WS-ANSWER
EVALUATE TRUE
WHEN ANS-YES
DISPLAY '処理を開始します...'
PERFORM MAIN-PROCESS
WHEN ANS-NO
DISPLAY '処理を中断しました'
WHEN OTHER
DISPLAY '不正な入力です'
END-EVALUATE
STOP RUN.
数値データを読みやすく表示する(編集項目)
PIC 9の数値変数をそのままDISPLAYすると先頭ゼロが付いて読みにくくなります。編集項目(PIC ZやPIC $など)にMOVEしてからDISPLAYすることで、ゼロ抑制・カンマ区切り・通貨記号付きの表示ができます。
WORKING-STORAGE SECTION.
01 WS-COUNT PIC 9(5) VALUE 42.
01 WS-AMOUNT PIC 9(9)V99 VALUE 1234567.89.
01 WS-NEGATIVE PIC S9(7)V99 VALUE -9800.50.
* 表示用編集項目
01 ED-COUNT PIC ZZZZZ. *> ゼロ抑制(最大5桁)
01 ED-AMOUNT PIC ZZZ,ZZZ,ZZZ.99. *> カンマ区切り+小数2桁
01 ED-AMOUNT-YEN PIC ¥ZZZ,ZZZ,ZZZ. *> 円記号付き(環境依存)
01 ED-NEGATIVE PIC -ZZZ,ZZZ.99. *> 符号付き
PROCEDURE DIVISION.
*--- 編集なしで表示(読みにくい)---
DISPLAY 'カウント(そのまま): ' WS-COUNT
*> カウント(そのまま): 00042
DISPLAY '金額(そのまま) : ' WS-AMOUNT
*> 金額(そのまま) : 000001234567.89
*--- 編集項目にMOVEしてから表示 ---
MOVE WS-COUNT TO ED-COUNT
MOVE WS-AMOUNT TO ED-AMOUNT
MOVE WS-NEGATIVE TO ED-NEGATIVE
DISPLAY 'カウント(ゼロ抑制): ' ED-COUNT
*> カウント(ゼロ抑制): 42
DISPLAY '金額(カンマ区切り): ' ED-AMOUNT
*> 金額(カンマ区切り): 1,234,567.89
DISPLAY '金額(符号付き) : ' ED-NEGATIVE
*> 金額(符号付き) : - 9,800.50
STOP RUN.
| PIC記述 | 表示例 | 用途 |
|---|---|---|
| PIC 9(5) | 00042 | 先頭ゼロあり(内部数値) |
| PIC ZZZZZ | 42 | 先頭ゼロをスペースに置換 |
| PIC Z(5) | 42 | ZZZZZと同じ(繰り返し表記) |
| PIC ZZZ,ZZZ.99 | 1,234.56 | カンマ区切り+小数2桁・ゼロ抑制 |
| PIC -ZZZ,ZZZ.99 | – 1,234.56 / + 1,234.56 | 符号を先頭に表示(負はマイナス) |
| PIC +ZZZ,ZZZ.99 | +1,234.56 / -1,234.56 | 正負どちらも符号を表示 |
| PIC *,***,***.99 | ***1,234.56 | 先頭ゼロをアスタリスクに置換(小切手印刷) |
COMP・COMP-3変数をDISPLAYする際の注意
COMP(2進数)やCOMP-3(パック10進)は内部的にバイナリ形式で格納されています。これらをDISPLAYすると、環境によっては文字化けや予期しない出力になることがあります。
WORKING-STORAGE SECTION.
* 内部形式変数(計算用)
01 WS-BINARY PIC 9(9) COMP. *> 2進数
01 WS-PACKED PIC 9(9)V99 COMP-3. *> パック10進
01 WS-BINARY-S PIC S9(9) COMP. *> 符号付き2進数
* 表示用変数(DISPLAY形式)
01 WS-DISP-9 PIC 9(9).
01 WS-DISP-9V99 PIC 9(9)V99.
01 ED-FORMATTED PIC ZZZ,ZZZ,ZZZ.99.
PROCEDURE DIVISION.
MOVE 1234567 TO WS-BINARY
MOVE 98765.43 TO WS-PACKED
*--- NG: COMP/COMP-3をそのままDISPLAY ---
* 環境によって文字化けや不正な値が出力される
* DISPLAY 'バイナリ: ' WS-BINARY *> 環境依存
* DISPLAY 'パック : ' WS-PACKED *> 文字化けの可能性
*--- OK: まずDISPLAY形式にMOVEしてからDISPLAY ---
MOVE WS-BINARY TO WS-DISP-9
DISPLAY 'バイナリ(変換後): ' WS-DISP-9
*> バイナリ(変換後): 001234567
*--- より読みやすくするには編集項目を使う ---
MOVE WS-PACKED TO ED-FORMATTED
DISPLAY 'パック(編集済) : ' ED-FORMATTED
*> パック(編集済) : 98,765.43
STOP RUN.
IBM z/OS COBOLではコンパイラオプションによってCOMP変数をDISPLAYしたとき自動的に数値表示に変換します。ただしGnuCOBOLやMicro Focus COBOLでは動作が異なる場合があります。移植性と可読性のためにCOMP/COMP-3変数は一度DISPLAY互換の変数にMOVEしてからDISPLAYするのが安全な習慣です。
バッチ処理環境でのDISPLAY文の動作
COBOLのバッチ処理ではDISPLAY文の出力がどこに行くかは実行環境で異なります。
| 環境 | DISPLAY文の出力先 |
|---|---|
| IBM z/OS(JCL) | JCLのDD SYSOUT=*に出力。JCL上でDD名SYSOUTが未定義の場合は出力されない(またはジョブログ) |
| GnuCOBOL(Linux/Windows) | 標準出力(stdout)に出力。UPON SYSERRでstderrに切り替え可能 |
| Micro Focus COBOL | 標準出力またはコンソールウィンドウ。アプリケーション種別(コンソール/Windowsアプリ)によって挙動が異なる |
| COBOLプログラムをサブルーチンとして呼ぶ場合 | 呼び元のプロセスの標準出力に出力される。WebアプリやAPIからCALLしている場合、DISPLAY出力が意図せずHTTPレスポンスに混入することがある |
実践パターン
デバッグ用DISPLAYで変数の状態を確認する
バッチ処理のデバッグで最もよく使うのがDISPLAY文による変数値の確認です。本番では88レベルのデバッグフラグで制御するパターンが実用的です。
WORKING-STORAGE SECTION.
01 WS-DEBUG-MODE PIC X(1) VALUE 'N'.
88 DEBUG-ON VALUE 'Y'.
88 DEBUG-OFF VALUE 'N'.
01 WS-COUNTER PIC 9(7) VALUE 0.
01 WS-AMOUNT PIC 9(9)V99 COMP-3.
01 WS-DISP-AMOUNT PIC 9(9)V99.
PROCEDURE DIVISION.
*--- 実行時にデバッグON/OFFを切り替え ---
* 本番: MOVE 'N' TO WS-DEBUG-MODE
* 開発: MOVE 'Y' TO WS-DEBUG-MODE
MOVE 'Y' TO WS-DEBUG-MODE
PERFORM PROCESS-LOOP
STOP RUN.
PROCESS-LOOP.
ADD 1 TO WS-COUNTER
IF DEBUG-ON
MOVE WS-AMOUNT TO WS-DISP-AMOUNT
DISPLAY 'DEBUG [' WS-COUNTER '] '
'AMOUNT=' WS-DISP-AMOUNT
END-IF
PERFORM CALC-PROCESS.
*--- デバッグ専用の変数ダンプ段落 ---
DUMP-VARIABLES.
IF DEBUG-ON
DISPLAY '====== VARIABLE DUMP ======'
DISPLAY 'WS-COUNTER : ' WS-COUNTER
MOVE WS-AMOUNT TO WS-DISP-AMOUNT
DISPLAY 'WS-AMOUNT : ' WS-DISP-AMOUNT
DISPLAY 'WS-EOF : ' WS-EOF-FLAG
DISPLAY '=========================='
END-IF.
タイムスタンプ付きのログ出力
バッチ処理では処理の開始・終了・進捗・エラーをタイムスタンプ付きでDISPLAYするパターンが標準的です。FUNCTION CURRENT-DATEと組み合わせて実装します。
WORKING-STORAGE SECTION.
01 WS-LOG-TIMESTAMP PIC X(19). *> YYYY-MM-DD HH:MM:SS
01 WS-LOG-LEVEL PIC X(5).
01 WS-LOG-MSG PIC X(120).
01 WS-LOG-LINE PIC X(150).
01 WS-DT.
05 WS-DT-YEAR PIC X(4).
05 WS-DT-MONTH PIC X(2).
05 WS-DT-DAY PIC X(2).
05 WS-DT-HOUR PIC X(2).
05 WS-DT-MIN PIC X(2).
05 WS-DT-SEC PIC X(2).
05 FILLER PIC X(7).
PROCEDURE DIVISION.
*--- 処理開始ログ ---
MOVE 'INFO ' TO WS-LOG-LEVEL
MOVE 'バッチ処理 開始' TO WS-LOG-MSG
PERFORM WRITE-LOG
*--- エラーログ ---
IF WS-ERROR-FLAG = 'Y'
MOVE 'ERROR' TO WS-LOG-LEVEL
MOVE WS-ERROR-MSG TO WS-LOG-MSG
PERFORM WRITE-LOG
END-IF
STOP RUN.
*--- 共通ログ出力段落 ---
WRITE-LOG.
MOVE FUNCTION CURRENT-DATE TO WS-DT
STRING WS-DT-YEAR DELIMITED BY SIZE '-'
DELIMITED BY SIZE
WS-DT-MONTH DELIMITED BY SIZE '-'
DELIMITED BY SIZE
WS-DT-DAY DELIMITED BY SIZE ' '
DELIMITED BY SIZE
WS-DT-HOUR DELIMITED BY SIZE ':'
DELIMITED BY SIZE
WS-DT-MIN DELIMITED BY SIZE ':'
DELIMITED BY SIZE
WS-DT-SEC DELIMITED BY SIZE
INTO WS-LOG-TIMESTAMP
STRING '[' DELIMITED BY SIZE
WS-LOG-TIMESTAMP DELIMITED BY SIZE
'] [' DELIMITED BY SIZE
WS-LOG-LEVEL DELIMITED BY SPACE
'] ' DELIMITED BY SIZE
WS-LOG-MSG DELIMITED BY SIZE
INTO WS-LOG-LINE
DISPLAY WS-LOG-LINE.
バッチ処理の件数レポート出力
バッチ処理の終了時に処理件数・エラー件数・合計金額などをDISPLAYで出力するパターンです。編集項目を使ってカンマ区切りで読みやすく表示します。
WORKING-STORAGE SECTION.
01 WS-COUNTERS.
05 WS-INPUT-CNT PIC 9(7) VALUE 0. *> 入力件数
05 WS-OK-CNT PIC 9(7) VALUE 0. *> 正常処理件数
05 WS-ERR-CNT PIC 9(5) VALUE 0. *> エラー件数
05 WS-SKIP-CNT PIC 9(5) VALUE 0. *> スキップ件数
01 WS-AMOUNTS.
05 WS-TOTAL-AMT PIC 9(13)V99 COMP-3. *> 合計金額
* 編集項目(表示用)
01 ED-INPUT-CNT PIC ZZZ,ZZZ,ZZ9.
01 ED-OK-CNT PIC ZZZ,ZZZ,ZZ9.
01 ED-ERR-CNT PIC ZZZ,ZZ9.
01 ED-SKIP-CNT PIC ZZZ,ZZ9.
01 ED-TOTAL-AMT PIC ZZZ,ZZZ,ZZZ,ZZ9.99.
PROCEDURE DIVISION.
...
PERFORM PRINT-SUMMARY
STOP RUN.
PRINT-SUMMARY.
MOVE WS-INPUT-CNT TO ED-INPUT-CNT
MOVE WS-OK-CNT TO ED-OK-CNT
MOVE WS-ERR-CNT TO ED-ERR-CNT
MOVE WS-SKIP-CNT TO ED-SKIP-CNT
MOVE WS-TOTAL-AMT TO ED-TOTAL-AMT
DISPLAY '==============================='
DISPLAY ' 処理結果サマリ '
DISPLAY '==============================='
DISPLAY '入力件数 : ' ED-INPUT-CNT ' 件'
DISPLAY '正常件数 : ' ED-OK-CNT ' 件'
DISPLAY 'エラー件数: ' ED-ERR-CNT ' 件'
DISPLAY 'スキップ : ' ED-SKIP-CNT ' 件'
DISPLAY '-------------------------------'
DISPLAY '合計金額 : ' ED-TOTAL-AMT ' 円'
DISPLAY '==============================='
IF WS-ERR-CNT > 0
DISPLAY '警告: エラーが ' ED-ERR-CNT ' 件発生しました'
END-IF.
UPON CONSOLEによるオペレータへの通知
IBM z/OSのバッチ処理では、通常のDISPLAYはジョブのSYSOUTに出力されますが、UPON CONSOLEを使うとオペレータコンソールにメッセージを送れます。重大エラーや手動介入が必要な場合に使います。
PROCEDURE DIVISION.
*--- 通常処理ログはSYSOUTへ ---
DISPLAY 'INFO: 処理開始 ' WS-TODAY UPON SYSOUT
PERFORM MAIN-PROCESS
*--- 重大エラーはオペレータコンソールへも通知 ---
IF WS-FATAL-ERROR = 'Y'
DISPLAY 'FATAL: PAYROLL-CALC ABEND - '
WS-ERROR-MSG
UPON CONSOLE
DISPLAY 'FATAL: RETURN CODE = ' WS-RETURN-CODE
UPON CONSOLE
MOVE 16 TO RETURN-CODE
GOBACK
END-IF
*--- マウント待ちなど手動操作が必要なメッセージ ---
DISPLAY 'WTOR: 月次テープをドライブ01に'
'セットしてENTERを押してください'
UPON CONSOLE
STOP RUN.
よくある落とし穴と対策
DISPLAY文の中で算術演算はできない
DISPLAY '合計' WS-AMOUNT + 100のような書き方はCOBOLでは文法エラーになります(他言語のprintと違います)。
対策: 先にCOMPUTEやADDで計算してワーク変数に格納し、そのワーク変数をDISPLAYします。
*--- NG: DISPLAY文内で演算はできない ---
* DISPLAY '10年後: ' WS-AGE + 10 *> コンパイルエラー
*--- OK: 先に計算してからDISPLAY ---
COMPUTE WS-AGE-FUTURE = WS-AGE + 10
DISPLAY '10年後: ' WS-AGE-FUTURE
COMP-3変数をそのままDISPLAYすると文字化けする
COMP-3(パック10進)は1バイトに2桁の数字を詰め込む内部形式です。EBCDIC環境(z/OS)でそのままDISPLAYすると制御文字として出力され、ログが読めなくなることがあります。
対策: MOVE WS-PACKED TO WS-DISPLAY-VARで一度DISPLAY互換変数に変換してからDISPLAYします。編集項目を使うと同時に読みやすくフォーマットできます。
PIC X変数の末尾スペースがDISPLAYに含まれる
PIC X(20)の変数に「山田」(4文字)を格納すると、残り16文字がスペースで埋まります。そのままDISPLAYすると「山田 」と末尾にスペースが16個付いて出力されます。
対策: 末尾スペースを除いて表示したい場合はFUNCTION TRIM(WS-NAME)を使うか、DELIMITED BY SPACEで出力範囲を制御します。または出力専用の変数にSTRINGで組み立ててからDISPLAYします。
大量のDISPLAYがバッチ性能を低下させる
ループ内でDISPLAY文を毎回実行すると、100万件処理なら100万回のI/Oが発生します。特にz/OSのSPOOLにはI/Oコストがあり、処理時間が数倍になるケースもあります。
大量データを処理するバッチでは、DISPLAY文をループ内に書かないのが原則です。どうしても進捗を表示したい場合は「1000件ごとに1回表示」のように間引きます。エラー件数・処理件数の表示は処理終了後に1回だけまとめてDISPLAYするのが正しいパターンです。
WITH NO ADVANCINGの後にACCEPTを書き忘れる
WITH NO ADVANCINGで改行を抑制した後に何も入力を受け取らないと、次のDISPLAYが同じ行に続いて出力されてしまいます。プロンプト表示の意図で書いた場合は必ずACCEPT文とセットで使います。
対策: DISPLAY '入力: ' WITH NO ADVANCINGの直後には必ずACCEPT文を書きます。
よくある質問
./program > output.logとリダイレクトするのが一般的です。COBOLプログラム内でファイルに書き込みたい場合は、WRITE文を使ってSEQUENTIAL FILEに出力します。AFTER ADVANCING PAGEを使います。WRITE report-record AFTER ADVANCING PAGEと書くとFFコード(フォームフィード)が出力されます。DISPLAY文は画面・SYSOUTへの出力向きで、帳票印刷にはREPORT WRITER機能やFILE WRITE文が向いています。COB_DISPLAY_PRINT_PIPEや実装によって異なります。長い出力が必要な場合は、STRINGで組み立てた変数(PIC X(200)など)をDISPLAYするか、複数のDISPLAYに分割します。まとめ
DISPLAY文の使い方のポイントを整理します。
| 項目 | 方法 | ポイント |
|---|---|---|
| 基本 | DISPLAY リテラル データ名 … | 複数項目をスペースなしで連結して1行出力 |
| 出力先切替 | UPON SYSOUT / CONSOLE / SYSERR | 環境依存。z/OSではJCL DD名とリンク |
| 改行抑制 | WITH NO ADVANCING | ACCEPTと組み合わせて入力プロンプトに使う |
| 数値の整形 | MOVE → 編集項目 → DISPLAY | PIC Z・カンマ区切り・符号付きで読みやすく |
| COMP-3の表示 | まずDISPLAY形式変数にMOVE | パック10進をそのままDISPLAYすると文字化けの恐れ |
| ループ内のDISPLAY | 間引くか処理後にまとめて出力 | ループ毎のDISPLAYはI/O負荷になる |
ACCEPT文と組み合わせた対話的な入力についてはACCEPT文完全ガイドをご覧ください。タイムスタンプ付きログで使うFUNCTION CURRENT-DATEの詳細は日付・時刻の扱い方完全ガイドを参照してください。