home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug055.arc / BIORYTHM.BAS < prev    next >
BASIC Source File  |  1979-12-31  |  3KB  |  89 lines

  1. 1 DIM A(12),M$(12)
  2. 2 DATA 0,31,59,90,120,151,181,212,243,273,304,334
  3. 3 FOR I=1 TO 12 : READ A(I) : NEXT
  4. 5 PI=3.14159
  5. 7 PRINT : PRINT
  6. 10 PRINT "THIS PROGRAM WILL PRINT YOUR PERSONAL BIO-RYTHM ANALTSIS"
  7. 20 PRINT " FOR A 30 DAY PERIOD STARTING AT ANY DATE YOU SELECT."
  8. 30 PRINT "DATES SHOULD BE ENTERED IN NUMERICAL FORM WITH THE MONTH,"
  9. 40 PRINT "DAY AND YEAR SEPARATED BY COMMAS. . I.E. JULY 4,1976 WOULD"
  10. 50 PRINT "BE ENTERED AS 7,4,76."
  11. 55 REM LINE 475 SETS THE NUMBER OF DAYS IN A RUN
  12. 70 PRINT : PRINT
  13. 80 PRINT "WHAT IS THE DATE AT WHICH YOU WOULD LIKE THE ANALYSIS"
  14. 90 PRINT "TO START? (DATE,MONTH,YEAR)"
  15. 100 INPUT D,M,Y
  16. 105 M=INT(M) : D=INT(D) : Y=INT(Y)
  17. 110 PRINT"WHAT IS THE DATE OF YOUR BIRTH ? (DATE,MONTH,YEAR)";:
  18. 111 INPUT DB,MB,YB
  19. 115 MB=INT(MB) : DB=INT(DB): YB=INT(YB)
  20. 117 INPUT "WHAT IS YOUR NAME ";A$
  21. 120 PRINT
  22. 130 DEF FNI(X)=INT(20*SIN(2*PI*X/33)+.5)
  23. 140 DEF FNE(X)=INT(20*SIN(2*PI*X/28)+.5)
  24. 150 DEF FNP(X)=INT(20*SIN(2*PI*X/23)+.5)
  25. 160 T=INT(D+365.25*Y+A(M)+.01*M-.03)
  26. 170 TB=INT(DB+365.25*YB+A(MB)+.01*MB-.03)
  27. 180 X=T-TB
  28. 183 V=INT((40-LEN(A$))/2)
  29. 184 RB=TB-1-INT((TB-1)/7)*7
  30. 210 DATA MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY
  31. 230 FOR I= 0 TO 6 : READ DAY$(I) : NEXT
  32. 240 DATA MON,TUE,WED,THU,FRI,SAT,SUN
  33. 250 FOR I=0 TO 6 : READ D$(I) : NEXT
  34. 255 PRINT : PRINT
  35. 260 DATA JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST
  36. 265 DATA SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER
  37. 272 FOR I=1 TO 12 : READ M$(I) : NEXT
  38. 273 PRINT SPC(2): FOR I=1 TO V : PRINT "*";:NEXT
  39. 274 PRINT "BIO-RHYTHM ANALYSIS FOR "A$;
  40. 276 PRINT "*";:IF POS(0)<63 THEN 276
  41. 278 PRINT : PRINT
  42. 280 R=T-1-INT((T-1)/7)*7
  43. 282 LE=21+LEN(DAY$(R))+LEN(M$(M))+LEN(STR$(D))+LEN(RIGHT$(STR$(Y),2))
  44. 283 V2=INT((64-LE)/2)
  45. 285 PRINT SPC(2): FOR I=1 TO V2 : PRINT "*";:NEXT
  46. 290 PRINT "STARTING DATE:  "DAY$(R)",  "M$(M)STR$(D)",  19";
  47. 292 PRINT RIGHT$(STR$(Y),2);
  48. 295 PRINT "*"; : IF POS(0)<63 THEN 295
  49. 297 PRINT:PRINT
  50. 300 LL=LEN(DAY$(RB))+LEN(M$(MB))+LEN(STR$(DB))+LEN(RIGHT$(STR$(YB),2))
  51. 301 LB=LL+18
  52. 302 VB=INT((64-LB)/2)
  53. 303 PRINT SPC(2): FOR I=1 TO VB : PRINT "*";:NEXT
  54. 304 PRINT "BIRTH DATE:  "DAY$(RB)",  "M$(MB)STR$(DB)",  19";
  55. 305 PRINT RIGHT$(STR$(YB),2);
  56. 306 PRINT "*"; : IF POS(0)<63 THEN 306
  57. 307 PRINT :PRINT:PRINT
  58. 308 PRINT TAB(20)"DOWN",TAB(40)"CRITICAL",TAB(63)"UP"
  59. 310 PRINT D$(R)D;M$(M);
  60. 320 F(0)=42 : F$(0)="*"
  61. 330 F(1)=42+FNI(X) : F$(1)="I"
  62. 340 F(2)=42+FNE(X):F$(2)="E"
  63. 350 F(3)=42+FNP(X):F$(3)="P"
  64. 360 FOR I=0 TO 2
  65. 370 FOR J=I+1 TO 3
  66. 380 IF F(I)<F(J) THEN 420
  67. 385 IF F(I)=F(J) THEN F(I)=0 : F$(I)="":F$(J)="X": GOTO 420
  68. 390 Q=F(I):Q$=F$(I)
  69. 400 F(I)=F(J):F$(I)=F$(J)
  70. 410 F(J)=Q:F$(J)=Q$
  71. 420 NEXT J,I
  72. 440 FOR I=0 TO 3
  73. 450 PRINT TAB(F(I));F$(I);
  74. 460 NEXT
  75. 470 PRINT : X=X+.5:IF INT(X)<>X THEN 320
  76. 475 IF Z=29 THEN 570
  77. 480 R=R+1 : IF R=7 THEN R=0
  78. 490 D=D+1 : IF M=4 OR M=6 OR M=9 OR M=11 THEN L=30 : GOTO 530
  79. 500 IF M=2 AND Y/4=INT(Y/4) THEN L=29 : GOTO 530
  80. 510 IF M=2 THEN L=28 : GOTO 530
  81. 520 L=31
  82. 530 IF D>L THEN D=D-L : M=M+1 : GOTO 550
  83. 540 PRINT D$(R); D; : Z=Z+1 : GOTO 320
  84. 550 IF M=13 THEN M=1 : Z=Z+1 : GOTO 310
  85. 560 Z=Z+1 : GOTO 310
  86. 570 PRINT:PRINT
  87. 580 END
  88. 0 PRINT D$(R); D; : Z=Z+1 : GOTO 320
  89. 550 IF M=13 THEN M=1 : Z