home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Between Heaven & Hell 2
/
BetweenHeavenHell.cdr
/
500
/
481
/
numdays.bas
< prev
next >
Wrap
BASIC Source File
|
1986-08-08
|
2KB
|
47 lines
100 'Number of days between dates ("NUMDAYS")
110 CLS
120 COLOR 0,15 : PRINT "Number of Days Between Dates" : COLOR 15,0
130 PRINT
140 ' Let user enter dates
150 GOSUB 1000 'Get number of days in months
160 PRINT "Enter starting date"
170 GOSUB 2000
180 GOSUB 280 'Find number of days since date 0
190 SFACTOR = FACTOR
200 PRINT : PRINT "Enter ending date"
210 GOSUB 2000
220 GOSUB 280 'Find number of days since date 0
230 EFACTOR = FACTOR
240 PRINT
250 PRINT "Number of days: "; EFACTOR - SFACTOR
260 END
270 ' Subroutine to calculate factor for a date
280 FACTOR = 365 * YEAR + DAY + 31 * (MONTH - 1)
290 'January or February
300 IF MONTH <= 2 THEN FACTOR = FACTOR + (YEAR - 1) \ 4 - INT (3/4 * ( (YEAR-1) \ 100 + 1) )
310 'March or later
320 IF MONTH >= 3 THEN FACTOR = FACTOR - INT (.4 * MONTH + 2.3) + YEAR \ 4 - INT ( 3/4 * (YEAR \ 100 + 1) )
330 RETURN
990 ' Subroutine to set up list with number of days in months
1000 DIM NDAYS(12)
1010 FOR N = 1 TO 12
1020 READ NDAYS(N)
1030 NEXT N
1040 'Number of days in months
1050 DATA 31, 28, 31, 30
1060 DATA 31, 30, 31, 31
1070 DATA 30, 31, 30, 31
1080 RETURN
1990 ' Subroutine to let user enter date
2000 INPUT "Month (1-12): ", MONTH
2010 IF (MONTH < 1) OR (MONTH > 12) THEN PRINT " *No such month *": GOTO 2000
2020 INPUT "Day (1-31): ", DAY
2030 INPUT "Year: ", YEAR
2040 IF (YEAR < 1900) OR (YEAR > 2100) THEN PRINT "Invalid year": GOTO 2000
2050 'Check for leap year
2060 IF (YEAR MOD 4) = 0 AND (YEAR MOD 100) <> 0 THEN NDAYS(2) = 29
2070 IF (YEAR MOD 400) = 0 THEN NDAYS(2) = 29
2080 'Check for valid date
2090 IF DAY > NDAYS(MONTH) THEN PRINT "* No such day *": GOTO 2000
2100 RETURN