COBOLのCURRENT-DATE関数を使いこなすための8つのステップ

COBOLのCURRENT-DATE関数を学ぶためのガイドブックCOBOL
この記事は約13分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、COBOLのCURRENT-DATE関数を使いこなすための基礎から応用まで、一歩一歩理解できるようになります。

COBOLは、ビジネス用途に特化したプログラミング言語ですが、その中でもCURRENT-DATE関数は特に重要な機能の一つです。

この関数をマスターすることで、プログラムに現在の日付や時刻を取り込むことが可能になります。

これからCOBOLを学ぶ初心者の方にも、この記事が役立つことを願っています。

●COBOLとは

COBOL(Common Business-Oriented Language)は、ビジネス処理を中心としたプログラミング言語です。

1959年に開発されて以来、銀行や保険、政府機関などで広く使用されてきました。

COBOLの特徴は、その読みやすさとビジネスロジックに特化した構造にあります。

例えば、COBOLでは英語のような自然言語を模倣した構文を使用しており、プログラムの可読性が高いことが挙げられます。

○COBOLの基本的な概要

COBOLプログラミングの基本は、データ構造と処理手順の明確な分離にあります。

この言語では、データは「DATA DIVISION」に、プログラムの処理手順は「PROCEDURE DIVISION」に記述されます。

これにより、ビジネスデータの管理と処理ロジックの開発を効率的に行うことができます。

また、COBOLはその堅牢性とスケーラビリティにおいても高く評価されており、大規模なビジネスアプリケーションにおいても安定した動作を提供します。

COBOLのプログラミングには、様々な特徴がありますが、その中でも「CURRENT-DATE関数」の使い方を理解することは、日付や時刻を扱う多くのビジネスアプリケーションで重要です。

この関数により、システムの現在日付や時刻を取得し、それをプログラム内で利用することができます。

●CURRENT-DATE関数の基本

COBOLにおけるCURRENT-DATE関数は、現在の日付や時刻を取得するための重要な機能です。

この関数は、プログラムが実行される瞬間の日付や時刻情報を提供し、これを様々なビジネスアプリケーションで活用することができます。

例えば、日付に基づいた処理の実行、レポートのタイムスタンプ付け、または期間の計算など、多岐にわたる用途で使用されます。

CURRENT-DATE関数は、日付と時刻の両方を含む文字列を返します。

この関数の出力形式は通常、YYYYMMDDHHMMSSmmmの形式で、これはそれぞれ年、月、日、時、分、秒、ミリ秒を表します。

この詳細な情報により、アプリケーションは正確なタイミングで特定の操作を実行することが可能になります。

○CURRENT-DATE関数の概要と重要性

COBOLプログラムにおいて、CURRENT-DATE関数の重要性は非常に高いです。

特に、ビジネスにおける日付と時刻は、トランザクションの記録、レポートの生成、時間に依存する処理など、多くの業務において中心的な役割を果たします。

CURRENT-DATE関数を使用することで、これらの業務を効率的かつ正確に行うことができます。

また、この関数はビジネスロジックの一部として組み込むことができるため、日付や時刻に基づく条件分岐や計算をプログラム内で直接実行することが可能です。

例えば、特定の日付が祝日かどうかを判断する処理や、特定の期間内でのビジネス処理の実行など、日付に依存するロジックを簡単に組み込むことができます。

●CURRENT-DATE関数の使い方

COBOLにおけるCURRENT-DATE関数の使い方は非常にシンプルです。

この関数は、プログラムが実行される時点での現在の日付と時刻を提供します。

これを利用することで、プログラム内で日付に基づいた処理を行うことができます。

例えば、レポートの生成日時を記録したり、特定の日付に基づく処理を実行する場合などに役立ちます。

○サンプルコード1:現在の日付を取得する

下記のサンプルコードは、CURRENT-DATE関数を使用して現在の日付と時刻を取得し、それを表示する方法を表しています。

IDENTIFICATION DIVISION.
PROGRAM-ID. DateExample.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CURRENT-DATE-AND-TIME PIC X(20).
PROCEDURE DIVISION.
    MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-AND-TIME.
    DISPLAY "現在の日付と時刻: " CURRENT-DATE-AND-TIME.
    STOP RUN.

このコードでは、まずFUNCTION CURRENT-DATEを使用して現在の日付と時刻を取得し、それをCURRENT-DATE-AND-TIME変数に格納しています。

そして、DISPLAY文を使用してこの値を画面に表示しています。

このサンプルコードを実行すると、プログラムが実行された時点での日付と時刻が画面に表示されます。

○サンプルコード2:日付データのフォーマット変更

COBOLでは、取得した日付データのフォーマットを変更することも可能です。

