home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib42a.dsk / JULY.1992 / JULIAN.DATE.bas < prev    next >
BASIC Source File  |  2023-02-26  |  3KB  |  93 lines

  1. 10  REM  ******************************
  2. 20  REM  *  JULIAN DATE CONVERSION    *
  3. 30  REM  *     BY PATRICK CROWLEY     *
  4. 40  REM  *      COPYRIGHT 1992 BY     *
  5. 50  REM  *    MINDCRAFT PUBL. CORP.   *
  6. 60  REM  ******************************
  7. 70  REM 
  8. 80  HOME 
  9. 90  VTAB 3
  10. 100  HTAB 10: PRINT "** DAYS BETWEEN DATES **": HTAB 5: PRINT "  PRESS RETURN AFTER ENTERING"
  11. 110  HTAB 6
  12. 120  PRINT "EACH MONTH - EACH DAY - EACH YEAR": HTAB 5: PRINT " EX:   1 <RTN>    1 <RTN>    92 <RTN>"
  13. 130 DYS = FIN = ST = NUM = YRS = 0
  14. 140 FL$ = ""
  15. 150  VTAB 9: HTAB 5
  16. 160  PRINT "ENTER STARTING DATE"
  17. 170  VTAB 10: HTAB 5
  18. 180  PRINT "MONTH  DAY  YEAR "
  19. 190  HTAB 5: INPUT " ";M1
  20. 200  VTAB 11: HTAB 11: INPUT " ";D1
  21. 210  VTAB 11: HTAB 16: INPUT " ";Y1
  22. 220  VTAB 14: HTAB 5
  23. 230  PRINT "ENTER THE END DATE"
  24. 240  VTAB 16: HTAB 5
  25. 250  PRINT "MONTH  DAY  YEAR"
  26. 260  HTAB 5: INPUT " ";M2
  27. 270  VTAB 17: HTAB 11: INPUT " ";D2
  28. 280  VTAB 17: HTAB 16: INPUT " ";Y2
  29. 290 DD = D1
  30. 300 MM = M1
  31. 310 YY = Y1
  32. 320  GOSUB 730
  33. 330 ST = NUM
  34. 340 NUM = 0
  35. 350 DD = D2
  36. 360 MM = M2
  37. 370 YY = Y2
  38. 380  GOSUB 730
  39. 390 FIN = NUM
  40. 400  IF M2 >M1  OR (M2 = M1  AND D2 > = D1)  THEN FL$ = "SAME"
  41. 410  IF FL$ = "SAME"  THEN  GOSUB 520
  42. 420  IF FL$ < >"SAME"  THEN  GOSUB 580
  43. 430  VTAB 19: HTAB 5
  44. 440  PRINT "TOTAL TIME = ";YRS;
  45. 450  PRINT " YEARS AND ";DYS;" DAYS"
  46. 460  PRINT : PRINT 
  47. 470  PRINT "DO YOU WANT TO GO AGAIN?"
  48. 480  PRINT : INPUT "ENTER 'Y' OR 'N' ";A$
  49. 490  IF A$ = "N"  THEN 510
  50. 500  GOTO 80
  51. 510  END 
  52. 520  REM  END DAY NUMBER IS >= START DAY NUMBER
  53. 530 DYS = FIN -ST
  54. 540 YRS = Y2 -Y1
  55. 550  REM  IF YOU WISH TO COUNT THE END DAY AS A DAY E.G. A DAY WORKED THEN ACTIVATE THE NEXT STATEMENT
  56. 560  REM  DYS=DYS+1
  57. 570  RETURN 
  58. 580  REM  END DAY NUMBER < START DAY NUMBER
  59. 590  REM  CONVERT START YEAR TO ONE YEAR BACK
  60. 600 DD = D1
  61. 610 MM = M1
  62. 620 YY = Y2 -1
  63. 630  GOSUB 730
  64. 640 ST = NUM
  65. 650 YRS = (Y2 -Y1) -1
  66. 660  IF YRS <0  THEN YRS = 0
  67. 670 DYS = 365 -ST
  68. 680  REM  CHECK FOR LEAP
  69. 690  IF R1 = R2  THEN DYS = DYS +1
  70. 700 DYS = DYS +FIN
  71. 710  RETURN 
  72. 720  REM  JULIAN CONVERSION ROUTINE
  73. 730 NUM = 0
  74. 740  ON MM GOTO 860,850,840,830,820,810,800,790,780,770,760,750
  75. 750 NUM = NUM +30
  76. 760 NUM = NUM +31
  77. 770 NUM = NUM +30
  78. 780 NUM = NUM +31
  79. 790 NUM = NUM +31
  80. 800 NUM = NUM +30
  81. 810 NUM = NUM +31
  82. 820 NUM = NUM +30
  83. 830 NUM = NUM +31
  84. 840 NUM = NUM +28
  85. 850 NUM = NUM +31
  86. 860 NUM = NUM +DD
  87. 870 R1 = YY/4
  88. 880  REM  CHECK FOR LEAP YEAR
  89. 890  REM  R2=INT(R1)
  90. 900  IF R1 = R2  AND NUM >59  THEN NUM = NUM +1
  91. 910  REM  NOW TO HANDLE INPUT OF FEB.29
  92. 920  IF R1 = R2  AND NUM = 61  AND DD = 29  THEN NUM = NUM -1
  93. 930  RETURN