(10-19-2007, 07:40 AM)Smurfy link Wrote:pay me $100
Heh - What's my share?
Mac
DECLARE FUNCTION MyInput% (m$)
' Leapyear Calculator
ON TIMER(1) GOSUB UpdateTime
TIMER ON
DO
 CLS : LOCATE 3, 1
 TimeDisplayShowing = 0: WHILE TimeDisplayShowing = 0: WEND
 DO
  PRINT "Would you like to compute a range of years(1) or a single year(2): ";
  DO: q$ = INKEY$: LOOP WHILE q$ = ""
  IF q$ = CHR$(27) THEN SYSTEM
 LOOP WHILE q$ <> "1" AND q$ <> "2"
 PRINT q$
 IF VAL(q$) = 1 THEN GOSUB Range
 IF VAL(q$) = 2 THEN GOSUB SingleYear
 LOCATE 25, 1: PRINT "Would you like another run? Y/N: ";
 DO: R$ = UCASE$(INKEY$): LOOP WHILE R$ <> "Y" AND R$ <> "N"
LOOP WHILE R$ = "Y"
CLS
SYSTEM
Range:
DO
 F = MyInput("Enter the first year")
 L = MyInput("Enter the last year")
 IF F >= L THEN PRINT "Range out of order"
LOOP WHILE F >= L
FOR y = F TO L: GOSUB DoYear: NEXT y
RETURN
SingleYear:
y = MyInput("Enter a year")
GOSUB DoYear
RETURN
DoYear:
m = 2
IF y MOD 4 = 0 THEN
 m = 1
 IF y MOD 100 = 0 THEN
  m = 2
  IF y MOD 400 = 0 THEN m = 1
 END IF
END IF
IF m = 1 THEN
 TIMER OFF: COLOR 4, 0
 PRINT y; "is a leap year."
 COLOR 7, 0: TIMER ON
ELSE
 PRINT y; "is not a leap year."
END IF
RETURN
UpdateTime:
row = CSRLIN
col = POS(1)
LOCATE 1, 60: PRINT DATE$; " "; TIME$
LOCATE row, col, 1
TimeDisplayShowing = -1
RETURN
FUNCTION MyInput% (m$)
DO
 LOCATE , , 1: PRINT m$; ": ";
 start = LEN(m$) + 3
 w$ = ""
 DO
  DO: k$ = INKEY$: LOOP WHILE LEN(k$) <> 1
  SELECT CASE k$
  CASE "0" TO "9": IF LEN(w$) < 4 THEN w$ = w$ + k$: PRINT k$;
  CASE CHR$(13): PRINT
  CASE CHR$(27): SYSTEM
  CASE CHR$(8):
   LOCATE , start: PRINT SPACE$(4); : LOCATE , start
   IF LEN(w$) > 1 THEN
    w$ = LEFT$(w$, LEN(w$) - 1): PRINT w$;
   ELSE
    w$ = ""
   END IF
  END SELECT
 LOOP WHILE ASC(k$) <> 13
 PRINT
 IF VAL(w$) < 1583 THEN PRINT "Must be greater than 1582"
LOOP WHILE VAL(w$) < 1583
MyInput% = VAL(w$)
END FUNCTION