home *** CD-ROM | disk | FTP | other *** search
/ Personal Computing Magazine 1988 September / SEPT_1988 / PDBASIC / PAYE2.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1988-01-01  |  19.8 KB  |  732 lines

  1. 10  REM PAYE2 for IBM PC's   V PC4.2  22.06.1988
  2. 15  REM Official from 15 JUN 1988
  3. 20  REM MICRO-AID COPYRIGHT 1985
  4. 30  REM 25 FORE STREET, PRAZE, CAMBORNE, CORNWALL, TR14 0JX
  5. 45  M=75
  6. 50  LL=80:A%=0:SCREEN 0,1,0:WIDTH 80:COLOR 1,7,3:CLS
  7. 52  PAYFILE$="paydata"
  8. 55  LOCATE 2,1:COLOR 1
  9. 60  P$="Micro-Aid IBM PC & COMPATIBLES PAYROLL":GOSUB 10000
  10. 62  PRINT:P$="PAYROLL RUN":GOSUB 10000
  11. 65  LOCATE 10,1:COLOR 4
  12. 70  PRINT TAB(25)"Enter 'W' for Weekly Pay"
  13. 72  PRINT:PRINT TAB(25)"Enter 'F' for Fortnightly Pay"
  14. 74  PRINT:PRINT TAB(25)"Enter '4' for Four Weekly Pay"
  15. 76  PRINT:PRINT TAB(25)"Enter 'M' for Monthly Pay"
  16. 78  P$="Enter choice for period, W, F, 4 or M to proceed or any key to abort.":GOSUB 64600
  17. 79  GOSUB 61000:GOSUB 62000
  18. 80  GOSUB 16000
  19. 90  WM=52
  20. 91  IF INSTR("4FfMmWw",G$)=0 THEN RUN "selectp
  21. 92  IF INSTR("Ww",G$) THEN PW=1
  22. 94  IF INSTR("Ff",G$) THEN PW=2
  23. 96  IF G$="4" THEN PW=4
  24. 98  IF INSTR("Mm",G$) THEN PW=1:WM=12
  25. 100  X=1
  26. 110  DIM C(X),R(X+1),K(X),N(26,3,3),G(10),S(M,5),T(10)
  27. 112  OT1=1.25 : OT2=1.5 : OT3=2
  28. 113  P$="To amend overtime rates press Y otherwise 1.25, 1.5 and 2 times ":GOSUB 64600:GOSUB 16000:IF INSTR("Yy",G$)=0 THEN 118
  29. 114  P$="Enter overtime rate 1, default is 1.25 ":GOSUB 64700:IF T>0 THEN OT1=T
  30. 115  P$="Enter overtime rate 2, default is 1.5  ":GOSUB 64700:IF T>0 THEN OT2=T
  31. 116  P$="Enter overtime rate 3, default is 2    ":GOSUB 64700:IF T>0 THEN OT3=T
  32. 118  P$="Wait while NI data is loaded into tables.":GOSUB 64600
  33. 120  C(1)=19300
  34. 130  R(1)=0.25
  35. 131  R(2)=0.4
  36. 140  K(1)=4825
  37. 150  GPTR=1:MTC=480
  38. 160  RESTORE:FOR J=0 TO 26:FOR K=0 TO 3:FOR H=0 TO 3:READ T
  39. 162  IF T=-999 THEN H=3:K=3:GOTO 166
  40. 164  N(J,K,H)=T/100
  41. 166  NEXT H,K,J
  42. 200  NU=305
  43. 205  IF WM=12 THEN NU=1322
  44. 210  NL=41
  45. 215  IF WM=12 THEN NL=178
  46. 220  N1=70:N2=105:N3=155
  47. 225  IF WM=12 THEN N1=304:N2=455:N3=672
  48. 250  BW=1
  49. 255  IF WM=12 THEN BW=4
  50. 260  TB=NL
  51. 400  DIM E$(M,2),E(M,25),P(10),TAB%(8)
  52. 410  I%=10:Z=1
  53. 420  RESTORE 950:FOR I%=1 TO 8:READ TAB%(I%):NEXT I%
  54. 430  P$="Enter H for horizontal or V for vertical payslips ":GOSUB 64600:GOSUB 16000
  55. 435  IF INSTR("Hh",G$)>0 THEN PAYSLIP$="H" ELSE PAYSLIP$="V"
  56. 440  IF PAYSLIP$="V" THEN P$="Enter number of copies of vertical payslips ":GOSUB 64700:Z=T:IF Z=0 THEN Z=1
  57. 450  IF PAYSLIP$="H" THEN P$="Align Micro-Aid twin NCR payslips and press ENTER to align ":GOSUB 64700:LPRINT TAB(TAB%(2)/2-1)".":P$="If period (.) is line above & just right of 'COMPANY :' press Y else ENTER":GOSUB 64600:INPUT G$:IF G$ ="" THEN GOTO 450
  58. 460  GOSUB 40000
  59. 500  CLS
  60. 510  PRINT
  61. 520  P$="MICRO-AID PAYROLL FOR THE AMSTRAD PC1512":GOSUB 10000:PRINT:PRINT
  62. 540  GOSUB 17010
  63. 550  D$=DA$
  64. 560  PRINT
  65. 570  PRINT:INPUT "Enter Tax Period Number ";W
  66. 585  IF W/PW<>INT(W/PW) THEN W=W+1:GOTO 585
  67. 590  IF W<1 OR W>WM+PW THEN PRINT "INVALID - RE-ENTER":PRINT:GOTO 570
  68. 600  COLOR 1
  69. 700  REM  ** N.I. DATA **
  70. 790  REM C (Cont Out)
  71. 791  DATA 0,0,0,0,5,7,9,10.45,0,0,0,0,1.2,3.2,5.2,6.65
  72. 800  REM A
  73. 801  DATA 5,7,9,9,5,7,9,10.45,-999
  74. 805  REM B
  75. 806  DATA 3.85,3.85,3.85,3.85,5,7,9,10.45,-999
  76. 810  REM C
  77. 811  DATA 0,0,0,0,5,7,9,10.45,-999
  78. 815  REM D
  79. 816  DATA 5,7,9,9,5,7,9,10.45,3,5,7,7,1.2,3.2,5.2,6.65
  80. 820  REM E
  81. 821  DATA 3.85,3.85,3.85,3.85,5,7,9,10.45,3.85,3.85,3.85,3.85,1.2,3.2,5.2,6.65
  82. 825  REM F
  83. 826  DATA 4.75,6.75,8.75,8.75,4.85,6.85,8.85,10.3
  84. 827  DATA 2.6,4.6,6.6,6.6,.75,2.75,4.75,6.2
  85. 830  REM G
  86. 831  DATA 3.6,3.6,3.6,3.6,4.85,6.85,8.85,10.3,3.6,3.6,3.6,3.6,.75,2.75,4.75,6.2
  87. 835  REM H
  88. 836  DATA 4.75,6.75,8.75,8.75,4.35,6.35,8.35,9.8
  89. 837  DATA 2.6,4.6,6.6,6.6,.25,2.25,4.25,5.7
  90. 840  REM I
  91. 841  DATA 4.75,6.75,8.75,8.75,4.35,6.35,8.35,9.8,-999
  92. 845  REM J (not used)
  93. 846  DATA -999
  94. 850  REM K
  95. 851  DATA 3.6,3.6,3.6,3.6,4.35,6.35,8.35,9.8,3.6,3.6,3.6,3.6,.25,2.25,4.25,5.7
  96. 855  REM L
  97. 856  DATA 4.75,6.75,8.75,8.75,4.85,6.85,8.85,10.3,-999
  98. 860  REM M
  99. 861  DATA 3.6,3.6,3.6,3.6,4.85,6.85,8.85,10.3,-999
  100. 865  REM N
  101. 866  DATA 5,7,9,9,4.5,6.5,8.5,9.95,2.85,4.85,6.85,6.85,.4,2.4,4.4,5.85
  102. 870  REM O
  103. 871  DATA 3.85,3.85,3.85,3.85,4.5,6.5,8.5,9.95
  104. 872  DATA 3.85,3.85,3.85,3.85,.4,2.4,4.4,5.85
  105. 875  REM P
  106. 876  DATA 3.6,3.6,3.6,3.6,4.35,6.35,8.35,9.8,-999
  107. 880  REM Q (not used)
  108. 881  DATA -999
  109. 885  REM R
  110. 886  DATA 5,7,9,9,4.5,6.5,8.5,9.95,-999
  111. 890  REM S
  112. 891  DATA 0,0,0,0,4.85,6.85,8.85,10.3,-999
  113. 895  REM T
  114. 896  DATA 3.85,3.85,3.85,3.85,4.5,6.5,8.5,9.95,-999
  115. 900  REM U (not used)
  116. 901  DATA -999
  117. 905  REM V
  118. 906  DATA 0,0,0,0,4.35,6.35,8.35,9.8,-999
  119. 910  REM W
  120. 911  DATA 0,0,0,0,4.5,6.5,8.5,9.95,-999
  121. 915  REM X (not used)
  122. 916  DATA -999
  123. 920  REM Y (not used)
  124. 921  DATA -999
  125. 925  REM Z (not used)
  126. 926  DATA -999
  127. 950  DATA 0,20,22,28,38,49,60,72
  128. 1000  FOR J%=1 TO NE:IF E(J%,21)=1 THEN 8280
  129. 1005  PRTAX$="BONUS/ADJ":POTAX$="ADJUSTMENT"
  130. 1007  HRS=0
  131. 1030  FOR K%=0 TO 10
  132. 1040  G(K%)=0
  133. 1050  NEXT K%:N=W
  134. 1060  CLS:COLOR 0
  135. 1070  PRINT E$(J%,0);
  136. 1080  PRINT TAB(30)"Period";
  137. 1090  PRINT N;TAB(60)"Record No. ";J%
  138. 1100  PRINT "Paid to Period ";E(J%,20)
  139. 1110  PRINT:COLOR 1
  140. 1120  IF E(J%,20)>=N THEN 1260
  141. 1140  PRINT "0: PAY AS NORMAL"
  142. 1150  PRINT
  143. 1160  PRINT "1: HOURS (SINGLE TIME)",:PRINT USING"#####,.##"; G(1)
  144. 1170  PRINT "2: HOURS ("OT1"x TIME)",:PRINT USING"#####,.##"; G(2)
  145. 1180  PRINT "3: HOURS ("OT2"x TIME)",:PRINT USING"#####,.##"; G(3)
  146. 1190  PRINT "4: HOURS ("OT3"x TIME)",:PRINT USING"#####,.##"; G(4)
  147. 1200  PRINT "5: S.S.P.",,:PRINT USING"#####,.##"; G(5)
  148. 1205  PRINT "M: S.M.P.",,:PRINT USING"#####,.##"; G(10)
  149. 1210  PRINT "6: OTHER SICK PAY",:PRINT USING"#####,.##"; G(6)
  150. 1220  PRINT "7: HOLIDAY PAY",:PRINT USING"#####,.##"; G(7)
  151. 1230  PRINT "8: PRE-TAX ADJUSTMENT",:PRINT USING"#####,.##"; G(8)
  152. 1240  PRINT "9: POST-TAX ADJUSTMENT",:PRINT USING"#####,.##"; G(9)
  153. 1245  TOT=0:FOR K%=1 TO 10:TOT=TOT+G(K%):NEXT K%
  154. 1247  COLOR 5
  155. 1250  PRINT:PRINT "C: COMPLETE",:COLOR 0:PRINT USING "   TOTAL   ########,.##"; TOT:COLOR 5
  156. 1260  PRINT
  157. 1270  PRINT "X: SKIP (NO PAY : NO REFUND)"
  158. 1280  PRINT
  159. 1290  PRINT "W: ADVANCE PERIOD NUMBER"
  160. 1295  PRINT:COLOR 6:PRINT"FREE MEMORY ";FRE(""):COLOR 1
  161. 1297  P$="Enter pay type and hours or pay amount (0-9 & M) or C, X or W ":GOSUB 64600
  162. 1300  COLOR 14,0:GOSUB 11000:COLOR 1,7
  163. 1310  IF Q$="0" THEN T=E(J%,4):GOSUB 15000:G(1)=T:GOTO 5000
  164. 1315  IF INSTR("Mm",Q$) THEN 2035
  165. 1320  IF INSTR("Cc",Q$) THEN 5000
  166. 1330  IF INSTR("Xx",Q$) THEN 8280
  167. 1340  IF INSTR("Ww",Q$) THEN 3000
  168. 1350  Q=VAL(Q$):IF Q<1 OR Q>9 THEN 1300
  169. 2030  T$=""
  170. 2035  IF INSTR("Mm",Q$) THEN GOSUB 2550:GOTO 1060
  171. 2040  ON Q GOSUB 2100,2200,2300,2400,2500,2600,2700,2800,2900
  172. 2050  GOTO 1060
  173. 2100  P$="HOURS (STANDARD TIME) ":GOSUB 64700
  174. 2110  T=T*E(J%,3)
  175. 2120  GOSUB 15000
  176. 2130  G(1)=T
  177. 2140  RETURN
  178. 2200  P$="HOURS ("+STR$(OT1)+" x TIME) ":GOSUB 64700
  179. 2210  T=T*OT1*E(J%,3)
  180. 2220  GOSUB 15000
  181. 2230  G(2)=T
  182. 2240  RETURN
  183. 2300  P$="HOURS ("+STR$(OT2)+" x TIME) ":GOSUB 64700
  184. 2310  T=T*OT2*E(J%,3)
  185. 2320  GOSUB 15000
  186. 2330  G(3)=T
  187. 2340  RETURN
  188. 2400  P$="HOURS ("+STR$(OT3)+" x TIME) ":GOSUB 64700
  189. 2410  T=T*OT3*E(J%,3)
  190. 2420  GOSUB 15000
  191. 2430  G(4)=T
  192. 2440  RETURN
  193. 2500  P$="ENTER AMOUNT of S.S.P. ":GOSUB 64700
  194. 2510  GOSUB 15000
  195. 2520  G(5)=T
  196. 2530  RETURN
  197. 2550  P$="ENTER AMOUNT of S.M.P. ":GOSUB 64700
  198. 2560  GOSUB 15000
  199. 2570  G(10)=T
  200. 2580  RETURN
  201. 2600  P$="ENTER SICK PAY (HOURS) ":GOSUB 64700
  202. 2610  T=T*E(J%,3)
  203. 2620  GOSUB 15000
  204. 2630  G(6)=T
  205. 2640  RETURN
  206. 2700  P$="ENTER HOLIDAY PAY (HOURS) ":GOSUB 64700
  207. 2710  T=T*E(J%,3)
  208. 2720  GOSUB 15000
  209. 2730  G(7)=T
  210. 2740  RETURN
  211. 2800  P$="PRE-TAX ADJUSTMENT - USE 'MINUS' IF A DEDUCTION - AMOUNT ":GOSUB 64700
  212. 2840  GOSUB 15000
  213. 2850  G(8)=T
  214. 2852  P$="Enter reason max 10 characters ":GOSUB 64600:INPUT PRTAX$
  215. 2860  RETURN
  216. 2900  P$="POST-TAX ADJUSTMENT - USE 'MINUS' IF A DEDUCTION - AMOUNT ":GOSUB 64700
  217. 2940  GOSUB 15000
  218. 2950  G(9)=T
  219. 2952  P$="Enter reason max 10 characters ":GOSUB 64600:INPUT POTAX$
  220. 2960  RETURN
  221. 3000  N=N+PW:IF N>WM+PW THEN N=PW
  222. 3010  GOTO 1060
  223. 5000  CLS
  224. 5010  FOR K%=1 TO 8:G(0)=G(0)+G(K%):NEXT K%
  225. 5012  G(0)=G(0)+G(10)
  226. 5015  G(0)=INT(G(0)*100+0.51)/100
  227. 5020  AV=G(0)/PW
  228. 5030  UE=0:UR=0
  229. 5040  PE=0:PR=0
  230. 5050  NI=0:ER=0
  231. 5055  PN=0:PU=0
  232. 5060  IF AV<NL THEN 6000
  233. 5070  AB=INT((AV-TB)/BW)*BW+TB
  234. 5075  PN=AB*PW:IF AV>=NU THEN PN=NU*PW
  235. 5080  AG=0
  236. 5090  IF (AB<NL) AND (AB+BW>=NL) THEN AG=NL
  237. 5100  IF (AB<N1) AND (AB+BW>=N1) THEN AG=N1
  238. 5110  IF (AB<N2) AND (AB+BW>=N2) THEN AG=N2
  239. 5120  IF (AB<N3) AND (AB+BW>=N3) THEN AG=N3
  240. 5130  IF (AB<NU) AND (AB+BW>=NU) THEN AG=NU
  241. 5140  IF AG=0 THEN AA=AB+BW:GOTO 5170
  242. 5150  IF AV>=AG THEN AA=AB+BW:AB=AG:GOTO 5170
  243. 5160  AA=AG
  244. 5170  AG=INT(((AA+AB)/2)*100)/100
  245. 5180  IF AV=NL THEN AG=NL
  246. 5190  IF AV>=NU THEN AG=NU
  247. 5200  NP=0
  248. 5210  IF AV>=N1 THEN NP=1
  249. 5220  IF AV>=N2 THEN NP=2
  250. 5230  IF AV>=N3 THEN NP=3
  251. 5240  B=E(J%,2)-64
  252. 5250  IF E(J%,25)=0 THEN 5400
  253. 5255  PN=NL*PW
  254. 5260  IF B=3 THEN B=0
  255. 5270  AG=AG-NL
  256. 5280  UE=(INT(AG*N(B,2,NP)*100+0.49)/100)*PW
  257. 5290  UR=(INT(AG*N(B,3,NP)*100+0.49)/100)*PW
  258. 5300  PE=(INT(AV*E(J%,11)+0.49)/100)*PW
  259. 5310  PR=(INT(AV*E(J%,13)+0.49)/100)*PW
  260. 5320  AG=NL
  261. 5330  PU=(AB-NL)*PW:IF AV>=NU THEN PU=(NU-NL)*PW
  262. 5400  NI=(INT(AG*N(B,0,NP)*100+0.49)/100)*PW
  263. 5410  ER=(INT(AG*N(B,1,NP)*100+0.49)/100)*PW
  264. 5420  IF AV>NU THEN ER=ER+(INT((INT(AV-NU)*N(B,1,3))*100)/100)*PW
  265. 5450  NI=NI+UE
  266. 5460  ER=ER+UR
  267. 6000  IF LEFT$(E$(J%,2),1)="D" THEN 6300
  268. 6010  IF LEFT$(E$(J%,2),1)="F" THEN 6400
  269. 6015  IF N>WM THEN E(J%,1)=1
  270. 6020  T=E(J%,0):IF T>MTC THEN GOSUB 6500:GOTO 6040
  271. 6030  GOSUB 6800
  272. 6040  GT=G(0)+E(J%,5)-E(J%,12)-PE
  273. 6050  IF E(J%,1)=1 THEN GT=G(0)-PE
  274. 6055  IF N>WM AND E(J%,1)=0 AND GT<=FM THEN TA=0:GOTO 6210
  275. 6057  IF N>WM THEN GT=G(0)-PE
  276. 6060  NN=N/WM
  277. 6070  IF E(J%,1)=1 OR N>WM THEN NN=PW/WM
  278. 6080  IF F>GT THEN TA=0:GOTO 6210
  279. 6090  TP=INT((GT-F)*100+9.9999E-05)/100
  280. 6100  IF TP>INT(C(1)*NN+1) AND T<>-1 THEN 6140
  281. 6110  TA=INT(TP)*R(1)
  282. 6120  IF T=-1 THEN TA=INT(TP)*R(GPTR)
  283. 6130  GOTO 6200
  284. 6140  B=1
  285. 6170  TA=ABS((INT(C(B)*NN*10^4)/10^4)-INT(TP))
  286. 6180  TA=TA*R(B+1)
  287. 6190  TA=TA+(INT(K(B)*NN*10^4)/10^4)
  288. 6200  TA=INT(TA*100)/100
  289. 6210  IF E(J%,1)=0 AND N<=WM THEN TA=INT((TA-E(J%,6))*100+0.5)/100
  290. 6220  GOTO 7010
  291. 6300  TA=INT(G(0)-PE)*R(GPTR+E(J%,0)+1)
  292. 6310  GOTO 6200
  293. 6400  TP=G(0)-PE
  294. 6410  IF E(J%,1)=0 AND N<WM+PW THEN TP=TP+E(J%,5)-E(J%,12)
  295. 6420  TP=INT(TP*4)/4
  296. 6430  TA=TP*((E(J%,0)/2)/100)
  297. 6440  GOTO 6200
  298. 6500  L=INT(T/MTC)+1
  299. 6505  T(1)=INT(T/L):T(0)=0
  300. 6510  FOR K=1 TO L
  301. 6515  T(K)=T(1):T(0)=T(0)+T(K)
  302. 6520  NEXT K
  303. 6525  IF T(0)=T THEN 6555
  304. 6530  FOR K%=1 TO L
  305. 6535  T(K%)=T(K%)+1:T(0)=T(0)+1
  306. 6540  IF T(0)=T THEN K%=L+5
  307. 6545  NEXT K%
  308. 6550  IF K%<L+5 THEN 6530
  309. 6555  T(0)=0:FOR K%=1 TO L
  310. 6560  T=T(K%):GOSUB 6800:T(0)=T(0)+F
  311. 6565  NEXT K%
  312. 6566  FF=T(0)
  313. 6567  T(0)=0:FOR K=1 TO L
  314. 6568  T=T(K):GOSUB 6800:T(0)=T(0)+FM
  315. 6569  NEXT K
  316. 6570  FM=T(0):F=FF:RETURN
  317. 6800  NN=N:IF E(J%,1)=1 OR N>WM THEN NN=PW
  318. 6810  F=NN*INT(((INT(T*10+9)/WM*10^4)/10^4+0.0099)*100)/100
  319. 6815  FM=WM*INT(((INT(T*10+9)/WM*10^4)/10^4+0.0099)*100)/100
  320. 6820  IF T<1 THEN F=0:FM=0
  321. 6830  RETURN
  322. 7000  REM PRINT PAYSLIP
  323. 7010  CLS
  324. 7020  DA$=D$:IF N<>W THEN GOSUB 17000:CLS
  325. 7030  FOR H=0 TO Z:DV=3:IF H>0 THEN DV=4
  326. 7035  IF H>0 AND PAYSLIP$="H" THEN GOSUB 29000:GOTO 7540
  327. 7040  IF DV=4 THEN GOSUB 64000
  328. 7050  CLS:IF DV=4 THEN Q$=CL$:GOSUB 64200:IF P%=0 THEN PRINT ELSE IF DV=4 AND P%=8 THEN LPRINT
  329. 7060  Q$="NAME      "+E$(J%,0):GOSUB 64200
  330. 7070  IF DV=3 THEN 7150
  331. 7080  Q$="PAY No. "+STR$(J%):GOSUB 64200
  332. 7090  Q$="NI No.   "+E$(J%,1):GOSUB 64200
  333. 7100  Q$="TAX CODE "+E$(J%,2):GOSUB 64200
  334. 7110  IF P%=0 THEN PRINT ELSE LPRINT
  335. 7120  Q$="PERIOD No. "+STR$(N):GOSUB 64300
  336. 7130  Q$="    :    DATE - "+DA$:GOSUB 64200
  337. 7140  GOSUB 64100
  338. 7150  Q$="PAY (NORMAL TIME)":R=1:T=G(1):GOSUB 18000
  339. 7160  Q$="OVERTIME (1) "+STR$(OT1):R=0:T=G(2):GOSUB 18000
  340. 7170  Q$="OVERTIME (2) "+STR$(OT2):R=0:T=G(3):GOSUB 18000
  341. 7180  Q$="OVERTIME (3) "+STR$(OT3):R=0:T=G(4):GOSUB 18000
  342. 7190  Q$="S.S.P.":R=0:T=G(5):GOSUB 18000
  343. 7195  Q$="S.M.P.":R=0:T=G(10):GOSUB 18000
  344. 7200  Q$="SICK PAY":R=0:T=G(6):GOSUB 18000
  345. 7210  Q$="HOLIDAY PAY":R=0:T=G(7):GOSUB 18000
  346. 7220  Q$="BONUS/ADJ.":R=0:T=G(8):GOSUB 18000
  347. 7230  GOSUB 64100
  348. 7240  Q$="GROSS PAY":R=1:T=G(0):GOSUB 18000
  349. 7250  GOSUB 64100
  350. 7260  Q$="TAX":R=1:T=TA:GOSUB 18000
  351. 7270  Q$="N.I.":R=1:T=NI:GOSUB 18000
  352. 7280  Q$="PENSION":R=E(J%,25):T=PE:GOSUB 18000
  353. 7290  Q$="ADJUSTMENT":R=0:T=G(9):GOSUB 18000
  354. 7300  GOSUB 64100
  355. 7310  Q$="TOTAL DEDUCTIONS":R=1
  356. 7320  T=NI+PE+TA-G(9):GOSUB 18000:PA=G(0)-T:COLOR 1
  357. 7330  GOSUB 64100
  358. 7340  Q$="NET PAYABLE":R=1:T=PA:GOSUB 18000
  359. 7350  IF DV=3 THEN 7450
  360. 7360  IF P%=0 THEN PRINT ELSE LPRINT
  361. 7370  Q$="N.I. (ER)":R=1:T=ER:GOSUB 18000
  362. 7380  Q$="PENSION (ER)":R=E(J%,25):T=PR:GOSUB 18000
  363. 7390  Q$="GROSS TO DATE":R=1:T=G(0)+E(J%,5):GOSUB 18000
  364. 7400  Q$="TAX TO DATE":R=1:T=TA+E(J%,6):GOSUB 18000
  365. 7410  Q$="N.I. UPPER (EE)":R=E(J%,25):T=UE:GOSUB 18000
  366. 7420  Q$="N.I. UPPER (ER)":R=E(J%,25):T=UR:GOSUB 18000
  367. 7430  Q$="UPPER TO DATE (EE)":R=E(J%,25):T=UE+E(J%,15):GOSUB 18000
  368. 7440  Q$="UPPER TO DATE (ER)":R=E(J%,25):T=UR+E(J%,16):GOSUB 18000
  369. 7445  Q$="PAY FOR NI (STD)":R=1:T=PN:GOSUB 18000
  370. 7447  Q$="PAY FOR NI (UPPER)":R=E(J%,25):T=PU:GOSUB 18000
  371. 7450  GOSUB 64100:Q$="":GOSUB 64200
  372. 7455  P%=0
  373. 7460  IF DV=4 THEN GOSUB 10999:GOTO 7540
  374. 7470  P$="Press 'C' to CANCEL, 'P' to PRINT or 'R' to RECORD ONLY":GOSUB 64600
  375. 7490  GOSUB 11000
  376. 7500  IF INSTR("Cc",Q$) THEN H=Z+5:GOTO 7540
  377. 7510  IF INSTR("Pp",Q$) THEN 7540
  378. 7520  IF INSTR("Rr",Q$) THEN H=Z:GOTO 7540
  379. 7530  GOTO 7490
  380. 7540  NEXT H:IF H>Z+1 THEN 1030
  381. 8000  E(J%,5)=E(J%,5)+G(0)
  382. 8005  E(0,5)=E(0,5)+G(0)
  383. 8010  E(J%,6)=E(J%,6)+TA
  384. 8015  E(0,6)=E(0,6)+TA
  385. 8020  E(J%,7)=E(J%,7)+NI
  386. 8025  E(0,7)=E(0,7)+NI
  387. 8030  E(J%,9)=E(J%,9)+ER
  388. 8035  E(0,9)=E(0,9)+ER
  389. 8040  E(J%,12)=E(J%,12)+PE
  390. 8045  E(0,12)=E(0,12)+PE
  391. 8050  E(J%,14)=E(J%,14)+PR
  392. 8055  E(0,14)=E(0,14)+PR
  393. 8060  E(J%,15)=E(J%,15)+UE
  394. 8065  E(0,15)=E(0,15)+UE
  395. 8070  E(J%,16)=E(J%,16)+UR
  396. 8075  E(0,16)=E(0,16)+UR
  397. 8080  E(J%,17)=E(J%,17)+G(5)
  398. 8085  E(0,17)=E(0,17)+G(5)
  399. 8086  E(J%,24)=E(J%,24)+G(10)
  400. 8087  E(0,24)=E(0,24)+G(10)
  401. 8090  E(J%,20)=N
  402. 8095  E(J%,22)=E(J%,22)+PN
  403. 8096  E(0,22)=E(0,22)+PN
  404. 8097  E(J%,23)=E(J%,23)+PU
  405. 8098  E(0,23)=E(0,23)+PU
  406. 8100  S(J%,0)=S(J%,0)+G(0)
  407. 8110  S(J%,1)=S(J%,1)+TA
  408. 8120  S(J%,2)=S(J%,2)+NI+ER
  409. 8130  S(J%,3)=S(J%,3)+PE+PR
  410. 8140  S(J%,4)=S(J%,4)+G(5)+G(10)
  411. 8150  S(J%,5)=S(J%,5)+PA
  412. 8220  P$="Press S for same employee - Press SPACE BAR for next employee":GOSUB 64600
  413. 8250  GOSUB 11000
  414. 8260  IF INSTR("Ss",Q$) THEN 1030
  415. 8270  IF Q$<>" " THEN 8250
  416. 8280  NEXT J%
  417. 8300  FOR J=1 TO NE:FOR K=0 TO 5:S(0,K)=S(0,K)+S(J,K):NEXT K,J
  418. 8310  P(0)=P(0)+E(0,5)
  419. 8320  P(1)=P(1)+E(0,6)
  420. 8330  P(3)=P(3)+E(0,17)
  421. 8335  P(4)=P(4)+E(0,24)
  422. 8340  P(5)=P(5)+E(0,7)
  423. 8350  P(6)=P(6)+E(0,9)
  424. 8360  P(7)=P(7)+E(0,15)
  425. 8370  P(8)=P(8)+E(0,16)
  426. 8380  P(9)=P(9)+E(0,12)
  427. 8390  P(10)=P(10)+E(0,14)
  428. 8400  P(2)=P(5)+P(6)
  429. 8520  IF PAYSLIP$="H" THEN P$="Change payslip paper for plain paper ":GOSUB 64600:INPUT G$
  430. 8530  P$="Press SPACE for Current Period Summary":GOSUB 64600
  431. 8540  GOSUB 11000
  432. 8550  IF Q$<>" " THEN 8540
  433. 8560  GOSUB 64000
  434. 8570  CLS:IF P%=0 THEN PRINT CL$:PRINT ELSE IF P%=8 THEN LPRINT CL$:LPRINT
  435. 8580  Q$="CURRENT PERIOD SUMMARY - TAX PERIOD"+STR$(W)+" - P/E "+D$:GOSUB 64200
  436. 8590  IF P%=0 THEN PRINT:PRINT:R=1
  437. 8595  IF P%=8 THEN LPRINT:LPRINT:R=1
  438. 8600  Q$="GROSS PAY":T=E(0,5):GOSUB 18000
  439. 8610  IF P%=0 THEN PRINT ELSE IF P%=8 THEN LPRINT
  440. 8620  Q$="TAX":T=E(0,6):GOSUB 18000
  441. 8630  Q$="N.I.":T=E(0,7)+E(0,9):GOSUB 18000
  442. 8640  Q$="S.S.P.":T=E(0,17):GOSUB 18000
  443. 8645  Q$="S.M.P.":T=E(0,24):GOSUB 18000
  444. 8650  IF P%=0 THEN PRINT ELSE IF P%=8 THEN LPRINT
  445. 8660  Q$="TOTAL PAYABLE TO I.R."
  446. 8670  T=E(0,6)+E(0,7)+E(0,9)-E(0,17)-E(0,24):GOSUB 18000
  447. 8680  IF P%=0 THEN PRINT ELSE IF P%=8 THEN LPRINT
  448. 8690  Q$="N.I. (EES)":T=E(0,7):GOSUB 18000
  449. 8700  Q$="N.I. (ER)":T=E(0,9):GOSUB 18000
  450. 8710  Q$="PENSION (EE)":T=E(0,12):GOSUB 18000
  451. 8720  Q$="PENSION (ER)":T=E(0,14):GOSUB 18000
  452. 8725  Q$="NI PAY (STD)":T=E(0,22):GOSUB 18000
  453. 8727  Q$="NI PAY (UPPER)":T=E(0,23):GOSUB 18000
  454. 8730  GOSUB 64100:P%=0
  455. 8760  P$="Press R to repeat or SPACE BAR for EMPLOYEE SUMMARY":GOSUB 64600
  456. 8790  GOSUB 11000
  457. 8800  IF INSTR("Rr",Q$) THEN 8560
  458. 8810  IF Q$<>" " THEN 8790
  459. 8820  GOSUB 64000
  460. 8830  CLS:IF P%=0 THEN PRINT:PRINT:PRINT CL$:PRINT ELSE LPRINT:LPRINT:LPRINT CL$:LPRINT
  461. 8840  Q$="EMPLOYEE SUMMARY - TAX PERIOD"+STR$(W)+" - P/E "+D$:GOSUB 64200
  462. 8850  IF P%=0 THEN PRINT:PRINT ELSE LPRINT:LPRINT
  463. 8860  Q$="NAME" + STRING$(15," ") + "......GROSS......TAX...NI (TOT).PEN (TOT)......SSP*...PAYABLE":GOSUB 64200
  464. 8890  FOR J=1 TO NE
  465. 8900  IF E(J,21)=1 THEN 8950
  466. 8910  Q$=E$(J,0)+STRING$(20-LEN(E$(J,0))," "):GOSUB 64300
  467. 8920  FOR H=0 TO 5
  468. 8930  IF P%=0 THEN PRINT USING"#######.##";S(J,H);
  469. 8935  IF P%=8 THEN LPRINT USING"#######.##";S(J,H);
  470. 8940  NEXT H:IF P%=0 THEN PRINT ELSE IF P%=8 THEN LPRINT
  471. 8950  NEXT J
  472. 8955  IF P%=0 THEN PRINT ELSE IF P%=8 THEN LPRINT
  473. 8960  Q$="TOTAL"+STRING$(15," "):GOSUB 64300
  474. 8970  FOR H=0 TO 5
  475. 8980  IF P%=0 THEN PRINT USING"#######.##";S(0,H);
  476. 8985  IF P%=8 THEN LPRINT USING"#######.##";S(0,H);
  477. 8990  NEXT H
  478. 8995  Q$="":GOSUB 64200:Q$="* Includes S.M.P.":GOSUB 64200
  479. 9000  Q$=STRING$(80,"-"):GOSUB 64200:P%=0
  480. 9020  P$="Press R to repeat, P for Cumulative Period Summary or SPACE to record data":GOSUB 64600
  481. 9080  GOSUB 11000
  482. 9090  IF INSTR("Rr",Q$) THEN 8820
  483. 9100  IF Q$=" " THEN 9500
  484. 9110  IF INSTR("Pp",Q$)=0 THEN 9080
  485. 9120  GOSUB 64000:IF P%=0 THEN CLS ELSE LPRINT
  486. 9130  Q$=CL$:GOSUB 64200
  487. 9135  IF P%=0 THEN PRINT ELSE LPRINT
  488. 9140  Q$="CUMULATIVE PERIOD SUMMARY - PERIOD ENDING "+D$:GOSUB 64200
  489. 9150  IF P%=0 THEN PRINT:PRINT ELSE IF P%=8 THEN LPRINT:LPRINT
  490. 9160  Q$="GROSS PAY":T=P(0):GOSUB 18000
  491. 9170  Q$="TAX":T=P(1):GOSUB 18000
  492. 9180  Q$="N.I.":T=P(2):GOSUB 18000
  493. 9190  Q$="SSP":T=P(3):GOSUB 18000
  494. 9195  Q$="SMP":T=P(4):GOSUB 18000
  495. 9200  Q$="TOTAL TO I.R.":T=(P(1)+P(2))-(P(3)+P(4)):GOSUB 18000
  496. 9210  Q$="N.I. (EE)":T=P(5):GOSUB 18000
  497. 9220  Q$="N.I. (ER)":T=P(6):GOSUB 18000
  498. 9230  Q$="N.I. U.B. (ER)":T=P(8):GOSUB 18000
  499. 9250  Q$="PENSION (EE)":T=P(9):GOSUB 18000
  500. 9260  Q$="PENSION (ER)":T=P(10):GOSUB 18000
  501. 9270  GOSUB 64100:P%=0
  502. 9300  GOSUB 10999
  503. 9310  P$="Press R to repeat, SPACE to record data or C to re-set Period Summary":GOSUB 64600
  504. 9350  GOSUB 11000
  505. 9360  IF INSTR("Rr",Q$) THEN 9080
  506. 9365  IF INSTR("Cc",Q$) THEN 9400
  507. 9370  IF Q$<>" " THEN 9350
  508. 9400  FOR J=0 TO 10
  509. 9410  P(J)=0
  510. 9420  NEXT J
  511. 9500  GOSUB 50000
  512. 9505  GOSUB 20000
  513. 9520  P$="Press R to Record Back-up copy on separate disc or SPACE to end.":GOSUB 64600
  514. 9550  GOSUB 11000
  515. 9560  IF INSTR("Rr",Q$) THEN GOSUB 50000:GOTO 9520
  516. 9570  IF Q$<>" " THEN 9550
  517. 9600  CLS
  518. 9610  CLEAR
  519. 9620  RUN "selectp
  520. 10000  PRINT TAB(LL/2-(LEN(P$)/2))P$
  521. 10010  RETURN
  522. 10999  P$="Press any key to continue":GOSUB 64600:RETURN
  523. 11000  PRINT "? ";:Q$="": WHILE Q$="":Q$=INKEY$:WEND
  524. 11010  RETURN
  525. 12000  P$="Press 'D' to continue to SAVE data - 'M' not to SAVE":GOSUB 64600:RETURN
  526. 14000  CLS
  527. 14010  PRINT:PRINT
  528. 14020  RETURN
  529. 15000  T=INT(T*100+0.5)/100
  530. 15010  RETURN
  531. 16000  G$=""
  532. 16010  WHILE G$=""
  533. 16020  G$=INKEY$
  534. 16030  IF G$="" THEN 16020
  535. 16040  WEND
  536. 16050  RETURN
  537. 17000  PRINT:PRINT TAB(30)"Enter Tax Period "N
  538. 17010  COLOR 4:PRINT:PRINT"  Current date is ";DATE$;" (MM.DD.YY).   If OK press 'Y' else any key. ";:GOSUB 11000:IF INSTR("Yy",Q$) THEN DA$=DATE$:GOTO 17030
  539. 17020  PRINT:PRINT:INPUT"DD.MM.YY ";DA$:IF LEN(DA$)<>8 THEN 17020
  540. 17030  RETURN
  541. 18000  IF R=0 AND T=0 THEN RETURN
  542. 18010  GOSUB 15000
  543. 18020  IF P%=0 THEN PRINT Q$;:PRINT TAB(30);USING"#######,.##";T
  544. 18025  IF P%=8 THEN LPRINT Q$;:LPRINT TAB(30);USING"#######,.##";T
  545. 18030  RETURN
  546. 19000  IF R=0 AND T=0 THEN RETURN
  547. 19010  GOSUB 15000
  548. 19020  LPRINT TAB(TAB%);USING"#####.##";T;
  549. 19030  RETURN
  550. 20000  X=10:GT=0:N=1:RESTORE 20020
  551. 20010  DIM C$(X),CC(X),TT(X),GG(X)
  552. 20020  DATA #20,#10,#5,#1,50p,20p,10p,5p,2p,1p
  553. 20030  DATA 20,10,5,1,.5,.2,.1,.05,.02,.01
  554. 20040  FOR J=1 TO X:READ C$(J):NEXT
  555. 20050  FOR J=1 TO X:READ CC(J):NEXT
  556. 20060  CLS
  557. 20090  P$="MICRO-AID PC1512 PAYROLL COIN ANALYSIS":GOSUB 10000
  558. 20100  GOSUB 64000
  559. 20106  CLS:Q$=P$+" for "+CL$:GOSUB 64200:PRINT
  560. 20108  TB=7:FOR J%=1 TO X:Q$=C$(J%):GOSUB 64400:TB=TB+8:NEXT J%:IF P%=0 THEN PRINT ELSE LPRINT
  561. 20110  FOR J=1 TO NE
  562. 20120  IF E(J,21)=1 THEN 20430
  563. 20130  IF S(J,5)=0 THEN 20430
  564. 20140  N=N+1
  565. 20150  P$=STR$(S(J,5))
  566. 20160  F=0
  567. 20170  P=0:FOR J%=1 TO LEN(P$)
  568. 20180  T$=MID$(P$,J%,1)
  569. 20190  IF T$="." THEN 20210
  570. 20200  IF T$<"0" OR T$>"9" THEN F=1
  571. 20210  GOTO 20240
  572. 20220  P=P+1
  573. 20230  IF P>1 OR LEN(P$,J%))>3 THEN F=1
  574. 20240  NEXT J%
  575. 20250  P=VAL(P$)+9.9999E-05
  576. 20260  PN=P
  577. 20270  GT=GT+P
  578. 20280  FOR J%=1 TO X
  579. 20290  P=P+9.999E-06
  580. 20300  A=INT(P/CC(J%))
  581. 20310  P=P-A*CC(J%)
  582. 20320  TT(J%)=A
  583. 20330  GG(J%)=GG(J%)+A
  584. 20340  NEXT J%
  585. 20360  Q$=STR$(J):GOSUB 64300
  586. 20365  TB=5
  587. 20370  FOR J%=1 TO X
  588. 20380  A=TT(J%):T=A*CC(J%)+9.9999E-05:GOSUB 20530
  589. 20385  TB=TB+8
  590. 20390  NEXT J%
  591. 20400  Q$="":GOSUB 64200
  592. 20430  NEXT J
  593. 20440  Q$=STRING$(80,"-"):GOSUB 64200:IF P%=0 THEN PRINT ELSE LPRINT
  594. 20450  Q$="TOTAL CASH REQUIRED FOR"+STR$(N-1)+" PAYSLIPS":GOSUB 64200:IF P%=0 THEN PRINT ELSE LPRINT
  595. 20460  TB=5
  596. 20470  FOR J%=1 TO X
  597. 20480  Q$=C$(J%):A=GG(J%):T=A*CC(J%)+9.9999E-05:GOSUB 20530
  598. 20485  TB=TB+8
  599. 20490  NEXT J%
  600. 20500  Q$="":GOSUB 64200
  601. 20510  Q$="Total":T=INT(GT*100)/100:GOSUB 18000
  602. 20520  PRINT:PRINT:RETURN
  603. 20530  Q$=STR$(A):GOSUB 64500
  604. 20560  RETURN
  605. 29000  TAB%=INT(TAB%(2)/2)
  606. 29010  LPRINT TAB(TAB%)CL$ TAB(TAB%(7)*0.75)"EMPLOYEE No.";J%;TAB(TAB%(7))"NI No. "E$(J%,1)
  607. 29015  LPRINT:LPRINT:LPRINT
  608. 29020  LPRINT TAB(TAB%(1))"BASIC PAY "HRS;TAB(TAB%(2)-4)"x" E(J%,3);:TAB%=TAB%(4):T=G(1):GOSUB 19000
  609. 29030  LPRINT TAB(TAB%(5))"TAX";:TAB%=TAB%(6):T=TA:GOSUB 19000
  610. 29040  LPRINT TAB(TAB%(7))"NI (ER)";:TAB%=TAB%(8):T=ER:GOSUB 19000:LPRINT
  611. 29050  LPRINT TAB(TAB%(1))"OVERTIME"OT1 TAB(TAB%(2)-4)"x"; OT1*E(J%,3);:TAB%=TAB%(4):T=G(2):GOSUB 19000
  612. 29060  LPRINT TAB(TAB%(5))"NI";:TAB%=TAB%(6):T=NI:GOSUB 19000
  613. 29070  IF PR>0 THEN LPRINT TAB(TAB%(7))"PENS. ER";:TAB%=TAB%(8):T=PR:GOSUB 19000 ELSE LPRINT
  614. 29080  LPRINT TAB(TAB%(1))"OVERTIME"OT2 TAB(TAB%(2)-4)"x"; OT2*E(J%,3);:TAB%=TAB%(4):T=G(3):GOSUB 19000
  615. 29090  LPRINT TAB(TAB%(5))"PENSION";:TAB%=TAB%(6):T=PE:GOSUB 19000
  616. 29100  LPRINT TAB(TAB%(7))"GROSS TD";:TAB%=TAB%(8):T=G(0)+E(J%,5):GOSUB 19000:LPRINT
  617. 29110  LPRINT TAB(TAB%(1))"OVERTIME"OT3 TAB(TAB%(2)-4)"x"; OT3*E(J%,3);:TAB%=TAB%(4):T=G(4):GOSUB 19000
  618. 29120  LPRINT TAB(TAB%(5))POTAX$;:TAB%=TAB%(6):T=G(9):GOSUB 19000
  619. 29130  LPRINT TAB(TAB%(7))"TAX TD";:TAB%=TAB%(8):T=TA+E(J%,9):GOSUB 19000:LPRINT
  620. 29140  LPRINT TAB(TAB%(1))"S.S.P.";:TAB%=TAB%(4):T=G(5):GOSUB 19000
  621. 29150  LPRINT TAB(TAB%(7))"NI PAY STD";:TAB%=TAB%(8):T=PN:GOSUB 19000:LPRINT
  622. 29155  LPRINT TAB(TAB%(1))"S.M.P.";:TAB%=TAB%(4):T=G(10):GOSUB 19000
  623. 29158  LPRINT TAB(TAB%(7))"NI PAY UPP";:TAB%=TAB%(8):T=PU:GOSUB 19000:LPRINT
  624. 29160  LPRINT TAB(TAB%(1))"SICK PAY";:TAB%=TAB%(4):T=G(6):GOSUB 19000
  625. 29165  IF UE>0 THEN LPRINT TAB(TAB%(7))"NI UPR EE";:TAB%=TAB%(8):T=UE:GOSUB 19000:LPRINT ELSE LPRINT
  626. 29170  LPRINT TAB(TAB%(1))"HOLIDAY PAY";:TAB%=TAB%(4):T=G(7):GOSUB 19000
  627. 29180  IF UR>0 THEN LPRINT TAB(TAB%(7))"NI UPR ER";:TAB%=TAB%(8):T=UR:GOSUB 19000:LPRINT ELSE LPRINT
  628. 29190  LPRINT TAB(TAB%(1))PRTAX$;:TAB%=TAB%(4):T=G(8):GOSUB 19000
  629. 29200  IF (UE+E(J%,15))>0 THEN LPRINT TAB(TAB%(7))"UPP TD EE";:TAB%=TAB%(8):T=UE+E(J%,15):GOSUB 19200:LPRINT ELSE LPRINT
  630. 29210  IF (UR+E(J%,16))>0 THEN LPRINT TAB(TAB%(7))"UPP TD ER"TAB(TAB%(8))UR+E(J%,16) ELSE LPRINT
  631. 29220  LPRINT TAB(TAB%(1))"GROSS PAY";:TAB%=TAB%(4):T=G(0):GOSUB 19000
  632. 29230  T=NI+PE+TA-G(9):LPRINT TAB(TAB%(5))"DEDUCTIONS";:TAB%=TAB%(6):GOSUB 19000:PA=G(0)-T:LPRINT
  633. 29235  LPRINT:LPRINT:LPRINT
  634. 29240  LPRINT TAB(TAB%(1))DA$ TAB(TAB%(2)) E$(J%,2) TAB(TAB%(4)+1);N; TAB(TAB%(5)-2) E$(J%,0);:TAB%=TAB%(8):T=PA:GOSUB 19000:LPRINT
  635. 29260  LPRINT:LPRINT:LPRINT:LPRINT:LPRINT
  636. 29270  RETURN
  637. 40000  CLS
  638. 40010  TEXT$="LOAD DATA":GOSUB 10000
  639. 40200  OPEN PAYFILE$ FOR INPUT AS #1
  640. 40210  INPUT #1, CL$
  641. 40220  P$="LOADING "+CL$+" FILE":GOSUB 64600
  642. 40230  INPUT #1, NE
  643. 40240  FOR J=0 TO 10
  644. 40250  INPUT #1, P(J)
  645. 40260  NEXT
  646. 40270  FOR J=1 TO NE
  647. 40280  FOR K=0 TO 2
  648. 40290  INPUT #1,E$(J,K)
  649. 40300  NEXT K
  650. 40310  FOR K=0 TO 25
  651. 40320  INPUT #1,E(J,K)
  652. 40330  NEXT K,J
  653. 40340  CLOSE #1
  654. 40350  RETURN
  655. 50000  CLS
  656. 50010  TEXT$="SAVE DATA":GOSUB 10000
  657. 50030  GOSUB 12000
  658. 50040  GOSUB 11000
  659. 50050  IF INSTR("Mm",Q$) THEN RETURN
  660. 50060  IF INSTR("Dd",Q$) THEN 50080
  661. 50070  GOTO 50040
  662. 50080  OPEN "O",#1,PAYFILE$
  663. 50090  WRITE #1,CL$
  664. 50100  PRINT:PRINT"SAVING ";CL$;" FILE":PRINT
  665. 50110  WRITE #1,NE
  666. 50120  FOR J=0 TO 10
  667. 50130  WRITE #1,P(J)
  668. 50140  NEXT
  669. 50150  FOR J=1 TO NE
  670. 50160  FOR K= 0 TO 2
  671. 50170  WRITE #1,E$(J,K)
  672. 50180  NEXT K
  673. 50190  FOR K=0 TO 25
  674. 50200  WRITE #1,E(J,K)
  675. 50210  NEXT K: NEXT J
  676. 50220  CLOSE #1
  677. 50230  RETURN
  678. 60000  CLS:PRINT:PRINT "AN ERROR HAS BEEN FOUND AS FOLLOWS:_":PRINT:
  679. 60010  PRINT "PROGRAM LINE "ERL
  680. 60020  PRINT "ERROR TYPE "ERR
  681. 60030  PRINT
  682. 60040  IF ERR=53 THEN PRINT "FILE NOT FOUND - CHECK CORRECT DISC IS IN DRIVE A":PRINT:PRINT "THE FILES ON THE DISC ARE AS FOLLOWS:-":PRINT:FILES:PRINT:PRINT STRING$(80,"_"):PRINT
  683. 60045  IF ERR=25 THEN PRINT "PRINTER NOT ON OR CONNECTED"
  684. 60050  PRINT:PRINT"Press any key to continue ";
  685. 60060  G$=INKEY$:IF G$="" THEN 60060
  686. 60070  CLS:RESUME 120
  687. 61000  COLOR 2
  688. 61020  R1=1:C1=1:R2=24:C2=79
  689. 61050  FOR I = R1+1 TO R2-1
  690. 61060   LOCATE I,C1:PRINT CHR$(186);
  691. 61070   LOCATE I,C2:PRINT CHR$(186);
  692. 61080  NEXT I
  693. 61090  FOR J = C1+1 TO C2-1
  694. 61100   LOCATE R1,J:PRINT CHR$(205);
  695. 61110   LOCATE R2,J:PRINT CHR$(205);
  696. 61120  NEXT J
  697. 61130   LOCATE R1,C1:PRINT CHR$(201);
  698. 61140   LOCATE R1,C2:PRINT CHR$(187);
  699. 61150   LOCATE R2,C1:PRINT CHR$(200);
  700. 61160   LOCATE R2,C2:PRINT CHR$(188);
  701. 61190  RETURN
  702. 62000  TITLE.POS=40-INT(LEN(TEXT$)/2)
  703. 62020  R1=8:C1=22:R2=18:C2=56
  704. 62030  COLOR 1
  705. 62040  FOR II=R1+1 TO R2-1
  706. 62050   LOCATE II,C1:PRINT CHR$(179);
  707. 62060   LOCATE II,C2:PRINT CHR$(179);
  708. 62070  NEXT
  709. 62080  FOR JJ=C1+1 TO C2-1
  710. 62090   LOCATE R1,JJ:PRINT CHR$(196);
  711. 62100   LOCATE R2,JJ:PRINT CHR$(196);
  712. 62110  NEXT
  713. 62120   LOCATE R1,C1:PRINT CHR$(218);
  714. 62130   LOCATE R1,C2:PRINT CHR$(191);
  715. 62140   LOCATE R2,C1:PRINT CHR$(192);
  716. 62150   LOCATE R2,C2:PRINT CHR$(217);
  717. 62160  RETURN
  718. 64000  P$="Enter 'Y' if paper printout required else press any key ":GOSUB 64600:GOSUB 11000:IF INSTR("Yy",Q$) THEN P%=8 ELSE P%=0
  719. 64010  RETURN
  720. 64100  IF P%=0 THEN PRINT STRING$(40,"-") ELSE LPRINT STRING$(40,"-")
  721. 64110  RETURN
  722. 64200  IF P%=0 THEN PRINT Q$ ELSE LPRINT Q$
  723. 64210  RETURN
  724. 64300  IF P%=0 THEN PRINT Q$; ELSE LPRINT Q$;
  725. 64310  RETURN
  726. 64400  IF P%=0 THEN PRINT TAB(TB);Q$; ELSE LPRINT TAB(TB);Q$;
  727. 64410  RETURN
  728. 64500  IF P%=0 THEN PRINT TAB(TB);USING"####";VAL(Q$); ELSE LPRINT TAB(TB);USING"####";VAL(Q$);
  729. 64510  RETURN
  730. 64600  COLOR 14,0:LOCATE 25,2:PRINT STRING$(78," ");:LOCATE 25,2:PRINT TAB((78-LEN(P$))/2)P$;:COLOR 1,7:P$="":RETURN
  731. 64700  COLOR 14,0:LOCATE 25,2:PRINT STRING$(78," ");:LOCATE 25,2:PRINT TAB((78-LEN(P$))/2)P$;:P$="":INPUT T:COLOR 1,7:RETURN
  732.