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:
使用例は、プログラムのコンパイル日付の取得結果をWK-DATEというデータ項目に格納し、結果を画面表示するというプログラムです。プログラムのコンパイル日付ですので、「CURRENT-DATE」と違い、何度処理を実行しても、プログラムをリコンパイルするまで実行結果が変わらない事が確認いただけるかと思います。
実行結果1:(2019年1月9日にプログラムをコンパイルしていた場合の実行結果)
書き方2:ジュリアンデートを取得する
FUNCTION DAY-OF-INTEGER(グレゴリオ通日)
使用例2:
使用例は、「DAY-OF-INTEGER」を使用して取得したジュリアンデートを、WK-RESULTというデータ項目に格納し、結果を画面表示するというプログラムです。「DAY-OF-INTEGER」は引数としてグレゴリオ通日を使用しますので、まず現在日付を「CURRENT-DATE」で取得した後、「INTEGER-OF-DATE」という組込み関数を使用して、現在日付からグレゴリオ通日を求めます。そして、その結果を「DAY-OF-INTEGER」の引数として渡す事でジュリアンデートを求める事ができます。
実行結果2:(2019年1月13日に処理を実行した場合の結果)
COBOL(コボル)言語における日付、時刻取得の基本事項や注意事項
- 組込み関数((例) FUNCTION CURRENT-DATE等)の間の空白や改行は、自由に設定できます。
- ACCEPT文(ACCEPT データ項目 FROM DATE)を使用する事により、年(西暦下2桁)、月、日を取得する事もできますが、年上2桁を省略した事によりプログラムが誤動作したという2000年問題を再燃させないためにもこの使用は行わず、「CURRENT-DATE」を使用するようにしましょう。
日付、時刻取得のCOBOL(コボル)プログラムの活用法
COBOL(コボル)言語の日付、時刻の基本的な書き方や使用例について理解いただけたでしょうか?最後に活用法として、COBOL(コボル)言語の日付、時刻とよく組み合わせて使用されるファイル更新処理についてご紹介します。
今までご紹介した書き方が理解いただけていれば、それ程難しい内容ではないと思います。今回ご紹介した活用法はデータベースの作成、更新などにも応用できますので、いろいろな処理で活用し、理解を深めていただければと思います。
サンプルプログラム:
- IDENTIFICATION DIVISION.
- PROGRAM-ID. DATE_SAMPLE04.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- *>読み込みファイルを指定する
- FILE-CONTROL.
- SELECT READ-FILE ASSIGN TO 'read.txt'
- ORGANIZATION IS LINE SEQUENTIAL.
- *>書き込みファイルを指定する
- SELECT WRITE-FILE ASSIGN TO 'write.txt'.
- *>
- DATA DIVISION.
- FILE SECTION.
- FD READ-FILE.
- 01 IN-FILE-REC PIC X(12).
- FD WRITE-FILE.
- 01 OUT-FILE-REC PIC X(12).
- WORKING-STORAGE SECTION.
- 01 WK-DATE.
- 03 WK-DATE-8 PIC X(08).
- 03 PIC X(13).
- PROCEDURE DIVISION.
- *> 日付を取得
- MOVE FUNCTION CURRENT-DATE(1:8) TO WK-DATE-8.
- *>
- *> ファイルの読み込み
- OPEN INPUT READ-FILE.
- READ READ-FILE
- END-READ.
- CLOSE READ-FILE.
- *>
- *> ファイルの書き込み
- OPEN OUTPUT WRITE-FILE.
- MOVE 'TEST' TO OUT-FILE-REC(1:4).
- MOVE WK-DATE-8 TO OUT-FILE-REC(5:8).
- WRITE OUT-FILE-REC.
- CLOSE WRITE-FILE
- DISPLAY "処理完了".
- STOP RUN.
- END PROGRAM DATE_SAMPLE04.
入力ファイル:
出力ファイル:(2019年1月9日に処理を実行した場合の結果)
実行結果:
いかがでしたでしょうか?COBOL(コボル)言語の日付、時刻の取得は、年、月、日、時、分、それぞれに組込み関数が用意されている訳ではないので、ご自身で必要部分を抜出し加工して使用する必要がある事がご理解いただけたでしょうか。
COBOL(コボル)言語の日付、時刻を扱う処理は、データの更新時に更新日時を取得して、ファイルやデータベースに記録させるなど、頻繁に登場するシーンがありますので、プログラムをテンプレート化しておいたり、サブプログラム化しておくと、効率のよい開発に繋がりますので、是非ご自身で工夫しながら活用していただければと思います。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの
求人情報
が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
応募条件
※2020年5月31日を以って、締切りました。
18歳~28歳の方。
正社員採用において、北川社長の著書『祈り方が9割』を読んで感想文を事前に提出すると、無条件で最終面接まで進むことができます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
- COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
- COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
- 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
- COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
- COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
- 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
- COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
- COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
- COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
- COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
- COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
- COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
- COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
- COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
- COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
- COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典