- 締切済み
[COBOL]日付比較
現在COBOLで以下のようなプログラムを作成しています。 受付日と今日の日付を比較して1ヶ月経過したデータと振り分ける。 1ヶ月経過したものは、削除分のデータとしてディスクに保存 1ヶ月経過していないものは、保存分のデータとしてディスクに保存 ただし、入力データは、受付日(6桁)に書かれているのは6桁(例:080524) 本日の日付は、システム時間で8桁(例:20080824) このままでは、桁数が違うので、比較することができないため、受付日を8桁にしたいと考えています。 つまり、「'20'+受付日」としたいのです。 この場合、どのようにすればよろしいのでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- LN-TF
- ベストアンサー率53% (320/596)
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を他用せないのならばこれだけで良い) 等など色々考えられます。
- bin-chan
- ベストアンサー率33% (1403/4213)
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'に見えます。
補足
bin-chanさん、回答ありがとうございます。 使用しているのは、COBOLIIです。
補足
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). です。