Converts Gregorian calendar and Julian dates. Based on a TI-59 program by Charles Kluepfel.
Content
Source Code
10 REM "JULIAN DAY" © by Beb H.Jackson, 1984; ALL RIGHTS RESERVED
20 REM -- CONVERTS GREGORIAN CALENDER & JULIAN DAY
25 REM SOURCE-- TI-59 PROGRAM "JULIAN DAY NUMBER CALENDER" BY CHARLES KLUEPFEL 2/23/78
30 REM VARIABLES-- M-- MONTH D-- DATE Y-- YEAR E$-- ERA [AD or BC] JD--JULIAN DAY J-- JULIAN ACCUM
31 REM DIS--DISPLAY REG WD--WEEK DAY[1=SUN] F-- MENU FLAG WR--WORKING REG XT--DISPLAY<>TEST REG T -- TEST REGISTER
100 PRINT AT 1,5;"JULIAN DAY PROGRAM"
110 INPUT "DATE TO JD: 0 JD TO DATE: 1 CHOICE=";F
120 IF F=0 THEN GO TO 1000
130 IF F=1 THEN GO TO 3000
1000 INPUT "MONTH [1 TO 12]=";M
1005 PRINT "MONTH=";M
1010 INPUT "DATE [1 TO 31]=";D
1015 PRINT "DATE=";D
1020 INPUT "YEAR [XXXX]=";Y
1030 INPUT "[ AD or BC ]=";E$
1035 IF E$<>"AD" AND E$<>"BC" THEN GO TO 1030
1040 PRINT "YEAR=";Y;" ";E$
1045 IF E$="BC" THEN LET Y=-1*( Y-1)
2000 REM --GREG TO JULIAN
2010 LET J=0: LET JD=0
2015 IF (M-3)>=0 THEN GO TO 2050
2017 LET Y=Y-1
2020 LET M=M+12
2050 IF Y>=0 THEN GO TO 2100
2055 LET J=146097
2060 LET J=J*((INT (Y/400))-1)
2070 LET Y=Y-400*((INT (Y/400))-1)
2100 LET J=J+D
2110 LET J=J+INT (30.6*M-32.4)
2120 LET J=J+INT (365.25*Y)
2130 LET J=J+1721060-INT (.8+.75*INT (Y/100))
2140 LET DIS=JD
2145 LET JD=J
2150 LET DIS=J-DIS
2160 PRINT "JULIAN DAY=";DIS
2200 REM --DAY OF WEEK
2210 LET DIS=(JD+1)/7-INT ((JD+1)/7)
2220 LET WD=INT (7*DIS+1.5)
2221 IF WD=1 THEN PRINT "SUNDAY"
2222 IF WD=2 THEN PRINT "MONDAY"
2223 IF WD=3 THEN PRINT "TUESDAY"
2224 IF WD=4 THEN PRINT "WEDNESDAY"
2225 IF WD=5 THEN PRINT "THURSDAY"
2226 IF WD=6 THEN PRINT "FRIDAY"
2227 IF WD=7 THEN PRINT "SATURDAY"
2230 GO TO 1000
3000 REM --JULIAN DAY TO GREG
3005 INPUT "JULIAN DAY=";JD
3007 PRINT "JD=";JD
3010 LET T=JD+32045-1
3020 LET DIS=36524.25
3030 GO SUB 4000
3040 LET Y=100*DIS-4800
3050 LET DIS=365.25
3060 GO SUB 4000
3070 LET Y=Y+DIS
3080 LET T=T+91.4
3090 LET DIS=30.6
3105 GO SUB 4000
3110 LET M=DIS
3120 LET XT=DIS: LET DIS=T: LET T=XT
3130 LET D=DIS+1
3140 IF M<13 THEN GO TO 3154
3150 LET Y=Y+1: LET M=M-12
3154 LET E$="AD"
3155 IF Y<=0 THEN LET Y=ABS Y+1: LET E$="BC"
3160 PRINT M;"-";D;"-";Y;" ";E$
3170 GO TO 3000
4000 REM --JD TO GREG SBR
4010 LET XT=DIS: LET DIS=T: LET T=XT: LET J=T: LET SAVE=DIS+.9
4030 LET DIS=((DIS+.9)/T)
4031 IF DIS<0 THEN LET DIS=DIS+1
4032 LET DIS=INT DIS
4040 LET WR=DIS: LET DIS=J: LET J=WR
4050 LET DIS=-1*WR*DIS+SAVE
4060 LET XT=DIS: LET DIS=T: LET T=XT
4070 IF T<0 THEN LET T=T+1
4071 LET T=INT T
4080 LET DIS=J
4090 RETURN
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

