COBOL言語の関数「DAY-OF-INTEGER」について理解しよう! | 用語辞典

COBOL(コボル)言語の予約語DAY-OF-INTEGERを使った日付の変換とは

辞典・辞書-DAY-INTEGER-イメージ

COBOL(コボル)言語のDAY-OF-INTEGER関数とは?

COBOL(コボル)の組込み関数であるDAY-OF-INTEGER関数は、グレゴリオ通日からユリウス日を求めたい場合に使用します。グレゴリオ通日とは、現行の太陽暦として日本を含む世界各国で用いられているグレゴリオ暦の1601年1月1日を第1日とした通日を指します。一方ユリウス日とは、西暦紀元前4713年1月1日を第1日とした通日を指します。では早速COBOL言語での使い方について見ていきましょう。

書き方(DAY-OF-INTEGER関数):

FUNCTION DAY-OF-INTEGER(引数1)

・関数の型:整数

・引数1:グレゴリオ暦1601年1月1日以降の通算日数を表す正の整数

・戻り値:YYYYDDD形式を取り、YYYYはグレゴリオ暦の暦年、DDD はその年の通算日

使用例:

辞典・辞書-DAY-INTEGER-使用例

実行結果:

辞典・辞書-DAY-INTEGER-実行結果

DAY-OF-INTEGER関数のCOBOL(コボル)言語における基本事項やルールについて

1.「DAY-OF-INTEGER」の間の空白や改行は、自由に設定できます。

2.組込み関数の前には予約語「FUNCTION」を指定する必要があります。

3.引数1は正の整数である必要があります。

COBOL(コボル)言語のDAY-OF-INTEGER関数を扱う上での注意点

COBOL言語のDAY-OF-INTEGER関数は、引数としてグレゴリオ通日を指定する必要がありますが、通常グレゴリオ通日を意識している方はいないでしょう。そのため、引数として指定するグレゴリオ通日は、先ほどの使用例でもご紹介している別の関数「INTEGER-OF-DATE」を用いて求める事が一般的です。「INTEGER-OF-DATE」は、標準日付からグレゴリオ通日に変換する関数です。引数として標準日付を指定する事で特に1601年1月1日から何日経っているかを意識する事なく通日を求める事ができます。

DAY-OF-INTEGER関数を使ったCOBOL(コボル)プログラムの活用法

DAY-OF-INTEGER関数は、先ほどご紹介した通り正の整数であるグレゴリオ通日をユリウス日に変換する関数でした。ユリウス日と言っても難しく考える必要はなく、その年の通算日が求められる関数と考えていいでしょう。ここでは活用法として、2022年12月31日、2000年12月31日、2004年12月31日、1900年12月31日のユリウス日の結果を確認する簡単なプログラムをご紹介します。閏年かそうでないかによって、その年の通算日が変わる事が確認いただけるかと思います。

サンプルプログラム(DAY-OF-INTEGER2):

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. DAY-INTEGER_SAMPLE2.
  3. ENVIRONMENT DIVISION.
  4. INPUT-OUTPUT SECTION.
  5. DATA DIVISION.
  6. WORKING-STORAGE SECTION.
  7. 01 WK-AREA.
  8. 03 WK-YYMMDD PIC X(08).
  9. 03 WK-DAMMY PIC X(13).
  10. PROCEDURE DIVISION.
  11. MOVE FUNCTION CURRENT-DATE TO WK-AREA.
  12. DISPLAY FUNCTION DAY-OF-INTEGER(FUNCTION INTEGER-OF-DATE(WK-YYMMDD)).
  13. DISPLAY FUNCTION DAY-OF-INTEGER(FUNCTION INTEGER-OF-DATE(20221231)).
  14. DISPLAY FUNCTION DAY-OF-INTEGER(FUNCTION INTEGER-OF-DATE(20001231)).
  15. DISPLAY FUNCTION DAY-OF-INTEGER(FUNCTION INTEGER-OF-DATE(20041231)).
  16. DISPLAY FUNCTION DAY-OF-INTEGER(FUNCTION INTEGER-OF-DATE(19001231)).
  17. STOP RUN.

実行結果(DAY-OF-INTEGER2):

辞典・辞書-DAY-INTEGER-実行結果

今回ご紹介したDAY-OF-INTEGERのサンプルプログラムは、グレゴリオ通日をユリウス日に変換する関数でした。ユリウス日などあまり身に覚えのない関数は敬遠されがちですが、このように日付も通算日で確認できるなど様々な変換方法が存在します。使用した事がない方は、是非この機会に一度サンプルプログラムを実行してみて機能の確認を行うとともに、実際のプログラムに応用していっていただければと思います。

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

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

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

COBOL入門のカテゴリー

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