home *** CD-ROM | disk | FTP | other *** search
/ Between Heaven & Hell 2 / BetweenHeavenHell.cdr / 500 / 481 / dailyodo.bas < prev    next >
BASIC Source File  |  1986-08-08  |  2KB  |  48 lines

  1. 100 'Daily Odometer ("DAILYODOMETER")
  2. 110 CLS
  3. 120 COLOR 0,15: PRINT "Daily Odometer": COLOR 15,0
  4. 130 PRINT
  5. 140 DEFINT A-Z
  6. 150 GOSUB 1000  'Get number of days in month
  7. 160 GOSUB 2000  'Let user enter starting date
  8. 170 INPUT "Number of days forward: ", DFRW
  9. 180 '     Move forward a day at a time
  10. 190 FOR N = 1 TO DFRW
  11. 200   NDAYS(2) = 28          'Adjust February for leap years
  12. 210   IF (YEAR MOD 4) = 0 AND (YEAR MOD 100) <> 0  THEN NDAYS(2) = 29
  13. 220   IF (YEAR MOD 400) = 0 THEN NDAYS(2) = 29
  14. 230   DAY = DAY + 1
  15. 240   'Move to next month if necessary
  16. 250   IF DAY > NDAYS(MONTH)  THEN DAY = 1 : MONTH = MONTH + 1
  17. 260   'Move to next year if necessary
  18. 270   IF (MONTH = 13)  THEN YEAR = YEAR + 1: MONTH = 1
  19. 280 NEXT N
  20. 290 '     Print target date
  21. 300 PRINT
  22. 310 PRINT "Month:";MONTH
  23. 320 PRINT "Day:";SPC(2);DAY
  24. 330 PRINT "Year:"; SPC(1); YEAR
  25. 340 END
  26. 990 '     Subroutine to set up list with number of days in months
  27. 1000 DIM NDAYS(12)
  28. 1010 FOR N = 1 TO 12
  29. 1020   READ NDAYS(N)
  30. 1030 NEXT N
  31. 1040 'Number of days in months
  32. 1050 DATA 31, 28, 31, 30
  33. 1060 DATA 31, 30, 31, 31
  34. 1070 DATA 30, 31, 30, 31
  35. 1080 RETURN
  36. 1990 '     Subroutine to let user enter date
  37. 2000 INPUT "Month (1-12): ", MONTH
  38. 2010 IF (MONTH < 1) OR (MONTH > 12)  THEN PRINT " *No such month *": GOTO 2000
  39. 2020 INPUT "Day (1-31): ", DAY
  40. 2030 INPUT "Year: ", YEAR
  41. 2040 IF (YEAR < 1900) OR (YEAR > 2100)  THEN PRINT "Invalid year": GOTO 2000
  42. 2050 'Check for leap year
  43. 2060 IF (YEAR MOD 4) = 0 AND (YEAR MOD 100) <> 0  THEN NDAYS(2) = 29
  44. 2070 IF (YEAR MOD 400) = 0  THEN NDAYS(2) = 29
  45. 2080 'Check for valid date
  46. 2090 IF DAY > NDAYS(MONTH)  THEN PRINT "* No such day *": GOTO 2000
  47. 2100 RETURN
  48.