下記のサンプルコードでは、CURRENT-DATE関数で取得した日付と時刻のデータを特定のフォーマットに変更する方法を表しています。

IDENTIFICATION DIVISION.
PROGRAM-ID. DateFormatExample.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CURRENT-DATE-AND-TIME PIC X(20).
01 FORMATTED-DATE.
   03 YEAR  PIC 9(4).
   03 MONTH PIC 9(2).
   03 DAY   PIC 9(2).
PROCEDURE DIVISION.
    MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-AND-TIME.
    UNSTRING CURRENT-DATE-AND-TIME DELIMITED BY SPACE
        INTO YEAR, MONTH, DAY.
    DISPLAY "年: " YEAR " 月: " MONTH " 日: " DAY.
    STOP RUN.

このコードでは、UNSTRING文を使用して、CURRENT-DATE関数で取得した日付と時刻の文字列を年、月、日に分割しています。

そして、これらの値をDISPLAY文を使用して画面に表示しています。

このサンプルコードを実行すると、日付が「年、月、日」という形式で画面に表示されます。

●CURRENT-DATE関数の応用例

COBOLのCURRENT-DATE関数は、単に日付や時刻を取得するだけでなく、さまざまな応用が可能です。

例えば、日付に基づいた条件分岐や計算処理など、ビジネスロジックに直接組み込むことができます。

これにより、プログラムの柔軟性と機能性が大幅に向上します。

○サンプルコード3:日付を利用した条件分岐

下記のサンプルコードは、特定の日付に基づいて異なる処理を行う方法を表しています。

例えば、週末かどうかによって処理を変更する場合などに利用できます。

IDENTIFICATION DIVISION.
PROGRAM-ID. DateConditional.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CURRENT-DATE-AND-TIME PIC X(20).
01 DAY-OF-WEEK PIC 9(1).
PROCEDURE DIVISION.
    MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-AND-TIME.
    COMPUTE DAY-OF-WEEK = FUNCTION DAY-OF-WEEK (CURRENT-DATE-AND-TIME).
    IF DAY-OF-WEEK > 5
        DISPLAY "週末です。特別な処理を行います。"
    ELSE
        DISPLAY "平日です。通常の処理を行います。"
    END-IF.
    STOP RUN.

このコードでは、FUNCTION DAY-OF-WEEKを使用して、現在の日付が週の何日目かを計算しています。

その後、条件分岐を用いて、週末か平日かに応じて異なる表示を行っています。

○サンプルコード4:日付の計算処理

日付の計算も、CURRENT-DATE関数を使用して行うことができます。

下記のサンプルコードは、現在の日付から特定の日数を加算または減算する方法を表しています。

IDENTIFICATION DIVISION.
PROGRAM-ID. DateCalculation.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CURRENT-DATE-AND-TIME PIC X(20).
01 FUTURE-DATE PIC 9(8).
01 DAYS-TO-ADD PIC 9(3) VALUE 30.
PROCEDURE DIVISION.
    MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-AND-TIME.
    COMPUTE FUTURE-DATE = FUNCTION DATE-OF-INTEGER 
        (FUNCTION INTEGER-OF-DATE (CURRENT-DATE-AND-TIME) + DAYS-TO-ADD).
    DISPLAY "30日後の日付: " FUTURE-DATE.
    STOP RUN.

このコードでは、FUNCTION DATE-OF-INTEGERFUNCTION INTEGER-OF-DATEを使用して、現在の日付に30日を加算しています。

このような日付の計算は、予定の管理や期限の設定など、多くの場面で有用です。

●COBOLプログラミングの注意点

COBOLプログラミングを行う際、特に日付データの取り扱いには細心の注意が必要です。

日付データはビジネスアプリケーションの核となる部分であり、その扱い方によってプログラムの正確性や信頼性が大きく左右されます。

日付データのフォーマットは、プログラム全体で一貫性を持たせることが重要です。

また、入力される日付データの妥当性を確認することも重要で、不正な日付データを処理しようとするとエラーが発生する可能性があります。

さらに、日付を加算または減算する際のエラー処理も重要で、月末や閏年を考慮した適切な処理が求められます。

○日付データの取り扱いにおける注意点

COBOLプログラミングにおける日付データの取り扱いには、いくつかの注意点があります。

まず、日付データのフォーマットはプログラム全体で統一する必要があります。

異なるフォーマットの日付データが混在すると、データの比較や計算が困難になるため、一貫したフォーマットの使用が推奨されます。

また、日付データの妥当性のチェックは欠かせません。

日付データが不正な値である場合、プログラムが予期せぬエラーを引き起こす原因となり得ます。

