10 '******************************************************************* 20 '* RATE CHART BUILD PROGRAM * 30 '* RATE.BAS 8/24/82 * 40 '******************************************************************* 50 'RUN COMPILED 70 PRINT CHR$(7) 80 DIM NA$(15),KWR(15,18),RPK(15,18),FS(15,18) 90 ESC$=CHR$(27):HALF$=ESC$+CHR$(41):FULL$=ESC$+CHR$(40) 91 BLINK$=ESC$+CHR$(71)+CHR$(50):REVERSE$=ESC$+CHR$(71)+CHR$(52) 100 PRINT CHR$(26) 110 PRINT REVERSE$;TAB(30);"RATE SCHEDULES" 130 PRINT:PRINT TAB(20)"";HALF$"IST SCHEDULES ON FILE";FULL$ 140 PRINT:PRINT TAB(20)"";HALF$;"EVIEW SCHEDULE";FULL$ 150 PRINT:PRINT TAB(20)"";HALF$;"PDATE SCHEDULE";FULL$ 155 PRINT:PRINT TAB(20)"";HALF$;"DD SCHEDULE";FULL$ 160 PRINT:PRINT TAB(20)"";HALF$;"XIT TO MENU";FULL$ 170 PRINT:PRINT BLINK$;TAB(20)"ENTER YOUR SELECTION ";:AN$=INPUT$(1) 180 IF LEFT$(AN$,1)="L" THEN GOTO 240 190 IF LEFT$(AN$,1)="R" THEN GOTO 340 200 IF LEFT$(AN$,1)="E" THEN RESET:RUN"MENU 210 IF LEFT$(AN$,1)="U" THEN GOTO 666 211 IF LEFT$(AN$,1)="A" THEN GOTO 2100 220 GOTO 100 230 '************** START OF LIST ***************************** 240 GOSUB 1200 'OPEN AND READ RATE.DAT FILE 250 PRINT CHR$(26) 260 PRINT REVERSE$;TAB(30)"ACTIVE SCHEDULES" 270 FOR X=1 TO 6 280 IF LEN (NA$(X))=0 GOTO 300 290 PRINT TAB(25);"Schedule ";NA$(X) 300 NEXT X 310 PRINT BLINK$;:INPUT"PRESS ENTER FOR MENU ";AN$ 320 GOTO 100 330 '************************ START OF REVIEW ********************* 340 PRINT CHR$(26) 341 PRINT REVERSE$;TAB(32)"SCHEDULE REVIEW" 345 GOSUB 1200 350 INPUT"ENTER SCHEDULE NUMBER YOU WISH TO REVIEW ";SCHEDULE$ 360 PRINT CHR$(26) 370 PRINT REVERSE$; TAB(25)"REVIEWING SCHEDULE ";SCHEDULE$ 380 PRINT STRING$(79,"-") 410 FOR X=1 TO 6 460 IF NA$(X)=SCHEDULE$ THEN CLOSE:GOTO 500 470 NEXT X 480 CLOSE 490 PRINT BLINK$;"SCHEDULE NOT ON FILE ";:INPUT"PRESS ENTER TO CONTINUE ";AN$:GOTO 100 500 XX%=1 510 IF NA$(X)="G" THEN GOTO 530 520 PRINT"KWH RANGE RATE/KWH FLAT SUM":GOTO 540 530 PRINT"THERM RANGE RATE/THERM FLAT SUM" 540 PRINT STRING$(50,"-") 550 PRINT " 0-" 560 C=7:R=6:GOSUB 660:PRINT AT$;KWR(X,XX%):C=12:GOSUB 660:PRINT AT$;"X" 570 C=14:GOSUB 660:PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;"0":XX%=XX%+1 580 R=7:C=1:GOSUB 660:PRINT AT$ ;KWR(X,XX%-1)+1;"-":C=7:GOSUB 660:PRINT AT$;KWR(X,XX%):C=12:GOSUB 660:PRINT AT$;"X" 590 C=14:GOSUB 660:PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;FS(X,XX%) 600 R=8:C=1:GOSUB 660:XX%=XX%+1 610 PRINT AT$;KWR(X,XX%);"-":C=7:GOSUB 660:PRINT AT$;"OVER":C=12:GOSUB 660 620 PRINT AT$;"X":C=14:GOSUB 660 630 PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;FS(X,XX%) 640 PRINT:PRINT:INPUT"PRESS ENTER TO CONTINUE ";AN$:GOTO 100 650 STOP 660 RR=R+31:CC=31+C:AT$=CHR$(27)+"="+CHR$(RR)+CHR$(CC):RETURN 665 '************* UPDATE ***************************************** 666 GOSUB 1200 670 PRINT CHR$(26) 680 INPUT"ENTER SCHEDULE NUMBER YOU WISH TO UPDATE ";SCHEDULE$:PRINT CHR$(26) 690 PRINT REVERSE$;TAB(25)"UPDATING SCHEDULE ";SCHEDULE$ 700 PRINT STRING$(79,"-") 710 OPEN"O",2,"TEMP.DAT" 730 XX%=1 740 FOR X=1 TO 6 790 IF NA$(X)=SCHEDULE$ THEN MARKER%=X:GOTO 840 795 NEXT X 830 PRINT BLINK$;"SCHEDULE NOT ON FILE ";:INPUT"PRESS ENTER TO CONTINUE ";AN$:GOTO 100 840 XX%=1 850 IF LEFT$(NA$(X),1)="G" THEN GOTO 870 860 PRINT"KWH RANGE RATE/KWH FLAT SUM":GOTO 880 870 PRINT"THERM RANGE RATE/THERM FLAT SUM" 880 R=31:C=31 890 PRINT STRING$(50,"-") 900 PRINT " 0-" 910 C=7:R=6:GOSUB 660:PRINT AT$;KWR(X,XX%):C=12:GOSUB 660:PRINT AT$;"X" 920 C=14:GOSUB 660:PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;"0":XX%=XX%+1 930 R=7:C=1:GOSUB 660:PRINT AT$ ;KWR(X,XX%-1)+1;"-":C=7:GOSUB 660:PRINT AT$;KWR(X,XX%):C=12:GOSUB 660:PRINT AT$;"X" 940 C=14:GOSUB 660:PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;FS(X,XX%) 950 R=8:C=1:GOSUB 660:XX%=XX%+1 960 PRINT AT$;KWR(X,XX%-1)+1;"-":C=7:GOSUB 660:PRINT AT$;"OVER":C=12:GOSUB 660 970 PRINT AT$;"X":C=14:GOSUB 660 980 PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;FS(X,XX%) 990 PRINT STRING$(40,"="):XX%=1 1000 PRINT " 0-" 1010 C=7:R=10:GOSUB 1190:PRINT AT$;:LINE INPUT AA$:KWR(X,XX%)=VAL(AA$):C=12:GOSUB 1190:PRINT AT$;"X" 1020 C=14:GOSUB 1190:PRINT AT$;:LINE INPUT A$:RPK(X,XX%)=VAL(A$)::C=28:GOSUB 1190:PRINT AT$;"0":XX%=XX%+1 1030 R=11:C=1:GOSUB 1190:PRINT AT$ ;KWR(X,XX%-1)+1;"-":C=7:GOSUB 1190:PRINT AT$;:LINE INPUT BB$:KWR(X,XX%)=VAL(BB$):C=12:GOSUB 1190:PRINT AT$;"X" 1040 C=14:GOSUB 1190:PRINT AT$;:LINE INPUT BB$:RPK(X,XX%)=VAL(BB$):C=28:GOSUB 1190:PRINT AT$;:LINE INPUT CC$:FS(X,XX%)=VAL(CC$) 1050 R=12:C=1:GOSUB 1190:XX%=XX%+1 1060 PRINT AT$;KWR(X,XX%-1)+1;"-":C=7:GOSUB 1190:PRINT AT$;"OVER":C=12:GOSUB 1190 1070 PRINT AT$;"X":C=14:GOSUB 1190:KWR(X,XX%)=KWR(X,XX%-1)+1 1080 PRINT AT$;:LINE INPUT C$:RPK(X,XX%)=VAL(C$):C=28:GOSUB 1190:PRINT AT$;:LINE INPUT Q$:FS(X,XX%)=VAL(Q$) 1081 FOR X=1 TO 6 1090 PRINT#2,NA$(X);","; 1100 XX%=1:FOR XY=1 TO 3:PRINT#2,KWR(X,XX%);",";RPK(X,XX%);",";FS(X,XX%):XX%=XX%+1:NEXT XY 1160 NEXT X 1170 CLOSE 2 1180 KILL"RATE.DAT":NAME "TEMP.DAT" AS "RATE.DAT":GOTO 90 1190 RR=R+31:CC=31+C:AT$=CHR$(27)+"="+CHR$(RR)+CHR$(CC):RETURN 1200 ' OPEN FILE FOR READ 1205 CLOSE 1210 OPEN"I",1,"RATE.DAT" 1211 FOR Z=1 TO 6 1230 INPUT#1,NA$(Z) 1240 XX=1:FOR Y=1 TO 3:INPUT#1,KWR(Z,XX),RPK(Z,XX),FS(Z,XX):XX=XX+1:NEXT Y 1250 NEXT Z 1255 CLOSE 1260 RETURN 1270 STOP 2000 IF ERR=62 GOTO 1170 2100 '**************** START OF ADD ROUTINE *************************** 2110 PRINT CHR$(26) 2120 INPUT"ENTER SCHEDULE NUMBER YOU WISH TO ADD ";SCHEDULE$:PRINT CHR$(26) 2130 PRINT REVERSE$;TAB(25)"ADDING SCHEDULE ";SCHEDULE$ 2140 PRINT STRING$(79,"-") 2150 OPEN"O",2,"TEMP.DAT" 2160 GOSUB 1200 2180 FOR X=1 TO 6 2230 IF LEN(NA$(X))=0 THEN MARKER%=X:GOTO 2280 2240 NEXT X 2270 PRINT BLINK$;REVERSE$;"FILE IS NOW FULL";:INPUT"PRESS ENTER TO CONTINUE ";AN$:GOTO 100 2280 XX%=1:NA$(X)=SCHEDULE$ 2290 IF LEFT$(NA$(X),1)="G" THEN GOTO 2310 2300 PRINT"KWH RANGE RATE/KWH FLAT SUM":GOTO 2320 2310 PRINT"THERM RANGE RATE/THERM FLAT SUM" 2320 R=31:C=31 2330 PRINT STRING$(50,"-") 2340 PRINT " 0-" 2350 C=7:R=6:GOSUB 660:PRINT AT$;KWR(X,XX%):C=12:GOSUB 660:PRINT AT$;"X" 2360 C=14:GOSUB 660:PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;"0":XX%=XX%+1 2370 R=7:C=1:GOSUB 660:PRINT AT$ ;KWR(X,XX%-1)+1;"-":C=7:GOSUB 660:PRINT AT$;KWR(X,XX%):C=12:GOSUB 660:PRINT AT$;"X" 2380 C=14:GOSUB 660:PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;FS(X,XX%) 2390 R=8:C=1:GOSUB 660:XX%=XX%+1 2400 PRINT AT$;KWR(X,XX%-1)+1;"-":C=7:GOSUB 660:PRINT AT$;"OVER":C=12:GOSUB 660 2410 PRINT AT$;"X":C=14:GOSUB 660 2420 PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;FS(X,XX%) 2430 PRINT STRING$(40,"="):XX%=1 2440 PRINT " 0-" 2450 C=7:R=10:GOSUB 2640:PRINT AT$;:LINE INPUT AA$:KWR(X,XX%)=VAL(AA$):C=12:GOSUB 2640:PRINT AT$;"X" 2460 C=14:GOSUB 2640:PRINT AT$;:LINE INPUT A$:RPK(X,XX%)=VAL(A$)::C=28:GOSUB 2640:PRINT AT$;"0":FS(X,XX%)=0:XX%=XX%+1 2470 R=11:C=1:GOSUB 2640:PRINT AT$ ;KWR(X,XX%-1)+1;"-":C=7:GOSUB 2640:PRINT AT$;:LINE INPUT BB$:KWR(X,XX%)=VAL(BB$):C=12:GOSUB 2640:PRINT AT$;"X" 2480 C=14:GOSUB 2640:PRINT AT$;:LINE INPUT BB$:RPK(X,XX%)=VAL(BB$):C=28:GOSUB 2640:PRINT AT$;:LINE INPUT CC$:FS(X,XX%)=VAL(CC$) 2490 R=12:C=1:GOSUB 2640:XX%=XX%+1 2500 PRINT AT$;KWR(X,XX%-1)+1;"-":C=7:GOSUB 2640:PRINT AT$;"OVER":C=12:GOSUB 2640 2510 PRINT AT$;"X":C=14:GOSUB 2640 2515 KWR(X,XX%)=KWR(X,XX%-1)+1 2520 PRINT AT$;:LINE INPUT C$:RPK(X,XX%)=VAL(C$):C=28:GOSUB 2640:PRINT AT$;:LINE INPUT Q$:FS(X,XX%)=VAL(Q$) 2525 OPEN"O",2,"TEMP.DAT" 2526 FOR X=1 TO 6 2530 PRINT#2,NA$(X);","; 2540 XX%=1:FOR XY=1 TO 3:PRINT#2,KWR(X,XX%);",";RPK(X,XX%);",";FS(X,XX%):XX%=XX%+1:NEXT XY 2610 NEXT X 2620 CLOSE 2630 KILL"RATE.DAT":NAME "TEMP.DAT" AS "RATE.DAT":GOTO 90 2640 RR=R+31:CC=31+C:AT$=CHR$(27)+"="+CHR$(RR)+CHR$(CC):RETURN 2650 STOP 2660 IF ERR=62 GOTO 2620