1
0
mirror of https://github.com/rfivet/BCG101.git synced 2024-12-29 21:46:32 -05:00
BCG101/port/WEKDAY.BAS

143 lines
3.4 KiB
QBasic
Raw Normal View History

2024-05-02 22:18:48 -04:00
10 PRINT""
120PRINT
124 LET Y1 = 1970
130 PRINT" ENTER TODAY'S DATE IN THIS FORM: MONTH,DAY, YEAR";
140 INPUT M1,D1,Y1
150 IF Y1>100 THEN 170
160 LET Y1 = Y1 + 1900
170 DEF FNA(A)=INT(A/4)
180 DIM T(12)
190 DEF FNB(A)=INT(A/7)
210 FOR I= 1 TO 12
220 READ T(I)
230 NEXT I
240 PRINT
241PRINT"THIS PROGRAM DEMONSTRATES PDP-11 BASIC AND ALSO GIVES "
242PRINT"FACTS ABOUT A DATE OF INTEREST TO YOU"
244 PRINT
245 PRINT"ENTER DATE OF BIRTH IN THIS FORM: MO,DAY,YEAR";
250 INPUT M,D,Y
260 PRINT
270 IF Y - 75 >0 THEN 280
275 LET Y = Y+1900
280 LET I1 = INT((Y-1500)/100)
290 IF Y-1582<0 THEN 1300
300 LET A = I1*5+(I1+3)/4
310LET I2 = INT(A-FNB(A)*7)
320 LET Y2= INT(Y/100)
330 LET Y3 = INT(Y-Y2*100)
340 LET A = Y3/4+Y3+D+T(M)+I2
350 LET B = INT(A-FNB(A)*7)+1
360 IF M>2 THEN 470
370 IF Y3= 0 THEN 440
380 LET T1 = INT(Y-FNA(Y)*4)
390 IF T1<> 0 THEN 470
400 IF B<>0 THEN 420
410 LET B = 6
420 LET B = B-1
430 GOTO 470
440 LET A = I1-1
450 LET T1 = INT(A-FNA(A)*4)
460 IF T1 = 0 THEN 400
470 IF B <> 0 THEN 490
480 LET B = 7
490 IF (Y1*12+M1)*31+D1<(Y*12+M)*31+D THEN 550
500 IF (Y1*12+M1)*31+D1=(Y*12+M)*31+D THEN 530
510 PRINT M;"/";D;"/";Y;" WAS A ";
520 GOTO 570
530 PRINT M;"/";D;"/";Y;" IS A ";
540 GOTO 570
550 PRINT M;"/";D;"/";Y;" WILL BE A ";
570 IF B<>1 THEN 590
580 PRINT "SUNDAY"
590 IF B<>2 THEN 610
600 PRINT "MONDAY"
610 IF B<>3 THEN630
620 PRINT "TUESDAY"
630 IF B<>4 THEN 650
640 PRINT "WEDNESDAY"
650 IF B<>5 THEN 670
660 PRINT "THURSDAY"
670 IF B<>6 THEN 690
680 GOTO 1250
690 IF B<>7 THEN 710
700 PRINT "SATURDAY"
710 IF (Y1*12+M1)*31+D1=(Y*12+M)*31+D THEN 1120
720 LET I5=Y1-Y
730 PRINT
740 LET I6=M1-M
750 LET I7=D1-D
760 IF I7>=0 THEN 790
770 LET I6=I6-1
780 LET I7=I7+30
790 IF I6>=0 THEN 820
800 LET I5=I5-1
810 LET I6=I6+12
820 IF I5<0 THEN 1310
830 IF I7<>0 THEN 850
835 IF I6<>0 THEN 850
840 PRINT "****HAPPY BIRTHDAY*****"
850 PRINT " "," ","YEARS","MONTHS","DAYS"
860 PRINT "YOUR AGE ",I5,I6,I7
870 LET A8= (I5*365)+(I6*30)+I7+INT(I6/2)
880 LET K5=I5
890 LET K6=I6
900 LET K7=I7
920 LET E=Y+65
940 LET F=.35
950 PRINT "YOU HAVE SLEPT ",
960 GOSUB 1370
970 LET F=.17
980 PRINT "YOU HAVE EATEN ",
990 GOSUB 1370
1000 LET F=.23
1010 IF K5 > 3 THEN 1040
1020 PRINT"YOU HAVE PLAYED ",
1030 GOTO 1080
1040 IF K5 > 9 THEN 1070
1050 PRINT "YOU HAVE PLAYED/STUDIED",
1060 GOTO 1080
1070 PRINT "YOU HAVE WORKED/STUDIED",
1080 GOSUB 1370
1090 PRINT "YOU HAVE RELAXED ",K5,K6,K7
1100 PRINT
1110 PRINT " ","**YOU MAY RETIRE IN";E;"**"
1120 PRINT
1130 PRINT" CALCULATED BY THE BEST MINICOMPUTER TODAY - THE PDP-11"
1140 FOR Q=1 TO 2
1150 PRINT
1160 NEXT Q
1170 PRINT
1240 GOTO 240
1250 IF D=13 THEN 1280
1260 PRINT "FRIDAY "
1270 GOTO 710
1280 PRINT "FRIDAY THE THIRTEENTH---BEWARE!"
1290 GOTO 710
1300 PRINT "NOT PREPARED TO GIVE DAY OF WEEK PRIOR TO MDLXPXII -"
1305 PRINT " THE CURRENT CALENDAR DID NOT EXIST BEFORE THAT YEAR."
1310 GOTO 1140
1330 DATA 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5
1370 LET K1= INT(F*A8)
1380 LET I5 = INT(K1/365)
1390 LET K1 = K1-(I5*365)
1400 LET I6 = INT(K1/30)
1410 LET I7 = K1-(I6*30)
1420 LET K5 = K5-I5
1430 LET K6 = K6-I6
1440 LET K7 = K7-I7
1450 IF K7 >= 0 THEN 1480
1460 LET K7 = K7+30
1470 LET K6 = K6-1
1480 IF K6 > 0 THEN 1510
1490 LET K6 = K6+12
1500 LET K5 = K5-1
1510 PRINT I5,I6,I7
1520 RETURN
1530 IF K6 = 12 THEN 1550
1540 GOTO 1090
1550 LET K5 = K5+1
1560 LET K6=0
1570 GOTO 1090
1580 END