**===============================================================
** ID : @CHKYMD K.ISHIOKA
** NAME :日付チェック
** FUNC :日付を取得しチェックする。
** VER : 01.00.00
** NOTE :6桁日付でも、8桁日付でもよい
H*===============================================================
H Y/
F*===============================================================
E*===============================================================
E* E仕様書
E*---------------------------------------------------------------
E LDY 12 12 2 0 名称テーブル
I*===============================================================
I* ワーク用定義
I DS
I 01 080W8YMD
I 01 040W@YYYY
I 03 080W6YMD
I 03 040W@YY
I 05 060W@MM
I 07 080W@DD
I* 初期値を使った定数の定義
I DS
I I '0' 01 01 #OK
I I '1' 02 02 #NG
C*===============================================================
C* MAIN PART
C*===============================================================
C *ENTRY PLIST
C PARM P@DATE 80 処理日
C PARM P@RC 1 RET. CODE
C*---------------------------------------------------------------
C* 01.初期処理
C EXSR SBINZ 初期処理
C* 02.主処理
C EXSR SBMAIN 主処理
C* 03.終了処理
C EXSR SBEND 終了処理
C*
C*===============================================================
C* SBINZ 初期処理
C*===============================================================
C SBINZ BEGSR
C*
C Z-ADD000 J 70 WORK
C Z-ADD000 R 70 WORK
C Z-ADD000 W@LEAP 70 LEAP-YEAR
C* OT
C Z-ADDP@DATE W8YMD 日付分解
C MOVE #OK P@RC
C*
C ENDSR
C*===============================================================
C* SBMAIN 主処理
C*===============================================================
C SBMAIN BEGSR
C*
C*閏年判定
C EXSR SBLEAP --> W@LEAP
C*
+----C DO
| C*月の範囲チェック
|+---C W@MM IFLT 01
|| C W@MM ORGT 12
|| C MOVE #NG P@RC 月エラー
**===C LEAVE
|+---C ENDIF
| C*日の範囲チェック
|+---C W@DD IFLT 01
|| C W@DD ORGT LDY,W@MM
|| C MOVE #NG P@RC 日エラー
|+---C ENDIF
| C*
+----C ENDDO
C*
C ENDSR
C*===============================================================
C* SBLEAP 閏年チェック
C*===============================================================
C* 閏年かどうかを判定する。 1:LEAP 0:NON-LEAP
C*---------------------------------------------------------------
C SBLEAP BEGSR
C*
C W@YY DIV 04 J
C MVR R 余り
+----C R IFEQ 00
| C Z-ADD01 W@LEAP 閏年
+----C ELSE
| C Z-ADD00 W@LEAP 平年
+----C ENDIF
C*
C ADD W@LEAP LDY,2 2月の終り
C*
C ENDSR
C*===============================================================
C* SBEND END-PROCESS
C*===============================================================
C SBEND BEGSR
C*
C SETON LR LAST-RECORD
C RETRN RETURN
C* P@RC
C ENDSR
** LDY **
312831303130313130313031
|