home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / basic / billing.lbr / RATE.BZS / RATE.BAS
Encoding:
BASIC Source File  |  1987-03-16  |  7.9 KB  |  169 lines

  1. 10 '*******************************************************************
  2. 20 '*                RATE CHART BUILD PROGRAM                         *
  3. 30 '*   RATE.BAS                                  8/24/82             *
  4. 40 '*******************************************************************
  5. 50 'RUN COMPILED
  6. 70 PRINT CHR$(7)
  7. 80 DIM NA$(15),KWR(15,18),RPK(15,18),FS(15,18)
  8. 90 ESC$=CHR$(27):HALF$=ESC$+CHR$(41):FULL$=ESC$+CHR$(40)
  9. 91 BLINK$=ESC$+CHR$(71)+CHR$(50):REVERSE$=ESC$+CHR$(71)+CHR$(52)
  10. 100 PRINT CHR$(26)
  11. 110 PRINT REVERSE$;TAB(30);"RATE SCHEDULES"
  12. 130 PRINT:PRINT TAB(20)"<L>";HALF$"IST SCHEDULES ON FILE";FULL$
  13. 140 PRINT:PRINT TAB(20)"<R>";HALF$;"EVIEW  SCHEDULE";FULL$
  14. 150 PRINT:PRINT TAB(20)"<U>";HALF$;"PDATE  SCHEDULE";FULL$
  15. 155 PRINT:PRINT TAB(20)"<A>";HALF$;"DD  SCHEDULE";FULL$
  16. 160 PRINT:PRINT TAB(20)"<E>";HALF$;"XIT TO MENU";FULL$
  17. 170 PRINT:PRINT BLINK$;TAB(20)"ENTER YOUR SELECTION ";:AN$=INPUT$(1)
  18. 180 IF LEFT$(AN$,1)="L" THEN GOTO 240
  19. 190 IF LEFT$(AN$,1)="R" THEN GOTO 340
  20. 200 IF LEFT$(AN$,1)="E" THEN RESET:RUN"MENU
  21. 210 IF LEFT$(AN$,1)="U" THEN GOTO 666
  22. 211 IF LEFT$(AN$,1)="A" THEN GOTO 2100
  23. 220 GOTO 100
  24. 230 '************** START OF LIST *****************************
  25. 240 GOSUB 1200 'OPEN AND READ RATE.DAT FILE
  26. 250 PRINT CHR$(26)
  27. 260 PRINT REVERSE$;TAB(30)"ACTIVE SCHEDULES"
  28. 270 FOR X=1 TO 6
  29. 280 IF LEN (NA$(X))=0 GOTO 300
  30. 290 PRINT TAB(25);"Schedule ";NA$(X)
  31. 300 NEXT X
  32. 310 PRINT BLINK$;:INPUT"PRESS ENTER FOR MENU ";AN$
  33. 320 GOTO 100
  34. 330 '************************ START OF REVIEW *********************
  35. 340 PRINT CHR$(26)
  36. 341 PRINT REVERSE$;TAB(32)"SCHEDULE REVIEW"
  37. 345 GOSUB 1200
  38. 350 INPUT"ENTER SCHEDULE NUMBER YOU WISH TO REVIEW ";SCHEDULE$
  39. 360 PRINT CHR$(26)
  40. 370 PRINT REVERSE$; TAB(25)"REVIEWING SCHEDULE ";SCHEDULE$
  41. 380 PRINT STRING$(79,"-")
  42. 410 FOR X=1 TO 6
  43. 460 IF NA$(X)=SCHEDULE$ THEN CLOSE:GOTO 500
  44. 470 NEXT X
  45. 480 CLOSE
  46. 490 PRINT BLINK$;"SCHEDULE NOT ON FILE ";:INPUT"PRESS ENTER TO CONTINUE ";AN$:GOTO 100
  47. 500 XX%=1
  48. 510 IF NA$(X)="G" THEN GOTO 530
  49. 520 PRINT"KWH RANGE    RATE/KWH   FLAT SUM":GOTO 540
  50. 530 PRINT"THERM RANGE  RATE/THERM FLAT SUM"
  51. 540 PRINT STRING$(50,"-")
  52. 550 PRINT "  0-"
  53. 560 C=7:R=6:GOSUB 660:PRINT AT$;KWR(X,XX%):C=12:GOSUB 660:PRINT AT$;"X"
  54. 570 C=14:GOSUB 660:PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;"0":XX%=XX%+1
  55. 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"
  56. 590 C=14:GOSUB 660:PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;FS(X,XX%)
  57. 600 R=8:C=1:GOSUB 660:XX%=XX%+1
  58. 610 PRINT AT$;KWR(X,XX%);"-":C=7:GOSUB 660:PRINT AT$;"OVER":C=12:GOSUB 660
  59. 620 PRINT AT$;"X":C=14:GOSUB 660
  60. 630 PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;FS(X,XX%)
  61. 640 PRINT:PRINT:INPUT"PRESS ENTER TO CONTINUE ";AN$:GOTO 100 
  62. 650 STOP
  63. 660 RR=R+31:CC=31+C:AT$=CHR$(27)+"="+CHR$(RR)+CHR$(CC):RETURN
  64. 665 '*************  UPDATE *****************************************
  65. 666 GOSUB 1200
  66. 670 PRINT CHR$(26)
  67. 680 INPUT"ENTER SCHEDULE NUMBER YOU WISH TO UPDATE ";SCHEDULE$:PRINT CHR$(26)
  68. 690 PRINT REVERSE$;TAB(25)"UPDATING SCHEDULE ";SCHEDULE$
  69. 700 PRINT STRING$(79,"-")
  70. 710 OPEN"O",2,"TEMP.DAT"
  71. 730 XX%=1
  72. 740 FOR X=1 TO 6
  73. 790 IF NA$(X)=SCHEDULE$ THEN MARKER%=X:GOTO 840
  74. 795 NEXT X
  75. 830 PRINT BLINK$;"SCHEDULE NOT ON FILE    ";:INPUT"PRESS ENTER TO CONTINUE ";AN$:GOTO 100
  76. 840 XX%=1
  77. 850 IF LEFT$(NA$(X),1)="G" THEN GOTO 870
  78. 860 PRINT"KWH RANGE    RATE/KWH   FLAT SUM":GOTO 880
  79. 870 PRINT"THERM RANGE  RATE/THERM FLAT SUM"
  80. 880 R=31:C=31
  81. 890 PRINT STRING$(50,"-")
  82. 900 PRINT "  0-"
  83. 910 C=7:R=6:GOSUB 660:PRINT AT$;KWR(X,XX%):C=12:GOSUB 660:PRINT AT$;"X"
  84. 920 C=14:GOSUB 660:PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;"0":XX%=XX%+1
  85. 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"
  86. 940 C=14:GOSUB 660:PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;FS(X,XX%)
  87. 950 R=8:C=1:GOSUB 660:XX%=XX%+1
  88. 960 PRINT AT$;KWR(X,XX%-1)+1;"-":C=7:GOSUB 660:PRINT AT$;"OVER":C=12:GOSUB 660
  89. 970 PRINT AT$;"X":C=14:GOSUB 660
  90. 980 PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;FS(X,XX%)
  91. 990 PRINT STRING$(40,"="):XX%=1
  92. 1000 PRINT "  0-"
  93. 1010 C=7:R=10:GOSUB 1190:PRINT AT$;:LINE INPUT AA$:KWR(X,XX%)=VAL(AA$):C=12:GOSUB 1190:PRINT AT$;"X"
  94. 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
  95. 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"
  96. 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$)
  97. 1050 R=12:C=1:GOSUB 1190:XX%=XX%+1
  98. 1060 PRINT AT$;KWR(X,XX%-1)+1;"-":C=7:GOSUB 1190:PRINT AT$;"OVER":C=12:GOSUB 1190
  99. 1070 PRINT AT$;"X":C=14:GOSUB 1190:KWR(X,XX%)=KWR(X,XX%-1)+1
  100. 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$)
  101. 1081 FOR X=1 TO 6
  102. 1090 PRINT#2,NA$(X);",";
  103. 1100 XX%=1:FOR XY=1 TO 3:PRINT#2,KWR(X,XX%);",";RPK(X,XX%);",";FS(X,XX%):XX%=XX%+1:NEXT XY
  104. 1160 NEXT X
  105. 1170 CLOSE 2
  106. 1180 KILL"RATE.DAT":NAME "TEMP.DAT" AS "RATE.DAT":GOTO 90
  107. 1190 RR=R+31:CC=31+C:AT$=CHR$(27)+"="+CHR$(RR)+CHR$(CC):RETURN
  108. 1200 ' OPEN FILE FOR READ
  109. 1205 CLOSE
  110. 1210 OPEN"I",1,"RATE.DAT"
  111. 1211 FOR Z=1 TO 6
  112. 1230 INPUT#1,NA$(Z)
  113. 1240 XX=1:FOR Y=1 TO 3:INPUT#1,KWR(Z,XX),RPK(Z,XX),FS(Z,XX):XX=XX+1:NEXT Y
  114. 1250 NEXT Z
  115. 1255 CLOSE
  116. 1260 RETURN
  117. 1270 STOP
  118. 2000 IF ERR=62 GOTO 1170
  119. 2100 '**************** START OF ADD ROUTINE ***************************
  120. 2110 PRINT CHR$(26)
  121. 2120 INPUT"ENTER SCHEDULE NUMBER YOU WISH TO ADD ";SCHEDULE$:PRINT CHR$(26)
  122. 2130 PRINT REVERSE$;TAB(25)"ADDING SCHEDULE ";SCHEDULE$
  123. 2140 PRINT STRING$(79,"-")
  124. 2150 OPEN"O",2,"TEMP.DAT"
  125. 2160 GOSUB 1200
  126. 2180 FOR X=1 TO 6
  127. 2230 IF LEN(NA$(X))=0 THEN MARKER%=X:GOTO 2280
  128. 2240 NEXT X
  129. 2270 PRINT BLINK$;REVERSE$;"FILE IS NOW FULL";:INPUT"PRESS ENTER TO CONTINUE ";AN$:GOTO 100
  130. 2280 XX%=1:NA$(X)=SCHEDULE$
  131. 2290 IF LEFT$(NA$(X),1)="G" THEN GOTO 2310
  132. 2300 PRINT"KWH RANGE    RATE/KWH   FLAT SUM":GOTO 2320
  133. 2310 PRINT"THERM RANGE  RATE/THERM FLAT SUM"
  134. 2320 R=31:C=31
  135. 2330 PRINT STRING$(50,"-")
  136. 2340 PRINT "  0-"
  137. 2350 C=7:R=6:GOSUB 660:PRINT AT$;KWR(X,XX%):C=12:GOSUB 660:PRINT AT$;"X"
  138. 2360 C=14:GOSUB 660:PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;"0":XX%=XX%+1
  139. 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"
  140. 2380 C=14:GOSUB 660:PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;FS(X,XX%)
  141. 2390 R=8:C=1:GOSUB 660:XX%=XX%+1
  142. 2400 PRINT AT$;KWR(X,XX%-1)+1;"-":C=7:GOSUB 660:PRINT AT$;"OVER":C=12:GOSUB 660
  143. 2410 PRINT AT$;"X":C=14:GOSUB 660
  144. 2420 PRINT AT$;RPK(X,XX%):C=28:GOSUB 660:PRINT AT$;FS(X,XX%)
  145. 2430 PRINT STRING$(40,"="):XX%=1
  146. 2440 PRINT "  0-"
  147. 2450 C=7:R=10:GOSUB 2640:PRINT AT$;:LINE INPUT AA$:KWR(X,XX%)=VAL(AA$):C=12:GOSUB 2640:PRINT AT$;"X"
  148. 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
  149. 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"
  150. 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$)
  151. 2490 R=12:C=1:GOSUB 2640:XX%=XX%+1
  152. 2500 PRINT AT$;KWR(X,XX%-1)+1;"-":C=7:GOSUB 2640:PRINT AT$;"OVER":C=12:GOSUB 2640
  153. 2510 PRINT AT$;"X":C=14:GOSUB 2640
  154. 2515 KWR(X,XX%)=KWR(X,XX%-1)+1
  155. 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$)
  156. 2525 OPEN"O",2,"TEMP.DAT"
  157. 2526 FOR X=1 TO 6
  158. 2530 PRINT#2,NA$(X);",";
  159. 2540 XX%=1:FOR XY=1 TO 3:PRINT#2,KWR(X,XX%);",";RPK(X,XX%);",";FS(X,XX%):XX%=XX%+1:NEXT XY
  160. 2610 NEXT X
  161. 2620 CLOSE
  162. 2630 KILL"RATE.DAT":NAME "TEMP.DAT" AS "RATE.DAT":GOTO 90
  163. 2640 RR=R+31:CC=31+C:AT$=CHR$(27)+"="+CHR$(RR)+CHR$(CC):RETURN
  164. 2650 STOP
  165. 2660 IF ERR=62 GOTO 2620
  166. T" AS "RATE.DAT":GOTO 90
  167. 2640 RR=R+31:CC=31+C:AT$=CHR$(27)+"="+CHR$(RR)+CHR$(CC):RETURN
  168. 2650 STOP
  169. 2660 IF ERR=62 GOTO