10 REM -- PROGRAM TO PRINT OUT BIORHYTHMS FOR ONE MONTH 20 REM GIVEN A BIRTHDATE AND A MONTH 30 REM 40 DIM M9(12),L(3),V(4),C$(4),M$(12) 50 REM 60 REM -- CALCULATE JULIAN DAY BASED ON DATE 70 REM 80 DEF FNJ(D0,M0,Y0)=M9(M0)+D0+SGN(INT(M0/3))*(1+SGN(4*INT(Y0/4)-Y0)) 110 REM 120 REM -- CALCULATE DAYS BETWEEN TWO JULIAN DATES 130 REM 140 DEF FND(J1,Y1,J2,Y2)=INT(Y2/4-1-INT(Y1/4))+J2-J1+365*(Y2-Y1) 180 REM 190 REM -- INITIALIZE THE ARRAYS 200 REM 210 READ D$:FOR I=1 TO 3:READ L(I):NEXT I 220 FOR I=1 TO 4:READ C$(I):NEXT I 230 FOR I=1 TO 12:READ M9(I):NEXT I 240 FOR I=1 TO 12:READ M$(I):NEXT I 250 DATA "-" 252 DATA 23,28,33 254 DATA "P","E","I","*" 260 DATA 0,31,59,90,120,151,181,212,243,273,304,334 270 DATA "JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY" 280 DATA "AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER" 310 REM 320 REM -- RESET ARRAY P$ 325 REM 330 FOR J=1 TO 41 340 FOR I=1 TO 93:VF1$(93*(J-1)+I)=" ":NEXT I 350 NEXT J 360 FOR I=1 TO 93 380 VF1$(1860+I)="-" 390 NEXT I 400 REM 410 PRINT "INPUT BIRTHDATE IN FORMAT MMDDYY -- ";:INPUT N$ 415 B2=VAL(MID$(N$,1,2)):B1=VAL(MID$(N$,3,4)):B3=VAL(MID$(N$,5,6)) 420 PRINT "INPUT DESIRED MONTH IN FORMAT MMYY -- ";:INPUT N$ 425 C2=VAL(MID$(N$,1,2)):C3=VAL(MID$(N$,3,4)) 430 REM 440 T0=FND(FNJ(B1,B2,B3),B3,FNJ(1,C2,C3),C3) 450 T=T0 460 REM 462 PRINT "NAME, PLEASE -- ";:INPUT N$ 463 PRINT "INPUT ANY MISCELLANEOUS COMMENT HERE. ":INPUT L$ 464 PRINT :PRINT 465 PRINT TAB(50);N$ 466 PRINT L$:PRINT 467 PRINT "BIORHYTHM CHART FOR ";M$(C2);" ";C3+1900 468 PRINT 469 PRINT "CHARTING THE PHYSICAL - P (23 DAY CYCLE)" 470 PRINT " EMOTIONAL - E (28 DAY CYCLE)" 480 PRINT " INTELLECTUAL - I (33 DAY CYCLE)" 490 PRINT " AND OVERALL - *" 491 PRINT "THESE CYCLES ARE BELIEVED TO OCCUR IN "; 492 PRINT "EVERYONE, BEGINNING ON THE DAY OF THEIR BIRTH." 493 PRINT:PRINT:,"NUMBER OF CYCLES SINCE BIRTH: "; 500 FOR I=1 TO 3:PRINT:C$(I);" ";T/L(I),:NEXT I 510 PRINT 520 REM 530 REM -- COMPUTE THE CYCLES AND SET ARRAY P$ 540 REM 541 LET P=3.14159 550 FOR I=1 TO 93 560 FOR K=1 TO 3 561 LET V(K)=-20*SIN(T/L(K)*2*P) 562 NEXT K 570 V(4)=(V(1)+V(2)+V(3))/3 580 FOR K=1 TO 4 590 K0=INT(ABS(V(K)+.5)*SGN(V(K)))+21 600 VF1$(93*(K0-1)+I)=C$(K) 610 NEXT K 620 T=T+1/3 630 NEXT I 640 REM 650 REM -- PRINT ARRAY P$ 660 REM 670 PRINT:PRINT 680 FOR J=1 TO 41 690 PRINT "I "; 700 FOR I=1 TO 93:PRINT:VF1(93*(J-1)+I);:NEXT I 710 PRINT 720 NEXT J 730 PRINT "I--+-----------+--------------+--------------+------"; 740 PRINT "--------+--------------+--------------+---" 750 PRINT " 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17"; 760 PRINT " 18 19 20 21 22 23 24 25 26 27 28 29 30 31" 770 PRINT:PRINT:PRINT:PRINT:TAB(48);M$(C2);" ";C3+1900 780 PRINT CHR$(12) 790 END