• 締切済み

[COBOL]日付比較

現在COBOLで以下のようなプログラムを作成しています。 受付日と今日の日付を比較して1ヶ月経過したデータと振り分ける。  1ヶ月経過したものは、削除分のデータとしてディスクに保存  1ヶ月経過していないものは、保存分のデータとしてディスクに保存 ただし、入力データは、受付日(6桁)に書かれているのは6桁(例:080524) 本日の日付は、システム時間で8桁(例:20080824) このままでは、桁数が違うので、比較することができないため、受付日を8桁にしたいと考えています。 つまり、「'20'+受付日」としたいのです。 この場合、どのようにすればよろしいのでしょうか? よろしくお願いします。

みんなの回答

  • LN-TF
  • ベストアンサー率53% (320/596)
回答No.2

ANo1と殆ど変わらないのですが・・・ 01 WK-DATE.    03 X8DATE   PIC  X(08).   03 X8DATE-R REDEFINES X8DATE.       05 YY20  PIC  X(02).      05 X6DATE        07 X6YY PIC  X(02).        07 X6MMDD PIC X(04). ・・・・・      IF X6YY > '60' MOVE '19' TO X6YY ELSE '20' TO X6YY ENDIF. 或いは。 01 WK-DATE.    03 X8DATE   PIC  9(08).   03 X8DATE-R REDEFINES X8DATE.       05 YY20  PIC  9(02).      05 X6DATE        07 X6YY PIC  9(02).        07 X6MMDD PIC 9(04). ・・・・・      IF X6YY > 60 MOVE 19 TO X6YY ELSE 20 TO X6YY ENDIF.  データが2000年以降と決まっているならば、 01 WK-DATE.    03 X8DATE   PIC  9(08).   03 X8DATE-R REDEFINES X8DATE.       05 YY20  PIC  9(02) VALUE 20.      05 X6DATER PIC 9(6) VALUE ZERO. ・・・・  MOVE 元の6桁日付 TO X6DATE. (比較はX8DATEとシステム日付の一カ月前と比較する) (WK-DATEを他用せないのならばこれだけで良い) 等など色々考えられます。  

lovelace
質問者

補足

LN-TFさん、回答ありがとうございます。 補足させていただきます。 ・判定するのは、年月のみ ・現在年月の1ヶ月前の年月を別のエリアで計算する ・受付年月は、   01 WORK-AREA.    05 WK-UKETUKEBI      10 WK-UKETUKE-YM PIC X(04).      10 FILLER PIC X(02).   01 DATE-AREA.    05 SISUTEMU-DATE.      10 SISUTEMU-NENGETU PIC X(06).      10 FILLER PIC X(02). です。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

COBOLといっても何COBOLなのかな? ずいぶん離れて久しいので間違ってたらすみません。 REDEFINESを利用して以下のように宣言。 01 X8DATE.    03 WK-PUNIPUNI   PIC  X(08). 01 X8DATE-R REDEFINES X8DATE.     03 YY20   PIC  X(02).    03 X6DATE   PIC  X(06). 【使い方】 初回のみYY20に '20'を放り込む。 以降、X6DATEに '080524'を放り込んでからX8DATEを参照すると '20080524'に見えます。

lovelace
質問者

補足

bin-chanさん、回答ありがとうございます。 使用しているのは、COBOLIIです。

関連するQ&A