1 REM 2 REM Handling program for GTIME 3 REM 5 DIM FLAG(3) 10 PRINT : FLAG(0)=1 15 PRINT "Greenwich time conversion" 20 PRINT : FLAG(3)=0 25 INPUT "... to sidereal time (Y/N)"; AN$ 30 IF AN$="Y" THEN SW2=1 : GOTO 50 35 INPUT "...... to solar time (Y/N)"; AN$ 40 IF AN$="Y" THEN SW2=-1 : GOTO 50 45 GOTO 100 50 PRINT 55 INPUT "Date (D,M,Y)"; DY,MN,YR 60 INPUT "..and time (H,M,S)"; XD,XM,XS 65 SW1=-1 : GOSUB 1000 : TIM=X 70 GOSUB 1300 : PRINT 75 IF SW2=-1 THEN GOTO 90 80 PRINT "GST: "; HS; ":"; MS; ":"; SS 85 GOTO 100 90 PRINT "GMT: "; HS; ":"; MS; ":"; SS 95 IF GTM<6.552001E-02 THEN PRINT "** ambiguous conversion **" 100 PRINT : INPUT "Again (Y/N)"; AN$ 105 IF AN$="Y" THEN GOTO 20 110 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 1097 REM 1098 REM Subroutine JULDAY 1099 REM 1100 IF FLAG(1)=1 THEN RETURN 1105 DEF FNITG(W)=INT(W)+FLAG(0)*SGN(W)*INT((SGN(W)-1)/2) 1110 MN1=MN : YR1=YR : FLAG(1)=1 : B=0 1115 IF YR1<0 THEN YR1=YR1+1 1120 IF MN<3 THEN MN1=MN+12 : YR1=YR1-1 1125 IF YR<1582 THEN GOTO 1145 1130 IF YR=1582 AND MN<10 THEN GOTO 1145 1135 IF YR=1582 AND MN=10 AND DY<15 THEN GOTO 1145 1140 A=INT(YR1/100) : B=2-A+INT(A/4) 1145 IF YR1<0 THEN GOTO 1155 1150 C=INT(365.25*YR1)-694025! : GOTO 1160 1155 C=FNITG((365.25*YR1)-.75)-694025! 1160 D=INT(30.6001*(MN1+1)) 1165 DJD=B+C+D+DY-.5 1170 RETURN 1297 REM 1298 REM Subroutine GTIME 1299 REM 1300 IF FLAG(3)=1 THEN GOTO 1340 1305 XMN=MN : XDY=DY : FLAG(3)=1 1310 FLAG(1)=0 : GOSUB 1100 : XDJD=DJD 1315 MN=1 : DY=0 : FLAG(1)=0 1320 GOSUB 1100 : T=DJD/36525! 1325 R=6.6460656#+(.051262+(T*2.581E-05))*T 1330 R1=2400*(T-((YR-1900)/100)) : B=24-R-R1 1335 T0=((XDJD-DJD)*.0657098)-B 1340 IF SW2=1 THEN GOTO 1365 1345 IF T0<0 THEN T0=T0+24 1350 GTM=TIM-T0 1355 IF GTM<0 THEN GTM=GTM+24 1360 GTM=GTM*.9972695677# : GOTO 1380 1365 GTM=(TIM*1.002737908#)+T0 1370 IF GTM>24 THEN GTM=GTM-24 1375 IF GTM<0 THEN GTM=GTM+24 1380 X=GTM : SW1=1 : GOSUB 1000 1385 HS=XD : MS=XM : SS=XS 1390 MN=XMN : DY=XDY : DJD=XDJD 1395 RETURN