BASE2DATE:PROCEDURE /* Convert base date into MM/DD/YY format */ ARG BA BA=BA+1 DO I=1980 OB=BA BA=BA-YDAYS(I) IF BA<=0 THEN LEAVE END YY=I DM=GREG(OB,YY) /* convert offset to MM/DD/YY */ RETURN DM /***GET YDAYS */ YDAYS:PROCEDURE /* How many days are in a given year */ ARG YY IF LEAP(YY) THEN RETURN 366 ELSE RETURN 365 /***GET LEAP */ LEAP:PROCEDURE /* Return 1 if parm is leap year */ ARG YY IF LENGTH(YY)=2 THEN DO IF YY>80 THEN YY='19'YY ELSE YY='20'YY END RETURN (YY%4*4=YY) *GET GREG GREG:PROCEDURE /* X -> DD/MM */ ARG X,YY IF X>366 THEN RETURN -1 DO I=1 TO 12 OX=X X=X-DAYS(I,YY) IF X<=0 THEN LEAVE END MM=I DD=OX RETURN RIGHT(MM,2,0)'/'RIGHT(DD,2,0)'/'RIGHT(YY,2) /***GET DAYS */ DAYS:PROCEDURE /* We've no less days... */ /* Proc returns number of days in specific month */ ARG MM,YY IF LENGTH(YY)=2 THEN DO IF YY>80 THEN YY='19'YY ELSE YY='20'YY END IF MM=2 THEN RETURN 28+LEAP(YY) /* Dni Ada */ AD='31 28 31 30 31 30 31 31 30 31 30 31' RETURN WORD(AD,MM)