1 REM 2 REM Handling program for CALDAY 3 REM 5 DIM FLAG(2) 10 FLAG(0)=1 : PRINT 15 PRINT "Julian days to calendar date" 20 PRINT : FLAG(2)=0 25 INPUT "Convert JD (1) or DJD (2)"; ANS 30 IF ANS=1 THEN GOTO 45 35 INPUT "J days since 1900 Jan 0.5"; DJD 40 GOTO 55 45 INPUT "Julian date"; JD 50 DJD=JD-2415020! 55 GOSUB 1200 : ID=INT(DY) 60 PRINT "Calendar date is: "; ID;"/";MN;"/";YR 65 X=F*24 : SW1=1 : GOSUB 1000 70 PRINT " ... and time is: "; XD;":";XM;":";XS 75 PRINT 80 INPUT "Again (Y or N)"; AN$ 85 IF AN$="Y" THEN GOTO 20 90 STOP 997 REM 998 REM Subroutine MINSEC 999 REM 1000 IF SW1=-1 THEN GOTO 1035 1005 SN=SGN(X) : XP=ABS(X) : XD=INT(XP) 1010 A=(XP-XD)*60 : XM=INT(A) 1015 XS=INT((A-XM)*600+.5)/10 1020 S$="+" 1025 IF SN=-1 THEN S$="-" 1030 RETURN 1035 SN=+1 1040 IF XD<0 OR XM<0 OR XS<0 THEN SN=-1 1045 XD1=ABS(XD) : XM1=ABS(XM) : XS1=ABS(XS) 1050 X=((((XS1/60)+XM1)/60)+XD1)*SN 1055 RETURN 1197 REM 1198 REM Subroutine CALDAY 1199 REM 1200 IF FLAG(2)=1 THEN RETURN 1205 DEF FNLIF(W)=INT(W)-(FLAG(0)-1)*INT((SGN(W)-1)/2) 1210 D=DJD+.5 : I=FNLIF(D) : F=D-I 1215 IF F=1 THEN F=0 : I=I+1 1220 IF I <= -115860! THEN GOTO 1235 1225 A=FNLIF((I/36524.25)+.99835726#)+14 1230 I=I+1+A-FNLIF(A/4) 1235 B=FNLIF((I/365.25)+.802601) 1240 CE=I-FNLIF((365.25*B)+.750001)+416 1245 G=FNLIF(CE/30.6001) : MN=G-1 1250 DY=CE-FNLIF(30.6001*G)+F : YR=B+1899 1255 IF G>13.5 THEN MN=G-13 1260 IF MN<2.5 THEN YR=B+1900 1265 IF YR<1 THEN YR=YR-1 1270 FLAG(2)=1 : RETURN