1. なぜ日付取得が重要なのか
業務システムにおいて「日付」は命です。請求書の発行日、データの更新日時、あるいは日次バッチの実行判定など、プログラムは常に「今、いつなのか」を知る必要があります。COBOLでは、この情報をOSから取得するためにACCEPT文を使用します。これを正しく使いこなすことは、正確な事務処理を行うための第一歩です。
2. 基礎知識:ACCEPT文とは?
ACCEPT文は、外部からデータを取り込むための命令です。キーボードからの入力だけでなく、OSが管理するシステム時刻や日付を取得する際にも使われます。
昔のCOBOLでは「DATE(YYMMDD)」という6桁の日付形式が主流でしたが、2000年問題以降、西暦4桁(YYYY)を含む形式が必須となりました。現在は、業務の要件に合わせて適切な形式を選択することが求められます。
3. 実装と解決策
日付を取得する際は、あらかじめ定義したデータ項目(ホスト変数)に対して、FROM句を使って値を格納します。重要なのは、受け皿となる変数の桁数と形式を合わせることです。例えば西暦4桁を取得する場合、受け皿となる変数は8桁(YYYYMMDD)で定義する必要があります。
4. サンプルプログラム
以下のプログラムは、現在のシステム日付を取得し、画面に表示するシンプルな例です。
IDENTIFICATION DIVISION.
PROGRAM-ID. DATE-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
- 日付を受け取るための8桁の変数を定義
01 WS-DATE PIC X(8).
- 時刻を受け取るための6桁の変数を定義
01 WS-TIME PIC X(6).
PROCEDURE DIVISION.
> システムから西暦8桁の日付を取得
ACCEPT WS-DATE FROM DATE YYYYMMDD.
> システムから時刻を取得
ACCEPT WS-TIME FROM TIME.
> 結果を画面に表示
DISPLAY “本日の日付は: ” WS-DATE.
DISPLAY “現在の時刻は: ” WS-TIME.
STOP RUN.
5. 応用・注意点:現場で陥りやすい罠
現場でよくある失敗は、「日付の型変換」を忘れることです。
ACCEPTで取得した日付はあくまで「文字データ」です。これを数値として計算に使いたい場合は、数字項目(PIC 9)に再定義するか、MOVEする必要があります。
また、バッチ処理で「日付が変わる瞬間」に処理がまたがると、プログラム内で整合性が取れなくなることがあります。厳密な処理が必要な場合は、プログラムの冒頭で一度だけACCEPTし、その値を処理全体で使い回すのが、バグを防ぐベテランの作法です。

コメント