COBOL言語の日付や時刻の使い方について理解しよう!|基礎ガイド

COBOL(コボル)言語のプログラムに必ず出てくる日付、時刻とその使い方とは

基礎-日付時刻-イメージ

COBOL(コボル)言語の日付、時刻の取得方法とは?

COBOL(コボル)言語で日付、時刻を取得するには、予め用意された組込み関数「CURRENT-DATE」を使用します。

この組込み関数を使用するだけで、現在の年(西暦)、日、時、分、秒、グリニッジ標準時間からの時差を求める事ができます。

ここでは、COBOL(コボル)言語の「CURRENT-DATE」を使用して、現在の日付、時刻を取得し、結果を画面表示するという処理の書き方をご紹介しますので、しっかりその書き方及び使用方法について理解していきましょう。

書き方:

FUNCTION CURRENT-DATE

使用例:

基礎-日付時刻-使用例

使用例は、現在の日付、時刻の取得結果をWK-DATEというデータ項目に格納し、結果を画面表示するというプログラムです。「CURRENT-DATE」では、現在の日付、時刻を21桁の文字で取得する事ができます。21桁の文字は、最初の桁から年(西暦4桁)、月(01~12)、日(01~31)、時(01~23)、分(00~59)、秒(00~59)、ミリ秒(00~59)、時差(遅れ進みを時分で表記。日本の場合、+0900)という内訳になります。

実行結果:(2019年1月9日に処理を実行した場合の結果)

基礎-日付時刻-実行結果

COBOL(コボル)言語の日付、時刻の種類

COBOL(コボル)言語の基本的な日付、時刻の取得方法について理解いただけたところで、次は先ほどご紹介した「CURRENT-DATE」以外の日付、時刻の取得方法についてご紹介します。

COBOL(コボル)言語は現在の日付、時刻を取得する「CURRENT-DATE」以外にも、プログラムのコンパイル日付を取得する組込み関数や、その年の1月1日からの経過日数を表すジュリアンデートを扱う組込み関数が用意されています。では、順にその書き方及び使用方法について見ていきましょう。

書き方1:プログラムのコンパイル日付を取得する

FUNCTION WHEN-COMPILED

使用例1:

基礎-日付時刻-使用例1

使用例は、プログラムのコンパイル日付の取得結果をWK-DATEというデータ項目に格納し、結果を画面表示するというプログラムです。プログラムのコンパイル日付ですので、「CURRENT-DATE」と違い、何度処理を実行しても、プログラムをリコンパイルするまで実行結果が変わらない事が確認いただけるかと思います。

実行結果1:(2019年1月9日にプログラムをコンパイルしていた場合の実行結果)

基礎-日付時刻-実行結果1

書き方2:ジュリアンデートを取得する

FUNCTION DAY-OF-INTEGER(グレゴリオ通日)

使用例2:

基礎-日付時刻-使用例2

使用例は、「DAY-OF-INTEGER」を使用して取得したジュリアンデートを、WK-RESULTというデータ項目に格納し、結果を画面表示するというプログラムです。「DAY-OF-INTEGER」は引数としてグレゴリオ通日を使用しますので、まず現在日付を「CURRENT-DATE」で取得した後、「INTEGER-OF-DATE」という組込み関数を使用して、現在日付からグレゴリオ通日を求めます。そして、その結果を「DAY-OF-INTEGER」の引数として渡す事でジュリアンデートを求める事ができます。

実行結果2:(2019年1月13日に処理を実行した場合の結果)

基礎-日付時刻-実行結果2

COBOL(コボル)言語における日付、時刻取得の基本事項や注意事項

  • 組込み関数((例) FUNCTION CURRENT-DATE等)の間の空白や改行は、自由に設定できます。
  • ACCEPT文(ACCEPT データ項目 FROM DATE)を使用する事により、年(西暦下2桁)、月、日を取得する事もできますが、年上2桁を省略した事によりプログラムが誤動作したという2000年問題を再燃させないためにもこの使用は行わず、「CURRENT-DATE」を使用するようにしましょう。

日付、時刻取得のCOBOL(コボル)プログラムの活用法

COBOL(コボル)言語の日付、時刻の基本的な書き方や使用例について理解いただけたでしょうか?最後に活用法として、COBOL(コボル)言語の日付、時刻とよく組み合わせて使用されるファイル更新処理についてご紹介します。

今までご紹介した書き方が理解いただけていれば、それ程難しい内容ではないと思います。今回ご紹介した活用法はデータベースの作成、更新などにも応用できますので、いろいろな処理で活用し、理解を深めていただければと思います。

サンプルプログラム:

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. DATE_SAMPLE04.
  3. ENVIRONMENT DIVISION.
  4. INPUT-OUTPUT SECTION.
  5. *>読み込みファイルを指定する
  6. FILE-CONTROL.
  7. SELECT READ-FILE ASSIGN TO 'read.txt'
  8. ORGANIZATION IS LINE SEQUENTIAL.
  9. *>書き込みファイルを指定する
  10. SELECT WRITE-FILE ASSIGN TO 'write.txt'.
  11. *>
  12. DATA DIVISION.
  13. FILE SECTION.
  14. FD READ-FILE.
  15. 01 IN-FILE-REC PIC X(12).
  16. FD WRITE-FILE.
  17. 01 OUT-FILE-REC PIC X(12).
  18. WORKING-STORAGE SECTION.
  19. 01 WK-DATE.
  20. 03 WK-DATE-8 PIC X(08).
  21. 03 PIC X(13).
  22. PROCEDURE DIVISION.
  23. *> 日付を取得
  24. MOVE FUNCTION CURRENT-DATE(1:8) TO WK-DATE-8.
  25. *>
  26. *> ファイルの読み込み
  27. OPEN INPUT READ-FILE.
  28. READ READ-FILE
  29. END-READ.
  30. CLOSE READ-FILE.
  31. *>
  32. *> ファイルの書き込み
  33. OPEN OUTPUT WRITE-FILE.
  34. MOVE 'TEST' TO OUT-FILE-REC(1:4).
  35. MOVE WK-DATE-8 TO OUT-FILE-REC(5:8).
  36. WRITE OUT-FILE-REC.
  37. CLOSE WRITE-FILE
  38. DISPLAY "処理完了".
  39. STOP RUN.
  40. END PROGRAM DATE_SAMPLE04.

入力ファイル:

基礎-日付時刻-入力ファイル

出力ファイル:(2019年1月9日に処理を実行した場合の結果)

基礎-日付時刻-出力ファイル

実行結果:

基礎-日付時刻-実行結果

いかがでしたでしょうか?COBOL(コボル)言語の日付、時刻の取得は、年、月、日、時、分、それぞれに組込み関数が用意されている訳ではないので、ご自身で必要部分を抜出し加工して使用する必要がある事がご理解いただけたでしょうか。

COBOL(コボル)言語の日付、時刻を扱う処理は、データの更新時に更新日時を取得して、ファイルやデータベースに記録させるなど、頻繁に登場するシーンがありますので、プログラムをテンプレート化しておいたり、サブプログラム化しておくと、効率のよい開発に繋がりますので、是非ご自身で工夫しながら活用していただければと思います。

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門