18 lines
835 B
Text
18 lines
835 B
Text
LPCK CSECT
|
|
USING LPCK,15
|
|
STM 0,12,20(13) STORE CALLER REGS
|
|
LM 1,2,0(1) R1 -> CCYY, R2 -> DOUBLE-WORD WORK AREA
|
|
PACK 0(8,2),0(4,1) PACK CCYY INTO WORK AREA
|
|
CVB 0,0(2) CONVERT TO BINARY (R0 = CCYY)
|
|
SRDL 0,32 R0|R1 = CCYY
|
|
LA 2,100 R2 = 100
|
|
DR 0,2 DIVIDE CCYY BY 100: R0 = YY, R1 = CC
|
|
LTR 0,0 YY = 0? IF CCYY DIV BY 100, LY IFF DIV BY 400
|
|
BZ A YES: R0|R1 = CC; CCYY DIV BY 100, TEST CC
|
|
SRDL 0,32 NO: R0|R1 = YY; CCYY NOT DIV BY 100, TEST YY
|
|
A LA 2,4 DIVISOR = 4; DIVIDEND = YY, OR DIV BY 100 CC
|
|
DR 0,2 DIVIDE BY 4: R0 = REMAINDER, R1 = QUOTIENT
|
|
LR 15,0 LOAD REMAINDER: IF 0, THEN LEAP YEAR
|
|
LM 0,12,20(13) RESTORE REGS
|
|
BR 14
|
|
END
|