home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64Software / COLUMN-CALC (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  7KB  |  263 lines

  1. 5 REM"ADAPTED BY STEVEN DARNOLD, P.O. BOX 201 ALEXANDRA, NEW ZEALAND
  2. 8 [151]53280,11:[151]53281,11
  3. 9 [134]V(15,60),X$(50),V$(15,60):CR$[178]"LOAD":CT$[178]"OPEN ******* CALCULATING *******CONT"
  4. 10 [153]"RETURNLOADOPENC O L U M N      C A L C U L A T O R":C%[178]1:R%[178]1
  5. 20 [153]"CONT    VCONTIEW COLUMNS
  6. 30 PRINT"    E[154]NTER DATA
  7. 40 [153]"    DCONTO CALCULATIONS
  8. 50 PRINT"    Z[154]ERO MATRIX
  9. 60 [153]"    GCONTET DATA FROM DISK
  10. 70 PRINT"    S[154]AVE DATA TO DISK
  11. 80 [153]"    MCONTEMORY CHECK
  12. 85 PRINT"    P[154]RINT DATA ON PRINTER"
  13. 87 PRINT"    Q[154]UIT"
  14. 90 PRINT"[159]WHAT IS YOUR CHOICE ?":Y=0
  15. 95 GETAN$:IFAN$=""THEN95
  16. 96 IF AN$="Q"THEN PRINT"[147]":END
  17. 97 FORX=1TO8:IFAN$=MID$("VEDZGSMP",X,1)THENY=X
  18. 98 NEXT:ONYGOSUB230,1000,2020,120,702,802,940,12010:GOTO10
  19. 120 PRINTCR$:FORX=1TO15
  20. 130 FORY=1TO50
  21. 140 V(X,Y)=0
  22. 150 NEXTY
  23. 160 NEXTX
  24. 165 RETURN
  25. 190 INPUT"[147]ENTER COLUMN (1 TO 13):";C%
  26. 200 IFC%<1ORC%>13THENPRINT"[147]";:GOTO190
  27. 210 PRINT:INPUT"ENTER ROW (1 TO 31):";R%
  28. 220 IFR%<1ORR%>31THEN210
  29. 230 PRINT"[147]";:GOSUB500
  30. 240 PRINT"";
  31. 250 FORY=R%TOR%+19
  32. 260 PRINTTAB(9);
  33. 270 FORX=C%TOC%+2
  34. 280 X$=STR$(V(X,Y))
  35. 290 PRINTSPC(10-LEN(X$));X$;
  36. 300 NEXT
  37. 310 PRINTCHR$(13);
  38. 320 NEXT
  39. 325 PRINT"                                         ";
  40. 330 PRINT"U[154]P   D[154]OWN   L[154]EFT   R[154]IGHT   J[154]UMP   M[154]ENU";
  41. 340 GETC$:IFC$=""THEN340
  42. 360 IFC$="U"THENR%=R%-10:PRINTCHR$(13);"";:GOTO220
  43. 380 IFC$="D"THENR%=R%+10:PRINTCHR$(13);"";:GOTO220
  44. 400 IFC$="L"THENC%=C%-2:GOTO470
  45. 420 IFC$="R"THENC%=C%+2:GOTO470
  46. 440 IFC$="J"THEN190
  47. 450 IFC$="M"THEN10
  48. 460 GOTO340
  49. 470 IFC%<1ORC%>13THENPRINTCHR$(13);:GOTO190
  50. 480 GOTO230
  51. 500 PRINTTAB(9);
  52. 510 FORI=1TO3
  53. 520 PRINT"[154]    COLUMN[146]";
  54. 530 NEXT
  55. 540 PRINTCHR$(13);TAB(9);
  56. 550 FORI=C%TOC%+2
  57. 560 S%=7:IFI<10THENS%=8
  58. 570 PRINTSPC(S%);"";STR$(I);"[146]";
  59. 580 NEXT
  60. 590 PRINTCHR$(13);
  61. 600 FORI=R%TOR%+19
  62. 610 S$="":IFI<10THENS$=" "
  63. 620 PRINTTAB(2);"[154]ROW"S$STR$(I);"[146][159]"
  64. 630 NEXT
  65. 640 RETURN
  66. 702 INPUT"[147]WHAT IS NAME OF FILE YOU WANT";FL$
  67. 710 PRINT"[147]LOOKING FOR ";FL$
  68. 720 OPEN1,8,3,(FL$)
  69. 725 PRINT"FOUND ";FL$;" .....LOADING"
  70. 730 FORX=1TO12
  71. 740 FORY=1TO49
  72. 750 INPUT#1,V(X,Y)
  73. 760 NEXTY
  74. 770 NEXTX
  75. 780 PRINT"OK.....GOT DATA"
  76. 790 FORI=1TO1000:NEXTI
  77. 795 CLOSE1:RETURN
  78. 802 INPUT"[147]WHAT NAME FOR THIS FILE";FL$
  79. 840 OPEN1,8,3,(FL$)+",S,W"
  80. 850 FORX=1TO12
  81. 860 FORY=1TO49
  82. 870 PRINT#1,V(X,Y)
  83. 880 NEXTY
  84. 890 NEXTX
  85. 900 PRINT"OK.....DATA ON DISK"
  86. 910 FORI=1TO1000:NEXTI
  87. 920 CLOSE1:RETURN
  88. 940 PRINT"  "FRE(A)"BYTES FREE
  89. 950 [129]I[178]1[164]1000:[130]I
  90. 960 [142]
  91. 1000 [153]"LOAD":[153]
  92. 1010 [133]"WHICH COLUMN (1-12)";K$
  93. 1020 CL[178][197](K$):[139]CL[179]1[176]CL[177]12[167]1000
  94. 1030 [139]CL[178]13[176]CL[178]14[176]CL[178]15[167][153]"RESERVED FOR TOTALS":[137]1010
  95. 1040 [133]"HOW MANY ROWS (1-50)";K$
  96. 1050 K[178][197](K$):[139]K[177]50[176]K[179]1[167]1040
  97. 1060 [153]:[153]"ROW","CURRENT","COLUMN";CL
  98. 1070 [129]Y[178]1[164]K
  99. 1080 [153]:[153]Y,V(CL,Y),:[133]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD";V:V(CL,Y)[178]V
  100. 1090 [130]Y
  101. 1100 [153]"CCONT FOR ANOTHER COLUMN        MCONT FOR MENU
  102. 1110 GETD$:IFD$=""THEN1110
  103. 1120 IFD$="C"THEN1000
  104. 1130 RETURN
  105. 2020 PRINT"[147][159]YOU MAY CHOOSE ANY OF THE FOLLOWING"
  106. 2030 PRINT"  1[154] SUM DOWN COLUMNS
  107. 2040 [153]"  2CONT SUM ACROSS ROWS
  108. 2050 PRINT"  3[154] REPRODUCE ANY COLUMN
  109. 2060 [153]"  4CONT ADD-MULT-DIV-SUB AT ANY POINT
  110. 2070 PRINT"  5[154] AVERAGE ACROSS ROWS (DO 2[146] FIRST)
  111. 2080 [153]"  6CONT MAKE ROW % OF BASE ROW
  112. 2090 PRINT"  7[154] MAKE COLUMN % OF BASE COLUMN
  113. 2100 [153]"  8CONT SUM INDIVIDUAL COLUMNS
  114. 2110 PRINT"  9[154] SERIES OF CALCULATIONS
  115. 2120 [153]"  MCONT RETURN TO MENU
  116. 2121 PRINT"[159]    [163][163][163][163][163][163] [163][163] [163][163][163][163]
  117. 3500 [153]"WHICH ONE ?";
  118. 3510 [146]198,7:[161]AN$:[139]AN$[178]""[167]3510
  119. 3515 [139]AN$[178]"M"[167][142]
  120. 3520 [145][197](AN$)[141]4001,5010,6010,7010,8010,9010,10010,11010,11510
  121. 3530 [137]2020
  122. 4001 [153]"LOADDO YOU WISH TO DESIGNATE THE ROWS         TO BE SUMMED?"
  123. 4002 [161]A$:[139]A$[178]""[167]4002
  124. 4003 [139]A$[178]"N"[167]S1[178]1:S2[178]49:[137]4005
  125. 4004 [133]"FIRST ROW";S1:[133]"LAST ROW";S2:[139]S1[177]S2[176]S1[179]0[176]S2[177]49[167]4001
  126. 4005 [153]CR$;CT$:[153]"SUM WILL BE STORED IN ROW"S2[170]1
  127. 4010 [129]X[178]1[164]14
  128. 4020 V(X,S2[170]1)[178]0
  129. 4030 [130]X
  130. 4040 [129]X[178]1[164]14
  131. 4050 [129]Y[178]S1[164]S2
  132. 4060 V(X,S2[170]1)[178]V(X,S2[170]1)[170]V(X,Y)
  133. 4070 [130]Y
  134. 4080 [130]X
  135. 4090 [142]
  136. 5010 [153]CR$;CT$:[153]"SUM WILL BE STORED IN COLUMN 13
  137. 5020 FORY=1TO48
  138. 5030 V(13,Y)=0
  139. 5040 NEXTY
  140. 5050 FORY=1TO48
  141. 5060 FORX=1TO12
  142. 5070 V(13,Y)=V(13,Y)+V(X,Y)
  143. 5080 NEXTX
  144. 5090 NEXTY
  145. 5100 RETURN
  146. 6010 INPUT"[147]DUPLICATE WHICH COLUMN";CX
  147. 6015 INPUT"PUT IT IN WHICH COLUMN";X
  148. 6030 FORY=1TO50
  149. 6040 V(X,Y)=V(CX,Y)
  150. 6050 NEXTY
  151. 6060 RETURN
  152. 7010 Y=0
  153. 7020 PRINT"[147]A[146]DD    M[146]ULTIPLY    S[146]UBTRACT    D[146]IVIDE
  154. 7030 [161]A$:[139]A$[178]""[167]7030
  155. 7040 [129]X[178]1[164]4:[139]A$[178][202]("AMSD",X,1)[167]Y[178]X
  156. 7050 [130]:[145]Y[137]7070,7130,7190,7250:[137]7030
  157. 7070 [133]"LOADAMOUNT TO ADD";AD
  158. 7080 [133]"WHAT COL #";X
  159. 7090 [133]"WHAT ROW #";Y
  160. 7100 V(X,Y)[178]V(X,Y)[170]AD
  161. 7110 [137]7999
  162. 7130 [133]"LOADAMOUNT TO MULTIPLY BY";ML
  163. 7140 [133]"WHAT COL #";X
  164. 7150 [133]"WHAT ROW #";Y
  165. 7160 V(X,Y)[178]V(X,Y)[172]ML
  166. 7170 [137]7999
  167. 7190 [133]"LOADAMOUNT TO SUBTRACT";SB
  168. 7200 [133]"WHAT COL #";X
  169. 7210 [133]"WHAT ROW #";Y
  170. 7220 V(X,Y)[178]V(X,Y)[171]SB
  171. 7230 [137]7999
  172. 7250 [133]"LOADAMOUNT TO DIVIDE BY";DV
  173. 7260 [133]"WHAT COL #";X
  174. 7270 [133]"WHAT ROW #";Y
  175. 7280 V(X,Y)[178]V(X,Y)[173]DV
  176. 7290 V(X,Y)[178][181](V(X,Y)[172]1000[170].5)[173]1000
  177. 7300 [137]7999
  178. 7999 [142]
  179. 8010 [133]"LOADHOW MANY ITEMS IN EACH ROW";AVE
  180. 8020 [153]CR$;CT$:[153]"AVERAGE WILL BE STORED IN COLUMN 14
  181. 8030 FORY=1TO50
  182. 8035 IFV(13,Y)=0THEN8050
  183. 8040 V(14,Y)=V(13,Y)/AVE:V(14,Y)=INT(V(14,Y)*1000+.5)/1000
  184. 8050 NEXTY
  185. 8060 FORY=1 TO 200:NEXTY:RETURN
  186. 9010 INPUT"[147]WHICH IS BASE ROW";BR
  187. 9020 INPUT"WHICH IS ROW FOR PERCENTAGES";Y:IFBR=YTHENRETURN
  188. 9030 FORX=1TO13
  189. 9055 IFV(X,BR)=0THEN9075
  190. 9060 V(X,Y)=V(X,Y)/V(X,BR):V(X,Y)=INT(V(X,Y)*10000+.5)/100
  191. 9075 NEXTX
  192. 9080 RETURN
  193. 10010 INPUT"[147]WHICH IS BASE COLUMN";CX
  194. 10020 INPUT"WHICH IS COLUMN FOR PERCENTAGES";X:IFX=CXTHENRETURN
  195. 10030 FORY=1TO50
  196. 10055 IFV(CX,Y)=0THEN10075
  197. 10060 V(X,Y)=V(X,Y)/V(CX,Y):V(X,Y)=INT(V(X,Y)*10000+.5)/100
  198. 10075 NEXTY
  199. 10080 RETURN
  200. 11010 PRINT"[147]WHICH COLUMN DO YOU WANT TO SUM";
  201. 11020 INPUTCA:IFCA<1ORCA>15THEN11020
  202. 11030 PRINT"W[146]HOLE COLUMN OR P[146]ART OF COLUMN?"
  203. 11040 GETYN$:IFYN$<>"P"ANDYN$<>"W"THEN11040
  204. 11050 IFYN$="P"THENGOSUB11210:GOTO11065
  205. 11060 S1=1:S2=49
  206. 11065 V(CA,S2+1)=0
  207. 11070 FORY=S1TOS2
  208. 11080 V(CA,S2+1)=V(CA,S2+1)+V(CA,Y)
  209. 11090 NEXTY
  210. 11100 RETURN
  211. 11210 INPUT"ROW OF FIRST ITEM IN THE SUM";S1
  212. 11215 INPUT"ROW OF LAST ITEM IN THE SUM";S2:IFS1>S2ORS1<0ORS2>49THEN11210
  213. 11220 RETURN
  214. 11510 PRINT:PRINT"[145][145][145][145][145][145]HOW MANY CALCULATIONS (1-8)?"
  215. 11515 FORI=1TO5:PRINT"                  ":NEXT
  216. 11520 GETNM$:IFNM$=""THEN11520
  217. 11525 IFVAL(NM$)<0ORVAL(NM$)>8THEN11520
  218. 11530 NM=VAL(NM$):IFNM=0THENRETURN
  219. 11540 PRINT"[145][145][145][145][145][145]ENTER OPERATIONS IN THE ORDER YOU WANT  THEM TO BE PERFORMED."
  220. 11550 FORI=1TONM
  221. 11560 PRINT"ENTER OPERATION #"I"[157]           [157][157][157][157][157][157][157][157]";
  222. 11570 GETA$:OP(I)=VAL(A$):IFOP(I)<1OROP(I)>8THEN11570
  223. 11575 PRINTOP(I)
  224. 11580 NEXTI
  225. 11590 FORI=1TONM
  226. 11600 ONOP(I)GOSUB4001,5010,6010,7010,8010,9010,10010,11010
  227. 11610 NEXTI
  228. 11620 RETURN
  229. 12010 PRINT"[147]MAKE SURE PRINTER IS ON.":PRINT"...HIT ANY KEY WHEN READY."
  230. 12020 GETA$:IFA$=""THEN12020
  231. 12030 PRINT"DO YOU WANT TO DESIGNATE THE ROWS TO BE PRINTED?"
  232. 12040 GETA$:IFA$=""THEN12040
  233. 12050 IFA$="N"THENS1=1:S2=50:GOTO12070
  234. 12060 INPUT"FIRST ROW TO BE PRINTED";S1:INPUT"LAST ROW TO BE PRINTED";S2
  235. 12070 SP$="                   "
  236. 12080 OPEN4,4
  237. 12100 PRINT#4,"          COLUMNS    ";:FORI=1TO4:PRINT#4,I;"           ";:NEXT
  238. 12109 PRINT#4,"5 "
  239. 12110 PRINT#4
  240. 12120 FORY=S1TOS2
  241. 12130 PRINT#4,LEFT$("ROW"+STR$(Y)+SP$,10);
  242. 12135 FORI=1TO5:PRINT#4,RIGHT$(SP$+STR$(V(I,Y)),14);:NEXTI:PRINT#4
  243. 12136 PRINT#4,"-------------------------------------------------------------";
  244. 12137 PRINT#4,"-------------------"
  245. 12140 NEXTY:PRINT#4:PRINT#4
  246. 12150 PRINT#4,"          COLUMNS    ";:FORI=6TO9:PRINT#4,I;"           ";:NEXT
  247. 12155 PRINT#4,"10"
  248. 12160 FORY=S1TOS2
  249. 12170 PRINT#4,LEFT$("ROW"+STR$(Y)+SP$,10);
  250. 12175 FORI=6TO10:PRINT#4,RIGHT$(SP$+STR$(V(I,Y)),14);:NEXTI:PRINT#4
  251. 12176 PRINT#4,"-------------------------------------------------------------";
  252. 12177 PRINT#4,"-------------------"
  253. 12180 NEXTY:PRINT#4:PRINT#4
  254. 12190 PRINT#4,"          COLUMNS    ";:FORI=11TO14:PRINT#4,I;"          ";:NEXT
  255. 12195 PRINT#4,"15"
  256. 12200 FORY=S1TOS2
  257. 12210 PRINT#4,LEFT$("ROW"+STR$(Y)+SP$,10);
  258. 12215 FORI=11TO15:PRINT#4,RIGHT$(SP$+STR$(V(I,Y)),14);:NEXTI:PRINT#4
  259. 12216 PRINT#4,"-------------------------------------------------------------";
  260. 12217 PRINT#4,"-------------------"
  261. 12220 NEXTY
  262. 12230 PRINT#4:CLOSE4:RETURN
  263.