10  REM ****  HP TIME-SHARED BASIC PROGRAM LIBRARY  ********************
20  REM
30  REM             WATER1:  WATER BUDGET PROBLEM CHECK
40  REM
50  REM             36326 (A833)  REV A --10/71
60  REM
70  REM ****  CONTRIBUTED PROGRAM  *************************************
80  REM  CLASS ROOM EDITION OF WB -- PEREZ 5/1/69
90  DIM P[12],Z[12],X[12],T[12],A[12],V[12],S[12],D[12],E[12]
100  DIM Q[12]
110  REM  REVISED BY C.LOSIK  8-26-70 
120  REM WATER1-COPYRIGHT 1970, POLYTECHNIC INSTITUTE OF BROOKLYN
130  MAT D=ZER
140  MAT E=ZER
150  PRINT "WHAT IS YOUR PROGRESS CODE NUMBER";
160  INPUT B
170  PRINT 
180  FOR I=1 TO 12
190  READ P[I]
200  LET Z[I]=P[I]
210  IF B>10 THEN 290
220  IF I>1 THEN 280
230  PRINT "WATER BUDGET FOR RUTLAND,VT.:"
240  DATA 57,48,63,74,80,90,86,86,92,94,88,56
250  DATA 0,0,0,28,75,114,133,114,78,41,8,0
260  PRINT "================================================"
270  PRINT "P:"
280  GOSUB 1660
290  NEXT I
300  PRINT 
310  FOR I=1 TO 12
320  READ T[I]
330  LET Z[I]=T[I]
340  IF B>10 THEN 380
350  IF I>1 THEN 370
360  PRINT "PE:"
370  GOSUB 1660
380  NEXT I
390  IF B>10 THEN 450
400  PRINT "NOW, RETURN TO YOUR SEATS AND SEPARATELY WORK OUT YOUR VALUES"
410  PRINT "    FOR:  'P-PE'    AND 'STORAGE'."
420  PRINT "RETURN ONLY AFTER YOUR TEACHER HAS CHECKED YOUR WORK AND GIVEN"
430  PRINT "     YOU A NEW PROGRESS CODE NUMBER!"
440  GOTO 1770
450  IF B>20 THEN 510
460  PRINT "PRINT YOUR 12 VALUES FOR P-PE WHEN YOU SEE THE QUESTION"
470  PRINT "   MARK.  AFTER EACH OF THE VALUES PRINT A COMMA (,)--BUT"
480  PRINT "   DO NOT PRINT A COMMA AFTER YOUR LAST VALUE; SIMPLY HIT"
490  PRINT "   'RETURN'."
500  GOSUB 1750
510  FOR I=1 TO 12
520  LET X[I]=P[I]-T[I]
530  IF B>20 THEN 570
540  IF X[I]=Q[I] THEN 570
550  PRINT "OUCH!! THERE'S AN ERROR AT MONTH ";I".  RETYPE THIS LINE."
560  GOTO 500
570  NEXT I
580  IF B>30 THEN 640
590  IF B>20 THEN 610
600  PRINT "GOOD WORK!"
610  PRINT "NOW LET'S SEE HOW WELL YOUR VALUES FOR 'ST' CAME OUT.  PRINT "
620  PRINT "   THEM AFTER THE QUESTION MARK."
630  GOSUB 1750
640  LET G=0
650  FOR I=1 TO 12
660  IF X[I] >= 0 THEN 730
670  LET G=0
680  LET S[I]=T+X[I]
690  LET T=S[I]
700  IF S[I] <= 0 THEN 800
710  LET G=0
720  NEXT I
730  LET T=100
740  LET S[I]=X[I]+G
750  LET G=S[I]
760  LET T=100
770  LET S[I]=X[I]+G
780  IF S[I] >= 100 THEN 820
790  GOTO 720
800  LET S[I]=0
810  GOTO 830
820  LET S[I]=100
830  LET N1=I+1
840  LET G=I
850  FOR I=N1 TO 12
860  LET M=I-1
870  LET N=I+1
880  GOSUB 970
890  NEXT I
900  FOR I=1 TO G
910  LET M=I-1
920  IF I>1 THEN 940
930  LET M=12
940  GOSUB 970
950  NEXT I
960  GOTO 1110
970  LET S[I]=S[M]+X[I]
980  IF S[I] >= 100 THEN 1010
990  IF S[I]<1 THEN 1060
1000  GOTO 1030
1010  LET E[I]=S[I]-100
1020  LET S[I]=100
1030  LET V[I]=S[I]-S[M]
1040  LET A[I]=T[I]
1050  GOTO 1100
1060  LET S[I]=0
1070  LET D[I]=ABS(P[I]+S[M]-T[I])
1080  LET A[I]=S[M]+P[I]
1090  LET V[I]=S[I]-S[M]
1100  RETURN 
1110  IF B>30 THEN 1250
1120  FOR I=1 TO 12
1130  IF Q[I]=S[I] THEN 1160
1140  PRINT "SORRY ABOUT THAT!! MONTH";I;"IS IN ERROR. RECALCULATE PLEASE."
1150  GOTO 1770
1160  NEXT I
1170  PRINT "YOUR VALUES FOR 'STORAGE' ARE CORRECT."
1180  PRINT "  HAVE YOU FINISHED THE REST OF THE WATER BUDGET?"
1190  PRINT "(1=YES, 0=NO) : ";
1200  INPUT L
1210  IF L=1 THEN 1260
1220  IF L <> 0 THEN 1180
1230  PRINT "OK! GO BACK TO YOUR SEATS AND WORK OUT 'DELTA-ST' AND 'A.E.'"
1240  GOTO 1770
1250  IF B>40 THEN 1360
1260  PRINT "LET'S SEE YOUR VALUES FOR 'DELTA-ST'."
1270  GOSUB 1750
1280  FOR I=1 TO 12
1290  IF Q[I]=V[I] THEN 1340
1300  PRINT "THERE SEEMS TO BE AN ERROR IN MONTH "I".  BETTER TAKE A LOOK"
1310  PRINT "  AT YOUR VALUES. REMEMBER DELTA-ST = ST FOR THIS MONTH MINUS"
1320  PRINT "  ST FOR LAST MONTH.  PLEASE LEAVE AND RECHECK YOUR WORK."
1330  GOTO 1770
1340  NEXT I
1350  PRINT "THESE VALUES ARE FINE."
1360  IF B>50 THEN 1450
1370  PRINT "HOW DID YOUR A.E. VALUES COME OUT?  JUST LIST THEM AS BEFORE."
1380  GOSUB 1750
1390  FOR I=1 TO 12
1400  IF Q[I]=A[I] THEN 1430
1410  PRINT "OOPS!  YOU DID IT! MONTH"I"IS INCORRECT...RECALCULATE!!!"
1420  GOTO 1770
1430  NEXT I
1440  PRINT "GOOD WORK!  THEY'RE ALL CORRECT."
1450  IF B>60 THEN 1550
1460  PRINT "PLEASE LIST YOUR 'D' VALUES."
1470  GOSUB 1750
1480  FOR I=1 TO 12
1490  IF Q[I]=D[I] THEN 1540
1500  PRINT "YOU HAVE A DEFICIT WHENEVER P.E.>A.E.---AND---ST=0.  THE"
1510  PRINT "  DEFICIT = THE AMT.OF H20 YOU'R SHORT TO MEET THE P.E. FOR"
1520  PRINT "  MONTH";I".  THAT IS: D=PE-AE.  HAVE ANOTHER TRY....."
1530  GOTO 1770
1540  NEXT I
1550  PRINT "NOW FOR THE FINAL ROW.  PLEASE PRINT YOUR 'SURPLUS' FIGURES."
1560  GOSUB 1750
1570  FOR I=1 TO 12
1580  IF Q[I]=E[I] THEN 1630
1590  PRINT "A SURPLUS OCCURS ONLY WHEN 'ST'=>100. DID THIS CONDITION EXIST"
1600  PRINT "FOR MONTH"I"? IF SO THEN 'S'=EXCESS 'P' NOT NEEDED FOR P.E."
1610  PRINT "  SEE YOU AFTER YOU HAVE RECALCULATED!!!!"
1620  GOTO 1770
1630  NEXT I
1640  PRINT "WELL, IT LOOKS LIKE YOU DID IT.  FINE!!"
1650  GOTO 1770
1660  PRINT Z[I];
1670  IF Z[I]>99 THEN 1740
1680  IF Z[I]>9 THEN 1730
1690  IF Z[I]>-1 THEN 1720
1700  IF Z[I]>-10 THEN 1730
1710  IF Z[I]>-1000 THEN 1740
1720  PRINT " ";
1730  PRINT " ";
1740  RETURN 
1750  INPUT Q[1],Q[2],Q[3],Q[4],Q[5],Q[6],Q[7],Q[8],Q[9],Q[10],Q[11],Q[12]
1760  RETURN 
1770  END 
