DATA 31,28,31,30,31,30,31,31,30,31,30,31 DEFINT A-S, U-Z: DEFDBL T #!/usr/sbin/blassic CLS PRINT STRING$(75, "="): PRINT , "*** NUMBER OF DAYS BETWEEN TWO DATES ***": PRINT PRINT , "PLEASE SEPARATE DATE COMPONENTS BY COMMAS :" PRINT , SPC(3); "JANUARY 10, 1982 ==> 1,10,1982" LABEL L80 PRINT STRING$(75, "-"): PRINT LABEL L90 PRINT , , "ENTER START DATE 0,0,0, TO STOP PROGRAM" PRINT N = 0 LABEL L120 INPUT "STARTING DATE (MONTH,DAY,YEAR): "; B, C, A IF B = 0 AND C = 0 AND A = 0 THEN SYSTEM IF B < 1 OR B > 12 OR C < 1 OR (B = 2 AND C > 29) OR ((B = 4 OR B = 6 OR B = 9 OR B = 11) AND C > 30) OR C > 31 THEN PRINT , "IMPOSSIBLE": GOTO L120 IF (A / 100 = INT(A / 100) AND A / 400 = INT(A / 400) AND B = 2 AND C > 29) OR (A / 100 = INT(A / 100) AND A / 400 <> INT(A / 400) AND B = 2 AND C > 28) THEN PRINT , "IMPOSSIBLE": GOTO L120 LABEL L160 INPUT " ENDING DATE (MONTH,DAY,YEAR): "; F, G, E IF F < 1 OR F > 12 OR G < 1 OR (F = 2 AND G > 29) OR ((F = 4 OR F = 6 OR F = 9 OR F = 11) AND G > 30) OR G > 31 THEN PRINT , "IMPOSSIBLE": GOTO L160 IF (E / 100 = INT(E / 100) AND E / 400 = INT(E / 400) AND F = 2 AND G > 29) OR (E / 100 = INT(E / 100) AND E / 400 <> INT(E / 400) AND F = 2 AND G > 28) THEN PRINT , "IMPOSSIBLE": GOTO L160 B$ = STR$(B): IF LEN(B$) < 3 THEN B$ = "0" + RIGHT$(B$, 1) C$ = STR$(C): IF LEN(C$) < 3 THEN C$ = "0" + RIGHT$(C$, 1) F$ = STR$(F): IF LEN(F$) < 3 THEN F$ = "0" + RIGHT$(F$, 1) G$ = STR$(G): IF LEN(G$) < 3 THEN G$ = "0" + RIGHT$(G$, 1) T1 = VAL(STR$(A) + B$ + C$): REM START DATE T2 = VAL(STR$(E) + F$ + G$): REM END DATE PRINT "T1 = ",T1,"T2 = ",T2 REM IF T2 < T1 THEN PRINT : PRINT "END DATE IS PRIOR TO START DATE - START FROM BEGINNING": PRINT STRING$(75, "="): GOTO L90 GOTO L330 LABEL L270 C = C + 1 N = N + 1 IF C > D THEN B = B + 1: C = 1: K = 1 IF B > 12 THEN A = A + 1: B = 1: D = 31: K = 0 IF A = E AND B = F AND C = G THEN GOTO L380 IF K = 0 THEN GOTO L370 LABEL L330 RESTORE FOR I = 1 TO B: READ D: NEXT I IF A / 4 = INT(A / 4) AND B = 2 THEN D = 29: IF A / 100 = INT(A / 100) THEN D = 28: IF A / 400 = INT(A / 400) THEN D = 29 K = 0 LABEL L370 GOTO L270 LABEL L380 PRINT : PRINT , "DIFFERENCE IS", N; "DAYS.": GOTO L80 REM COPYRIGHT (C)1982 STEVEN WHITNEY.