さらに、日付の計算時には、月末や閏年などの特別なケースを考慮したエラー処理が必要です。

○プログラミング時の一般的なエラーと対処法

COBOLプログラミングでは、いくつかの一般的なエラーがあります。

その中でも特に注意すべきは、構文エラー、ロジックエラー、そして実行時エラーです。

構文エラーはCOBOLの厳格な構文規則に違反した場合に発生し、通常はコンパイラによって指摘されます。

ロジックエラーはプログラムが誤った結果を出力する原因となり、コードのレビューやデバッグを通じて特定する必要があります。

また、実行時エラーはプログラムの実行中に発生し、データの不正な取り扱いやリソースの不足が原因となることが多いです。

これらのエラーを避けるためには、構文を正しく理解し、プログラムのロジックを慎重に検討し、適切なエラー処理を行うことが重要です。

●COBOLでの日付データのカスタマイズ方法

COBOLプログラミングでは、日付データのカスタマイズがしばしば必要になります。

これには、特定のフォーマットへの日付データの変換や、ビジネスロジックに合わせた日付データの調整が含まれます。

日付データのカスタマイズは、レポートの生成、データのアーカイビング、ユーザーインターフェースのカスタマイズなど、多岐にわたる用途で利用されます。

効果的なカスタマイズを行うためには、日付データの構造を正確に理解し、目的に応じたフォーマット変換や計算処理を適切に行う必要があります。

○カスタムフォーマットの作成

日付データのカスタムフォーマットの作成は、COBOLプログラミングにおいて重要なスキルです。

例えば、特定のフォーマットに従って日付データを表示する必要がある場合、日付データをそのフォーマットに変換する処理が必要です。

下記のサンプルコードは、日付データを「YYYY/MM/DD」フォーマットに変換する方法を表しています。

IDENTIFICATION DIVISION.
PROGRAM-ID. CustomDateFormat.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CURRENT-DATE-AND-TIME PIC X(20).
01 FORMATTED-DATE PIC X(10).
PROCEDURE DIVISION.
    MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-AND-TIME.
    MOVE CURRENT-DATE-AND-TIME(1:4) TO FORMATTED-DATE(1:4).
    MOVE "/" TO FORMATTED-DATE(5:1).
    MOVE CURRENT-DATE-AND-TIME(5:2) TO FORMATTED-DATE(6:2).
    MOVE "/" TO FORMATTED-DATE(8:1).
    MOVE CURRENT-DATE-AND-TIME(7:2) TO FORMATTED-DATE(9:2).
    DISPLAY "フォーマット変更後の日付: " FORMATTED-DATE.
    STOP RUN.

このコードでは、FUNCTION CURRENT-DATEで取得した日付データを「年/月/日」の形式でFORMATTED-DATEに格納し、その後画面に表示しています。

○ビジネスロジックへの日付データの組み込み

ビジネスロジックに日付データを組み込む際は、日付がビジネスプロセスの要件を満たすように調整することが必要です。

これには、期限の計算、イベントのスケジューリング、記録の日付スタンプ付けなどが含まれます。

下記のサンプルコードは、特定の期間後の日付を計算し、ビジネスロジックに組み込む方法を表しています。

IDENTIFICATION DIVISION.
PROGRAM-ID. DateInBusinessLogic.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 CURRENT-DATE-AND-TIME PIC X(20).
01 TARGET-DATE PIC 9(8).
01 DAYS-ADDED PIC 9(3) VALUE 90.
PROCEDURE DIVISION.
    MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-AND-TIME.
    COMPUTE TARGET-DATE = FUNCTION DATE-OF-INTEGER 
        (FUNCTION INTEGER-OF-DATE (CURRENT-DATE-AND-TIME) + DAYS-ADDED).
    DISPLAY "90日後の日付: " TARGET-DATE.
    STOP RUN.

このコードでは、現在の日付に90日を加算し、その結果をTARGET-DATEに格納しています。

このように日付データをビジネスロジックに組み込むことで、スケジュール管理や期限追跡などの処理を効率的に行うことができます。

まとめ

この記事では、COBOLプログラミングにおけるCURRENT-DATE関数の基本から応用、さらには日付データのカスタマイズ方法までを詳しく解説しました。

初心者にも理解しやすいよう、具体的なサンプルコードを用いて、日付データの取得、フォーマット変更、ビジネスロジックへの組み込み方を紹介しました。

これらの知識と技術を身につけることで、COBOLプログラマーとしての日付データの取り扱い能力が大きく向上するでしょう。

日付データはビジネスアプリケーションにおいて重要な要素であるため、その正確な理解と適切な使用は、効率的で信頼性の高いプログラミングに不可欠です。