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

  1. 10  REM PAYE1 for IBM PC's   V PC4.0  28.04.1987
  2. 20  REM MICRO-AID COPYRIGHT 1985
  3. 30  REM 25 FORE STREET, PRAZE,
  4. 40  REM CAMBORNE, CORNWALL. TR14 0JX
  5. 60  M=75
  6. 70  SCREEN 0,1,0:WIDTH 80:COLOR 1,7,3
  7. 80  KEY OFF
  8. 90  ON ERROR GOTO 60000
  9. 110  DIM E$(M,2),E(M,25),P(10),NI$(1),M$(7),P$(24),T$(3)
  10. 120  X=5:GPTR=1
  11. 130  TAX$="LHPVTFD"
  12. 140  NI$(0)="ABCILMPRSTVW"
  13. 150  NI$(1)="DEFGHKNO"
  14. 160  B$=STRING$(78," "):PAYFILE$="paydata"
  15. 300  FOR J=0 TO 7:READ M$(J):NEXT
  16. 310  FOR J=0 TO 24:READ P$(J):NEXT
  17. 400  DATA SET UP NEW DATA-FILE
  18. 401  DATA ADD EMPLOYEE
  19. 402  DATA DELETE EMPLOYEE
  20. 403  DATA EMPLOYEE DETAILS
  21. 404  DATA 'P35' LISTING
  22. 405  DATA 'BLANKET' TAX CODE CHANGES
  23. 406  DATA "RECORD DATA to DISC"
  24. 407  DATA 'END'
  25. 410  DATA TAX CODE
  26. 411  DATA WEEK/MONTH 1 BASIS (Y/N)
  27. 412  DATA N.I. TABLE
  28. 413  DATA PAY/HOUR
  29. 414  DATA PAY/PERIOD
  30. 415  DATA G.P. TO DATE
  31. 416  DATA TAX TO DATE
  32. 417  DATA N.I. (EE) (NOW)
  33. 418  DATA N.I. (EE) (LAST)
  34. 419  DATA N.I. (ER) (NOW)
  35. 420  DATA N.I. (ER) (LAST)
  36. 421  DATA PENSION % (EE)
  37. 422  DATA PEN TO DATE (EE)
  38. 423  DATA PENSION % (ER)
  39. 424  DATA PEN TO  DATE (ER)
  40. 425  DATA N.I. U/B (EE)
  41. 426  DATA N.I. U/B (ER)
  42. 427  DATA SSP TO DATE
  43. 428  DATA G.P. PREVIOUS
  44. 429  DATA TAX PREVIOUS
  45. 430  DATA PAID TO TAX PERIOD
  46. 431  DATA LEFT (Y/N)
  47. 432  DATA NI PAY (STD)
  48. 433  DATA NI PAY (UPPER)
  49. 434  DATA SMP TO DATE
  50. 500  CLS
  51. 520  PRINT
  52. 530  TEXT$="Micro-Aid IBM PC & COMPATIBLES PAYROLL":GOSUB 10000
  53. 540  TEXT$="PERSONNEL RECORDS":GOSUB 10000
  54. 550  PRINT
  55. 555  COLOR 4
  56. 560  FOR J=1 TO 8
  57. 570  PRINT TAB(24) J;" : ";
  58. 580  IF J=7 THEN PRINT;
  59. 590  PRINT M$(J-1):PRINT
  60. 600  NEXT
  61. 602  COLOR 1
  62. 605  PRINT:PRINT TAB(24)NE" EMPLOYEE";:IF NE>1 THEN PRINT "S";
  63. 606  PRINT TAB(40)FRE(X)"MEMORY FREE"
  64. 607  P$=" Enter choice to proceed, 1 to 8, or press any key to abort.":GOSUB 64600
  65. 608  GOSUB 61000:GOSUB 62000
  66. 610  GOSUB 11000:M$=Q$
  67. 620  IF M$="1" AND CL$<>"" THEN 800
  68. 630  IF M$>"1" AND M$<"8" AND CL$="" THEN GOSUB 40000
  69. 650  IF INSTR("Mm",Q$) THEN 500
  70. 660  ON VAL(M$) GOTO 1000,2000,3000,4000,5000,6000,7000,8000
  71. 800  CLS
  72. 810  PRINT
  73. 820  CLS
  74. 830  PRINT:PRINT"Press Ctrl and Break keys"
  75. 840  PRINT:PRINT "and re-RUN to set up new data-file"
  76. 850  PRINT:PRINT "or press 'N' to initialize data for a new tax year"
  77. 860  PRINT"or any other key to return to main menu"
  78. 870  GOSUB 11000
  79. 880  IF INSTR("Nn",Q$)=0 THEN 500
  80. 900  T=NE:NJ=1:J=1:CLS
  81. 910  IF J>NE THEN 960
  82. 920  IF E(J,21)=1 THEN J=J+1:T=T-1:GOTO 910
  83. 930  FOR H=0 TO 2:E$(NJ,H)=E$(J,H):NEXT
  84. 935  FOR H=0 TO 4:E(NJ,H)=E(J,H):NEXT
  85. 940  FOR H=5 TO 24:E(NJ,H)=0:NEXT
  86. 945  E(NJ,1)=0:E(NJ,25)=E(J,25)
  87. 950  NJ=NJ+1:J=J+1:GOTO 910
  88. 960  FOR H=0 TO 10:P(H)=0:NEXT
  89. 970  NE=T:PRINT"INITIALIZATION COMPLETE"
  90. 980  PRINT:GOSUB 10999:COLOR 1:GOTO 500
  91. 1000  CLS
  92. 1020  PRINT:INPUT "ENTER COMPANY NAME or just press RETURN to exit";CL$
  93. 1030  IF CL$="" THEN 500
  94. 1040  PRINT
  95. 1050  INPUT "No. of employees to be entered in batch ";NE$
  96. 1060  NE=INT(VAL(NE$))
  97. 1070  IF NE<1 OR NE>M THEN GOTO 1050
  98. 1080  FOR J=1 TO NE:GOSUB 1500:NEXT:GOTO 500
  99. 1500  CLS
  100. 1510  PRINT "Employee No. ",J
  101. 1520  PRINT
  102. 1530  INPUT "Name ";Q$:E$(J,0)=LEFT$(Q$,19)
  103. 1540  IF E$(J,0)="" THEN GOTO 1530
  104. 1550  PRINT
  105. 1560  INPUT "NI Number ";E$(J,1)
  106. 1570  IF E$(J,1)="" THEN E$(J,1)="N/K"
  107. 1580  PRINT
  108. 1600  FOR H=0 TO 24
  109. 1610  IF H=7 OR H=11 OR H=17 THEN CLS
  110. 1620  Q$="":PRINT P$(H);:INPUT Q$
  111. 1640  IF H<>0 THEN 1680
  112. 1650  GOSUB 20000
  113. 1660  IF F=0 THEN 1620
  114. 1670  GOTO 1790
  115. 1680  IF H<>1 AND H<>21 THEN 1710
  116. 1690  IF INSTR("Yy",Q$) THEN E(J,1)=1:GOTO 1790
  117. 1700  IF INSTR("Nn",Q$)=0 THEN 1620
  118. 1710  IF H<>2 THEN 1770
  119. 1720  GOSUB 30000
  120. 1730  IF F=0 THEN 1620
  121. 1740  E(J,2)=ASC(Q$)
  122. 1750  E(J,25)=F-1
  123. 1760  GOTO 1790
  124. 1770  E(J,H)=VAL(Q$)
  125. 1780  IF H=10 AND E(J,25)=0 THEN H=16
  126. 1790  PRINT
  127. 1800  NEXT H
  128. 1810  RETURN
  129. 2000  NE=NE+1
  130. 2010  IF NE>M THEN NE=M:GOTO 500
  131. 2020  J=NE
  132. 2030  CLS
  133. 2050  GOSUB 1500
  134. 2060  GOTO 500
  135. 3000  CLS
  136. 3020  GOSUB 3500:IF J<1 OR J>NE THEN 500
  137. 3030  CLS
  138. 3040  PRINT "Employee No. "J
  139. 3050  PRINT
  140. 3060  PRINTE$(J,0)
  141. 3070  PRINT
  142. 3080  IF E(J,21)=0 THEN PRINT"Deleted from Payroll":GOTO 3100
  143. 3090  PRINT"Has already left"
  144. 3100  E(J,21)=1
  145. 3110  PRINT
  146. 3120  GOSUB 10999
  147. 3130  GOTO 500
  148. 3500  CLS
  149. 3510  INPUT "Employee number ('N' if not known) ";Q$
  150. 3520  IF INSTR("Nn",Q$) THEN GOSUB 3600
  151. 3530  J=VAL(Q$)
  152. 3540  RETURN
  153. 3600  PRINT
  154. 3610  T$="":INPUT "Employee name ";T$
  155. 3620  IF T$="" THEN 3610
  156. 3630  FOR J=1 TO NE
  157. 3650  F=0:IF INSTR(E$(J,0),T$)<>0 THEN GOSUB 3700
  158. 3660  IF F<>0 THEN J=NE
  159. 3670  NEXT J
  160. 3680  Q$=STR$(F):RETURN
  161. 3700  CLS:PRINT "Found "E$(J,0)
  162. 3710  PRINT
  163. 3720  PRINT "Is this correct (Y/N) ?"
  164. 3730  GOSUB 11000
  165. 3740  IF INSTR("Nn",Q$) THEN RETURN
  166. 3750  IF INSTR("Yy",Q$)=0 THEN 3730
  167. 3760  F=J
  168. 3770  RETURN
  169. 4000  CLS
  170. 4020  GOSUB 3500
  171. 4030  IF J<1 OR J>NE THEN 500
  172. 4040  DV=3
  173. 4050  LOCATE 25,1:P$="Enter 'Y' if printout required else press any key.":GOSUB 64600:GOSUB 11000:IF INSTR("Yy",Q$) THEN P%=8 ELSE P%=0
  174. 4055  CLS
  175. 4080  P$="  1: Name":GOSUB 13000
  176. 4090  IF P%=0 THEN PRINT E$(J,0), ,"EMPLOYEE NO."STR$(J) ELSE LPRINT E$(J,O), ,"EMPLOYEE NO."STR$(J)
  177. 4110  P$="  2: N.I. Number":GOSUB 13000
  178. 4120  IF P%=0 THEN PRINT E$(J,1); ELSE IF P%=8 THEN LPRINT E$(J,1);
  179. 4123  Q$="(Contracted out)":IF E(J,25)=0 THEN Q$="(Contracted in)"
  180. 4125  T$=CHR$(E(J,2))+": "+Q$
  181. 4127  IF P%=0 THEN PRINT TAB(40);"5: ";P$(2);" "T$
  182. 4130  FOR H=0 TO 24
  183. 4140  P$=STR$(H+3)
  184. 4150  IF H>6 THEN P$=MID$(P$,2)
  185. 4160  P$=" "+P$+": "
  186. 4170  T$=STR$(E(J,H))
  187. 4180  IF H=0 THEN T$=E$(J,2)
  188. 4190  IF H=2 THEN T$=CHR$(E(J,H))
  189. 4200  IF H<>1 THEN 4250
  190. 4210  Q$="(Cumulative)"
  191. 4220  IF VAL(T$)=1 THEN Q$="(Wk.1)"
  192. 4230  IF P%=0 THEN PRINT TAB(38)P$;Q$ ELSE IF P%=8 THEN LPRINT P$;Q$
  193. 4240  GOTO 4390
  194. 4250  IF H=2 AND P%=0 THEN 4390
  195. 4255  IF H<>2 THEN 4300
  196. 4260  Q$="(Contracted out)"
  197. 4270  IF E(J,25)=0 THEN Q$="(Contracted in)"
  198. 4280  T$=T$+": "+Q$
  199. 4290  GOTO 4350
  200. 4300  IF H<>21 THEN 4350
  201. 4310  Q$="Left"
  202. 4320  IF VAL(T$)=0 THEN Q$="Current"
  203. 4325  Q$="Employee "+Q$
  204. 4330  IF P%=0 THEN PRINT ," "P$;Q$
  205. 4335  IF P%=8 THEN LPRINT ," "P$;Q$
  206. 4340  GOTO 4390
  207. 4350  P$=P$+P$(H)
  208. 4360  GOSUB 13000
  209. 4365  IF H=11 OR H=13 THEN IF P%=0 THEN PRINT TAB(33); USING "##.##";VAL(T$):GOTO 4390 ELSE IF H=11 OR H=13 THEN IF P%=8 THEN LPRINT TAB(33); USING "##.##";VAL(T$):GOTO 4390
  210. 4367  IF H=20 THEN IF P%=0 THEN PRINT TAB(33); USING "##";VAL(T$); ELSE IF H=20 THEN IF P%=8 THEN LPRINT TAB(33); USING "##";VAL(T$);
  211. 4370  IF H<3 AND P%=0 THEN PRINT T$; ELSE IF H<3 AND P%=8 THEN LPRINT T$
  212. 4372  IF H>2 AND H<>20 THEN IF P%=0 THEN PRINT TAB(26); USING "########,.##";VAL(T$); ELSE IF H<3 AND P%=0 THEN PRINT T$
  213. 4375  IF H>2 AND H<>20 THEN IF P%=8 THEN LPRINT TAB(26); USING "########,.##";VAL(T$); ELSE IF H<3 AND P%=8 THEN LPRINT T$
  214. 4380  IF H<>0 AND H<>20 AND H<>24 THEN IF P%=0 THEN PRINT ELSE IF H<>20 AND P%=8 THEN LPRINT
  215. 4390  NEXT:IF P%=8 THEN LPRINT
  216. 4420  COLOR 4:LOCATE 10,50:PRINT"A = Amend":LOCATE 11,50:PRINT"L = Last":LOCATE 12,50:PRINT"N = Next":LOCATE 13,50:PRINT"P = Print":LOCATE 14,50:PRINT"R = Return";:COLOR 1
  217. 4421  R1=9:C1=46:R2=15:C2=63:GOSUB 62030
  218. 4440  GOSUB 11000
  219. 4450  IF INSTR("Pp",Q$) THEN DV=4:GOTO 4050
  220. 4460  IF INSTR("Rr",Q$) THEN 500
  221. 4470  IF INSTR("Nn",Q$) THEN J=J+1:CLS:GOTO 4030
  222. 4475  IF INSTR("Ll",Q$) THEN J=J-1:CLS:GOTO 4030
  223. 4480  IF INSTR("Aa",Q$)=0 THEN 4440
  224. 4500  LOCATE 16,42:COLOR 0:INPUT "Amend which field (1-27)";Q$:COLOR 4:LOCATE 16,42:PRINT "    Amend field ";Q$;"           ":COLOR 1
  225. 4510  Q=VAL(Q$):IF Q<1 OR Q>27 THEN 4030
  226. 4520  IF Q=4 THEN E(J,1)=-1*(E(J,1)=0):GOTO 4030
  227. 4530  IF Q=24 THEN E(J,21)=-1*(E(J,21)=0):GOTO 4030
  228. 4540  P$="Enter new data":GOSUB 64600:INPUT Q$:CLS
  229. 4550  IF Q<3 THEN E$(J,Q-1)=LEFT$(Q$,19):GOTO 4030
  230. 4560  IF Q>5 THEN 4700
  231. 4570  IF Q=5 THEN 4610
  232. 4580  GOSUB 20000
  233. 4590  IF F=0 THEN 4540
  234. 4600  GOTO 4030
  235. 4610  LOCATE 19,46:GOSUB 30000
  236. 4620  IF F=0 THEN 4540
  237. 4630  E(J,2)=ASC(Q$)
  238. 4640  E(J,25)=F-1
  239. 4650  E(J,8)=E(J,8)+E(J,7)
  240. 4660  E(J,10)=E(J,10)+E(J,9)
  241. 4670  E(J,7)=0
  242. 4680  E(J,9)=0
  243. 4690  CLS:GOTO 4030
  244. 4700  E(J,Q-3)=VAL(Q$):CLS:GOTO 4030
  245. 5000  CLS
  246. 5010  PRINT CL$;" P35 Listing":PRINT
  247. 5015  LOCATE 25,1:P$="Enter 'Y' if printout required else press any key.":GOSUB 64600:GOSUB 11000:IF INSTR("Yy",Q$) THEN P%=8 ELSE P%=0:LOCATE 25,1:P$="":GOSUB 64600:PRINT
  248. 5020  IF P%=8 THEN LPRINT CL$;" P35 Listing":LPRINT
  249. 5030  IF P%=0 THEN PRINT "No." TAB(5)"Name"SPC(24)"Tax"SPC(17)"NI"SPC(9)"SSP"SPC(9)"SMP" ELSE IF P%=8 THEN LPRINT "No." TAB(5)"Name"SPC(24)"Tax"SPC(17)"NI"SPC(9)"SSP"SPC(9)"SMP"
  250. 5040  IF P%=0 THEN PRINT ELSE IF P%=8 THEN LPRINT
  251. 5050  T1=0:T2=0:T3=0:FOR J=1 TO NE
  252. 5060  IF P%=0 THEN PRINT USING "###";J;:PRINT TAB(5); E$(J,0);:PRINT TAB(25);
  253. 5065  IF P%=8 THEN LPRINT USING "###";J;:LPRINT TAB(5); E$(J,0);
  254. 5070  T=E(J,6)-E(J,19)
  255. 5080  T$=STR$(T):GOSUB 16000:T1=T1+T
  256. 5090  IF P%=0 THEN PRINT USING "#######,.##";VAL(T$);:PRINT TAB(45);
  257. 5095  IF P%=8 THEN LPRINT USING "#######,.##";VAL(T$);:LPRINT TAB(45);
  258. 5100  T=E(J,7)+E(J,8)+E(J,9)+E(J,10)
  259. 5110  T$=STR$(T):GOSUB 16000:T2=T2+T
  260. 5120  IF P%=0 THEN PRINT USING "#######,.##";VAL(T$);:PRINT TAB(65);
  261. 5125  IF P%=8 THEN LPRINT USING "#######,.##";VAL(T$);:LPRINT TAB(65);
  262. 5130  T=E(J,17)
  263. 5140  T$=STR$(T):GOSUB 16000:T3=T3+T
  264. 5150  IF P%=0 THEN PRINT USING "#######,.##";VAL(T$)
  265. 5155  IF P%=8 THEN LPRINT USING "#######,.##";VAL(T$)
  266. 5160  NEXT:IF P%=0 THEN PRINT ELSE IF P%=8 THEN LPRINT
  267. 5170  IF P%=0 THEN PRINT "Total" TAB(25); ELSE IF P%=8 THEN LPRINT "Total" TAB(25);
  268. 5180  T$=STR$(T1):GOSUB 16000
  269. 5190  IF P%=0 THEN PRINT USING "#######,.##";VAL(T$);:PRINT TAB(45);
  270. 5195  IF P%=8 THEN LPRINT USING "#######,.##";VAL(T$);:LPRINT TAB(45);
  271. 5200  T$=STR$(T2):GOSUB 16000
  272. 5210  IF P%=0 THEN PRINT USING "#######,.##";VAL(T$);:PRINT TAB(65);
  273. 5215  IF P%=8 THEN LPRINT USING "#######,.##";VAL(T$);:LPRINT TAB(65);
  274. 5220  T$=STR$(T3):GOSUB 16000
  275. 5230  IF P%=0 THEN PRINT USING "#######,.##";VAL(T$)
  276. 5235  IF P%=8 THEN LPRINT USING "#######,.##";VAL(T$)
  277. 5240  PRINT:PRINT:GOSUB 10999:COLOR 1
  278. 5250  GOTO 500
  279. 6000  CLS
  280. 6020  PRINT
  281. 6030  PRINT"Make no changes to codes without authority from Tax Office."
  282. 6050  PRINT
  283. 6060  PRINT"(Form P7X)"
  284. 6070  PRINT
  285. 6080  PRINT"Suffix?" TAB(10)"ADD TO CODE"
  286. 6090  PRINT
  287. 6100  PRINTTAB(6)"L";TAB(12);:INPUT T$(0)
  288. 6110  PRINT TAB(6)"H";TAB(12);:INPUT T$(1)
  289. 6120  PRINT TAB(6)"P";TAB(12);:INPUT T$(2)
  290. 6130  PRINT TAB(6)"V";TAB(12);:INPUT T$(3)
  291. 6180  PRINT
  292. 6190  PRINT"Are these all correct (Y/N) ";
  293. 6200  GOSUB 11000:PRINT
  294. 6210  IF INSTR("Nn",Q$)THEN 6000
  295. 6220  IF INSTR("Yy",Q$)=0 THEN 6200
  296. 6240  PRINT:TEXT$="Data being amended":GOSUB 10000:PRINT
  297. 6250  FOR J=1 TO NE:IF E(J,21)=1 THEN 6315
  298. 6260  FOR K=0 TO 3
  299. 6270  IF RIGHT$(E$(J,2),1)<>MID$(TAX$,K+1,1) THEN 6310
  300. 6280  E(J,0)=E(J,0)+VAL(T$(K))
  301. 6290  E$(J,2)=MID$(STR$(E(J,0)),2)+MID$(TAX$,K+1,1)
  302. 6300  K=3
  303. 6310  NEXT K
  304. 6315  NEXT J
  305. 6330  TEXT$="Completed ":GOSUB 10000
  306. 6340  PRINT:GOSUB 10999:COLOR 1
  307. 6350  GOTO 500
  308. 7000  GOSUB 50000
  309. 7010  GOTO 500
  310. 8000  P$="Have you saved the data file?   Press 'Y' if you have.":GOSUB 64600:GOSUB 11000
  311. 8010  IF INSTR("Yy",Q$)=0 THEN 7000
  312. 8020  RUN "selectp
  313. 10000  PRINT TAB(((80-LEN(TEXT$))/2));TEXT$
  314. 10010  RETURN
  315. 10999  P$="Press any key to continue":GOSUB 64600
  316. 11000  Q$="":WHILE Q$="": Q$=INKEY$:WEND
  317. 11010  RETURN
  318. 12000  PRINT:PRINT TAB(5);"D = to continue"
  319. 12010  PRINT TAB(5)"M = return to Main Menu"
  320. 12020  RETURN
  321. 13000  IF P%=0 THEN PRINT P$;SPC(22-LEN(P$));
  322. 13005  IF P%=8 THEN LPRINT P$;SPC(22-LEN(P$));
  323. 13010  RETURN
  324. 14000  PRINT:PRINT:RETURN
  325. 16000  IF LEN(T$)>10 THEN T$="**********":RETURN
  326. 16010  FOR L=1 TO 11-LEN(T$)
  327. 16020  T$=" "+T$
  328. 16030  NEXT:RETURN
  329. 20000  X$="":Y$=""
  330. 20010  FOR K=1 TO LEN(Q$)
  331. 20020  T$=MID$(Q$,K,1)
  332. 20030  IF T$=CHR$(32)THEN 20060
  333. 20040  IF T$<"0" OR T$>"9" THEN Y$=Y$+T$:GOTO 20060
  334. 20050  X$=X$+T$
  335. 20060  NEXT
  336. 20070  F=1:IF VAL(X$)<>0 THEN 20110
  337. 20080  IF Y$="OT"THEN E$(J,2)="OT":GOTO 20180
  338. 20090  IF Y$="BR"THEN X$="-1":E$(J,2)=Y$:GOTO 20180
  339. 20100  IF Y$="NT"THEN X$="2000":E$(J,2)=Y$:GOTO 20180
  340. 20110  F=0:FOR K=1 TO LEN(TAX$)
  341. 20120  IF Y$=MID$(TAX$,K,1)THEN F=1
  342. 20130  NEXT:IF F=0 THEN RETURN
  343. 20140  IF Y$="D" AND VAL(X$)>(X-GPTR)THEN Q$="":RETURN
  344. 20150  X$=MID$(STR$(VAL(X$)),2)
  345. 20160  E$(J,2)=X$+Y$
  346. 20170  IF Y$="D" OR Y$="F" THEN E$(J,2)=Y$+X$
  347. 20180  E(J,0)=VAL(X$)
  348. 20190  RETURN
  349. 30000  F=0
  350. 30010  IF LEN(Q$)<>1 THEN 30050
  351. 30020  FOR K=0 TO 1:FOR L=1 TO LEN(NI$(K))
  352. 30030  IF Q$=MID$(NI$(K),L,1)THEN F=K+1
  353. 30040  NEXT L:NEXT K
  354. 30050  IF Q$<>"C" THEN RETURN
  355. 30060  PRINT "Cont In/Out ?"
  356. 30070  T$=Q$
  357. 30080  GOSUB 11000
  358. 30090  IF INSTR("Ii",Q$)THEN Q$=T$:RETURN
  359. 30100  IF INSTR("Oo",Q$)=0 THEN 30080
  360. 30110  F=2:Q$=T$:RETURN
  361. 40000  CLS
  362. 40010  TEXT$="LOAD DATA":GOSUB 10000
  363. 40200  OPEN PAYFILE$ FOR INPUT AS #1
  364. 40210  INPUT #1, CL$
  365. 40220  PRINT:PRINT"LOADING ";CL$;" FILE":PRINT
  366. 40230  INPUT #1, NE
  367. 40240  FOR J=0 TO 10
  368. 40250  INPUT #1, P(J)
  369. 40260  NEXT
  370. 40270  FOR J=1 TO NE
  371. 40280  FOR K=0 TO 2
  372. 40290  INPUT #1,E$(J,K)
  373. 40300  NEXT K
  374. 40310  FOR K=0 TO 25
  375. 40320  INPUT #1,E(J,K)
  376. 40330  NEXT K,J
  377. 40340  CLOSE #1
  378. 40350  RETURN
  379. 50000  CLS
  380. 50010  TEXT$="SAVE DATA":GOSUB 10000
  381. 50030  GOSUB 12000
  382. 50040  GOSUB 11000
  383. 50050  IF INSTR("Mm",Q$) THEN RETURN
  384. 50060  IF INSTR("Dd",Q$) THEN 50080
  385. 50070  GOTO 50040
  386. 50080  OPEN "O",#1,PAYFILE$
  387. 50090  WRITE #1,CL$
  388. 50100  PRINT:PRINT"SAVING ";CL$;" FILE":PRINT
  389. 50110  WRITE #1,NE
  390. 50120  FOR J=0 TO 10
  391. 50130  WRITE #1,P(J)
  392. 50140  NEXT
  393. 50150  FOR J=1 TO NE
  394. 50160  FOR K= 0 TO 2
  395. 50170  WRITE #1,E$(J,K)
  396. 50180  NEXT K
  397. 50190  FOR K=0 TO 25
  398. 50200  WRITE #1,E(J,K)
  399. 50210  NEXT K: NEXT J
  400. 50220  CLOSE #1
  401. 50230  RETURN
  402. 60000  CLS:PRINT:PRINT "AN ERROR HAS BEEN FOUND AS FOLLOWS:_":PRINT:
  403. 60010  PRINT "PROGRAM LINE "ERL
  404. 60020  PRINT "ERROR TYPE "ERR
  405. 60030  PRINT
  406. 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
  407. 60045  IF ERR=25 THEN COLOR 4:PRINT "PRINTER NOT ON OR CONNECTED":COLOR 1
  408. 60050  PRINT:PRINT"Press any key to continue ";
  409. 60060  G$=INKEY$:IF G$="" THEN 60060
  410. 60070  CLS:IF ERR=25 THEN RESUME ELSE RESUME 120
  411. 61000  COLOR 2
  412. 61020  R1=1:C1=1:R2=24:C2=79
  413. 61050  FOR I=R1+1 TO R2-1
  414. 61060   LOCATE I,C1:PRINT CHR$(186);
  415. 61070   LOCATE I,C2:PRINT CHR$(186);
  416. 61080  NEXT I
  417. 61090  FOR J=C1+1 TO C2-1
  418. 61100   LOCATE R1,J:PRINT CHR$(205);
  419. 61110   LOCATE R2,J:PRINT CHR$(205);
  420. 61120  NEXT J
  421. 61130   LOCATE R1,C1:PRINT CHR$(201);
  422. 61140   LOCATE R1,C2:PRINT CHR$(187);
  423. 61150   LOCATE R2,C1:PRINT CHR$(200);
  424. 61160   LOCATE R2,C2:PRINT CHR$(188);
  425. 61170  RETURN
  426. 62000  TITLE.POS = 40 - INT(LEN(TEXT$)/2)
  427. 62020  R1=4:C1=22:R2=20:C2=58
  428. 62030  COLOR 1
  429. 62040  FOR II=R1+1 TO R2-1
  430. 62050   LOCATE II,C1:PRINT CHR$(179);
  431. 62060   LOCATE II,C2:PRINT CHR$(179);
  432. 62070  NEXT
  433. 62080  FOR JJ=C1+1 TO C2-1
  434. 62090   LOCATE R1,JJ:PRINT CHR$(196);
  435. 62100   LOCATE R2,JJ:PRINT CHR$(196);
  436. 62110  NEXT
  437. 62120   LOCATE R1,C1:PRINT CHR$(218);
  438. 62130   LOCATE R1,C2:PRINT CHR$(191);
  439. 62140   LOCATE R2,C1:PRINT CHR$(192);
  440. 62150   LOCATE R2,C2:PRINT CHR$(217);
  441. 62160  RETURN
  442. 64600  COLOR 14,0:LOCATE 25,2:PRINT STRING$(78," ");:LOCATE 25,2:PRINT TAB((78-LEN(P$))/2)P$;:COLOR 1,7:RETURN
  443.