home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib19a.dsk / MAY.1984 / PAYCHECK.bas < prev    next >
BASIC Source File  |  2023-02-26  |  13KB  |  343 lines

  1. 10  REM  **********************
  2. 20  REM  *      PAYCHECK      *
  3. 30  REM  *  BY LELAND L. COX  *
  4. 40  REM  * COPYRIGHT (C) 1984 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * LINCOLN, MA. 01773 *
  7. 70  REM  **********************
  8. 80 D$ =  CHR$(4)
  9. 90  CALL  -1184
  10. 100  REM 
  11. 110  DIM A$(100,10)
  12. 120  DIM A(100,10)
  13. 130  REM  READ DISK TO GET NUMBER OF RECORDS
  14. 140  ONERR  GOTO 3290: REM  INIT. FILE 'PAYCHECK.F'
  15. 150  PRINT D$;"OPEN PAYCHECK.F,L100"
  16. 160  PRINT D$;"READ PAYCHECK.F,R0"
  17. 170  INPUT NR
  18. 180  PRINT D$;"CLOSE PAYCHECK.F"
  19. 190  REM  CLEAR SCREEN AND SET WINDOW
  20. 200  POKE 34,0: CALL  -1184
  21. 210  RESTORE 
  22. 220  PRINT : VTAB 3: HTAB 7: PRINT "******** PAYCHECK ********"
  23. 230  PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **"
  24. 240  PRINT "     1. CHECK COMPUTATION"
  25. 250  PRINT 
  26. 260  PRINT "     2. ENTER DATA"
  27. 270  PRINT 
  28. 280  PRINT "     3. PRINT DATA ON SCREEN"
  29. 290  PRINT 
  30. 300  PRINT "     4. PRINT TOTALS ON SCREEN"
  31. 310  PRINT 
  32. 320  PRINT "     5. PRINT DATA ON PRINTER"
  33. 330  PRINT : PRINT "     6. CHANGE/DELETE RECORDS"
  34. 340  PRINT : PRINT "     7. EXIT PROGRAM"
  35. 350  PRINT : PRINT 
  36. 360  PRINT "        NUMBER RECORDS = ";NR
  37. 370  PRINT 
  38. 380  PRINT "      ENTER CHOICE (1-7).....? ";: GET Z$: PRINT Z$
  39. 390 Z =  VAL(Z$): IF Z <1  OR Z >7 GOTO 200
  40. 400  ON Z GOTO 410,570,1120,1500,2030,2640,3250
  41. 410  REM  CHECK FOR CORRECT GROSS
  42. 420  CALL  -1184
  43. 430  PRINT : PRINT 
  44. 440  VTAB 3: CALL  -958: INPUT "WHAT IS THE PAY SCALE ? $";SC$:SC =  VAL(SC$)
  45. 450  PRINT : PRINT 
  46. 460  VTAB 6: CALL  -958: INPUT "HOW MANY HOURS STRAIGHT TIME ? ";ST$:ST =  VAL(ST$)
  47. 470  PRINT : PRINT 
  48. 480  VTAB 8: CALL  -958: INPUT "HOW MANY HOURS TIME AND A HALF ? ";TH$:TH =  VAL(TH$)
  49. 490  PRINT : PRINT 
  50. 500  VTAB 10: CALL  -958: INPUT "HOW MANY HOURS DOUBLE TIME ? ";DT$:DT =  VAL(DT$)
  51. 510  PRINT : PRINT 
  52. 520  VTAB 12: CALL  -958: INPUT "HOW MANY HOURS TRIPLE TIME ? ";TT$:TT =  VAL(TT$)
  53. 530  PRINT : PRINT 
  54. 540  PRINT "GROSS PAY = $";(SC *ST) +(SC *1.5 *TH) +(SC *2 *DT) +(SC *3 *TT)
  55. 550  PRINT : PRINT : PRINT 
  56. 560  PRINT "       HIT ANY KEY TO CONTINUE.....";: GET Z$: PRINT Z$: GOTO 190
  57. 570  REM  ENTER DATA ROUTINE
  58. 580 NR = NR +1:I = NR
  59. 590  GOSUB 620
  60. 600  GOTO 580
  61. 610  REM  ENTER DATA SUBROUTINE
  62. 620 B$ = "       ": REM  7 SPACES
  63. 630  HOME 
  64. 640  PRINT : PRINT 
  65. 650  PRINT "ENTER AMOUNTS FROM PAYCHECK STUB...."
  66. 660  PRINT : PRINT "PRESS <RETURN> NOW TO ";: FLASH : PRINT "QUIT";: NORMAL : PRINT "!"
  67. 670  PRINT : PRINT "THIS IS RECORD # ";I
  68. 680  PRINT : INPUT "DATE  (MO/DA)...........";A$(I,1)
  69. 690  IF  LEN(A$(I,1)) = 0  THEN  POP :NR = NR -1: GOTO 190
  70. 700  HOME 
  71. 710 A$(I,1) = "  " +A$(I,1)
  72. 720  PRINT "DATE  (MO/DA)...........";A$(I,1)
  73. 730  PRINT : INPUT "GROSS INCOME ..........$";A$(I,2)
  74. 740 J = 2:V = 2: GOSUB 1000
  75. 750  PRINT : INPUT "FEDERAL TAX ...........$";A$(I,3)
  76. 760 J = 3:V = 4: GOSUB 1000
  77. 770  PRINT : INPUT "STATE TAX .............$";A$(I,4)
  78. 780 J = 4:V = 6: GOSUB 1000
  79. 790  PRINT : INPUT "FIC<CTRL-A>A ..................$";A$(I,5)
  80. 800 J = 5:V = 8: GOSUB 1000
  81. 810  PRINT : INPUT "SUI ...................$";A$(I,6)
  82. 820 J = 6:V = 10: GOSUB 1000
  83. 830  PRINT : INPUT "VACATION ..............$";A$(I,7)
  84. 840 J = 7:V = 12: GOSUB 1000
  85. 850  PRINT : INPUT "UNION ASSESSMENT ......$";A$(I,8)
  86. 860 J = 8:V = 14: GOSUB 1000
  87. 870  PRINT : INPUT "NET PAYCHECK ..........$";A$(I,9)
  88. 880 J = 9:V = 16: GOSUB 1000
  89. 890  PRINT : INPUT "TOTAL HOURS ...........#";A$(I,10)
  90. 900 J = 10:V = 18: GOSUB 1000
  91. 910 A$(I,1) = "  " +A$(I,1)
  92. 920  PRINT : PRINT "IS THIS ENTRY CORRECT (Y/N) ?";: GET Q$: PRINT Q$: IF Q$ < >"Y" GOTO 620
  93. 930  PRINT D$;"OPEN PAYCHECK.F,L100"
  94. 940  PRINT D$;"WRITE PAYCHECK.F,R0"
  95. 950  PRINT NR
  96. 960  PRINT D$;"WRITE PAYCHECK.F,R";I
  97. 970  FOR J = 1 TO 10: PRINT A$(I,J): NEXT J
  98. 980  PRINT D$;"CLOSE PAYCHECK.F"
  99. 990  RETURN 
  100. 1000  REM  INPUT FORMAT ROUTINE
  101. 1010 A(I,J) =  VAL(A$(I,J))
  102. 1020  IF A(I,J) <.01  THEN A(I,J) = 0
  103. 1030  IF A(I,J) = 0  THEN A$(I,J) = ".000": GOTO 1060
  104. 1040 A(I,J) = A(I,J) +.001
  105. 1050 A$(I,J) =  STR$(A(I,J))
  106. 1060 A$(I,J) = B$ +A$(I,J)
  107. 1070 A$(I,J) =  RIGHT$(A$(I,J),9)
  108. 1080 A$(I,J) =  LEFT$(A$(I,J),8)
  109. 1090  VTAB V +1: HTAB 25: PRINT A$(I,J)
  110. 1100  VTAB (V +2)
  111. 1110  RETURN 
  112. 1120  REM  PRINT DATA ON SCREEN
  113. 1130  HOME 
  114. 1140  PRINT "MO/DA  GROSS   FED    ST    FICA   SUI "
  115. 1150  PRINT 
  116. 1160  PRINT "               VAC    UA    NET    HOURS"
  117. 1170  VTAB 10: CALL  -958: INPUT "START WITH RECORD # ";SN$:SN =  VAL(SN$): IF SN <0  THEN 1170
  118. 1180  PRINT : IF SN = 0  THEN SN = 1
  119. 1190  IF SN >NR  THEN  PRINT "** OUT OF RANGE **": GOTO 1170
  120. 1200  POKE 34,4
  121. 1210 N = SN:NA = N +2: IF NA >NR  THEN NA = NR
  122. 1220  PRINT D$;"OPEN PAYCHECK.F,L100"
  123. 1230  PRINT D$;"READ PAYCHECK.F,R0"
  124. 1240  INPUT NR
  125. 1250  FOR I = N TO NA
  126. 1260  PRINT D$;"READ PAYCHECK.F,R";I
  127. 1270  FOR J = 1 TO 10
  128. 1280  INPUT A$(I,J)
  129. 1290  GOSUB 3360
  130. 1300  NEXT J
  131. 1310  NEXT I
  132. 1320  PRINT D$;"CLOSE PAYCHECK.F"
  133. 1330  FOR I = N TO NA
  134. 1340  PRINT "# ";I
  135. 1350  PRINT A$(I,1); TAB( 7)A$(I,2); TAB( 15)A$(I,3); TAB( 22)A$(I,4); TAB( 29)A$(I,5); TAB( 36)A$(I,6)
  136. 1360  PRINT  TAB( 12)A$(I,7); TAB( 20)A$(I,8); TAB( 26)A$(I,9); TAB( 35)A$(I,10)
  137. 1370  NEXT I
  138. 1380  PRINT 
  139. 1390  PRINT "PRESS <ESC> TO QUIT...."
  140. 1400  PRINT "ANY OTHER KEY TO CONTINUE....";: GET Z$: PRINT Z$
  141. 1410  IF  ASC(Z$) = 27  THEN  GOTO 190
  142. 1420 N = N +3:NA = N +2: IF NA >NR  THEN NA = NR
  143. 1430  IF NA <N  THEN  GOTO 1480
  144. 1440  HOME 
  145. 1450  PRINT 
  146. 1460  GOTO 1220
  147. 1470  PRINT 
  148. 1480  PRINT : PRINT "THAT IS ALL OF THE DATA...."
  149. 1490  PRINT : PRINT "PRESS ANY KEY TO CONTINUE..";: GET Z$: GOTO 190
  150. 1500  REM  PRINT TOTALS ON SCREEN
  151. 1510  HOME 
  152. 1520  PRINT "     ***** TOTAL EACH HEADING *****"
  153. 1530  PRINT : PRINT : PRINT : PRINT NR;" RECORDS ON FILE...."
  154. 1540  PRINT : PRINT 
  155. 1550  VTAB 7: CALL  -958: INPUT "START WITH RECORD # ";SN$:SN =  VAL(SN$)
  156. 1560  IF SN <1  OR SN =  >NR GOTO 1600
  157. 1570  PRINT : INPUT "END  WITH  RECORD # ";EN
  158. 1580  IF EN < = SN  OR EN >NR GOTO 1600
  159. 1590  GOTO 1620
  160. 1600  PRINT "*** OUT OF RANGE ERROR ***": GOTO 1610
  161. 1610  PRINT  CHR$(7); CHR$(7): FOR Q = 1 TO 1000: NEXT Q: GOTO 1500
  162. 1620  FOR J = 2 TO 10:T(J) = 0:T$(J) = "": NEXT J
  163. 1630  PRINT D$;"OPEN PAYCHECK.F,L100"
  164. 1640  PRINT D$;"READ PAYCHECK.F,R0"
  165. 1650  INPUT NR
  166. 1660  FOR I = SN TO EN
  167. 1670  PRINT D$;"READ PAYCHECK.F,R";I
  168. 1680  FOR J = 1 TO 10
  169. 1690  INPUT A$(I,J)
  170. 1700 T(J) = T(J) + VAL(A$(I,J))
  171. 1710  NEXT J
  172. 1720  NEXT I
  173. 1730  PRINT D$;"CLOSE PAYCHECK.F"
  174. 1740  FOR J = 2 TO 10
  175. 1750 T$(J) =  STR$(T(J) +1.005 - SGN(T(J)) * INT( ABS(T(J))))
  176. 1760 T$(J) =  STR$( SGN(T(J)) * INT( ABS(T(J)))) + MID$ (T$(J),2,3)
  177. 1770 T$(J) =  RIGHT$("          " +T$(J),8)
  178. 1780  NEXT J
  179. 1790  HOME 
  180. 1800  PRINT "******* PAY CHECK TOTALS *******"
  181. 1810  PRINT : PRINT 
  182. 1820  PRINT "GROSS INCOME.......$";T$(2)
  183. 1830  PRINT 
  184. 1840  PRINT "FEDERAL TAX........$";T$(3)
  185. 1850  PRINT 
  186. 1860  PRINT "STATE TAX..........$";T$(4)
  187. 1870  PRINT 
  188. 1880  PRINT "FICA...............$";T$(5)
  189. 1890  PRINT 
  190. 1900  PRINT "SUI................$";T$(6)
  191. 1910  PRINT 
  192. 1920  PRINT "VACATION...........$";T$(7)
  193. 1930  PRINT 
  194. 1940  PRINT "UNION ASMT.........$";T$(8)
  195. 1950  PRINT 
  196. 1960  PRINT "NET INCOME.........$";T$(9)
  197. 1970  PRINT 
  198. 1980  PRINT "TOTAL HOURS........$";T$(10)
  199. 1990  PRINT : PRINT : PRINT 
  200. 2000  PRINT "PRESS ANY KEY TO CONTINUE.....";: GET B$: PRINT B$
  201. 2010  GOTO 190
  202. 2020  REM 
  203. 2030  REM  PRINT DATA AND TOTALS ON PRINTER
  204. 2040  REM 
  205. 2050  HOME 
  206. 2060  FOR Q = 1 TO 39: PRINT "*";: NEXT 
  207. 2070  PRINT : PRINT : PRINT "***************          **************"
  208. 2080  VTAB 3: HTAB 17: INVERSE : PRINT "PAYCHECK": NORMAL 
  209. 2090  VTAB 5: CALL  -958: FOR Q = 1 TO 39: PRINT "*";: NEXT 
  210. 2100  VTAB 7: PRINT "  PRINTER ROUTINE WILL PRINT SPECIFIED"
  211. 2110  PRINT 
  212. 2120  PRINT "RECORDS AND THE PRINT THE TOTALS FOR  "
  213. 2130  PRINT 
  214. 2140  NEXT I
  215. 2150  PRINT : PRINT 
  216. 2160  VTAB 16: CALL  -958: PRINT : INPUT "START WITH RECORD # ";SN$:SN =  VAL(SN$)
  217. 2170  IF SN <1  OR SN =  >NR GOTO 2210
  218. 2180  PRINT : INPUT "STOP  WITH RECORD # ";EN
  219. 2190  IF EN < = SN  OR EN >NR GOTO 2210
  220. 2200  GOTO 2230
  221. 2210  PRINT "     *** INPUT RANGE ERROR ***"
  222. 2220  FOR Q = 1 TO 1000: NEXT Q: GOTO 2030
  223. 2230  REM  TURN ON PRINTER AND SET UP PRINTER INTERFACE
  224. 2240  PRINT D$"PR#1": PRINT  CHR$(9)"80N"
  225. 2250  PRINT : PRINT : PRINT  CHR$(14)"           *** PAYCHECK ***"
  226. 2260  FOR P = 1 TO 80: PRINT "*";: NEXT P
  227. 2270  PRINT : PRINT 
  228. 2280  PRINT "#    MO/DA   GROSS     FED    STATE  FICA   SUI     VAC   UNION    NET     HOURS"
  229. 2290  PRINT 
  230. 2300  FOR J = 2 TO 10:T(J) = 0:T$(J) = "": NEXT 
  231. 2310  PRINT D$;"OPEN PAYCHECK.F,L100"
  232. 2320  FOR I = SN TO EN
  233. 2330  PRINT D$;"READ PAYCHECK.F,R";I
  234. 2340  FOR J = 1 TO 10
  235. 2350  INPUT A$(I,J)
  236. 2360 T(J) = T(J) + VAL(A$(I,J))
  237. 2370  GOSUB 3360
  238. 2380  NEXT J
  239. 2390  PRINT I;: POKE 36,5: PRINT A$(I,1);: POKE 36,12: PRINT A$(I,2);: POKE 36,21: PRINT A$(I,3);: POKE 36,29: PRINT A$(I,4);: POKE 36,36: PRINT A$(I,5);: POKE 36,43: PRINT A$(I,6);: POKE 36,50: PRINT A$(I,7);: POKE 36,58: PRINT A$(I,8);
  240. 2400  POKE 36,65: PRINT A$(I,9);: POKE 36,74: PRINT A$(I,10)
  241. 2420  PRINT D$;"CLOSE PAYCHECK.F"
  242. 2430  FOR J = 2 TO 10
  243. 2440 T$(J) =  STR$(T(J) +1.005 - SGN(T(J)) * INT( ABS(T(J))))
  244. 2450 T$(J) =  STR$( SGN(T(J)) * INT( ABS(T(J)))) + MID$ (T(J),2,3)
  245. 2460 T$(J) =  RIGHT$("        " +T$(J),8)
  246. 2470  NEXT J
  247. 2480  REM  TOTAL DATA AND PRINT
  248. 2490  PRINT : PRINT "TOTAL GROSS INCOME.............$";T$(2)
  249. 2500  PRINT : PRINT "TOTAL FEDERAL TAX..............$";T$(3)
  250. 2510  PRINT : PRINT "TOTAL STATE TAX................$";T$(4)
  251. 2520  PRINT : PRINT "TOTAL FICA.....................$";T$(5)
  252. 2530  PRINT : PRINT "TOTAL SUI......................$";T$(6)
  253. 2540  PRINT : PRINT "TOTAL VACATION.................$";T$(7)
  254. 2550  PRINT : PRINT "TOTAL UNION ASSESSMENT.........$";T$(8)
  255. 2560  PRINT : PRINT "TOTAL NET PAY..................$";T$(9)
  256. 2570  PRINT : PRINT "TOTAL HOURS PAID................";T$(10)
  257. 2580  PRINT : FOR P = 1 TO 80: PRINT "*";: NEXT P
  258. 2590  PRINT : PRINT : PRINT 
  259. 2600  PRINT  CHR$(12): REM  FORM FEED
  260. 2610  PRINT D$;"PR#0"
  261. 2620  POKE 33,40
  262. 2630  GOTO 190
  263. 2640  REM  CHANGE / DELETE ROUTINE
  264. 2650  CALL  -1184
  265. 2660  VTAB 8: HTAB 7: PRINT "CHANGE OR DELETE RECORDS"
  266. 2670  VTAB 12: HTAB 11: PRINT NR;" RECORDS ON FILE..."
  267. 2680  VTAB 20: HTAB 8: PRINT "WHICH RECORD DO YOU WISH"
  268. 2690  VTAB 22: HTAB 10: CALL  -958: INPUT "TO CHANGE / DELETE ? ";RN$:RN =  VAL(RN$): IF RN <1  THEN  PRINT  CHR$(7): GOTO 2690
  269. 2700  IF RN >NR  THEN  HOME : VTAB 10: PRINT "ONLY ";NR;" RECORDS ON FILE....": PRINT  CHR$(7): FOR D = 1 TO 1000: NEXT : GOTO 2640
  270. 2710  GOSUB 2960
  271. 2720  REM  CHANGE OR DELETE ?
  272. 2730  VTAB 21: CALL  -958: REM  CLEAR BOTTOM OF SCREEN
  273. 2740  VTAB 22: PRINT "DO YOU WISH TO"
  274. 2750  VTAB 24: PRINT "(C) CHANGE OR (D) DELETE THIS RECORD ? ";: GET Z$: PRINT Z$
  275. 2760  IF Z$ = "C" GOTO 2790
  276. 2770  IF Z$ < >"D" GOTO 2720
  277. 2780  GOTO 2830
  278. 2790  REM  CHANGE ROUTINE
  279. 2800 I = RN
  280. 2810  GOSUB 620
  281. 2820  GOTO 190
  282. 2830  REM  DELETE ROUTINE
  283. 2840  CALL  -1184
  284. 2850  VTAB 10: HTAB 2: PRINT "RECORD NUMBER ";RN;" WILL NOT BE DELETED": PRINT : PRINT "BUT ALL ENTRIES WILL BE CHANGED TO '00'"
  285. 2860  PRINT  CHR$(7)
  286. 2870  VTAB 20: HTAB 8: PRINT "PRESS ANY KEY TO DELETE...."
  287. 2880  VTAB 22: HTAB 8: PRINT "PRESS ";: FLASH : PRINT "<ESC>";: NORMAL : PRINT " TO QUIT....";: GET Z$: PRINT Z$
  288. 2890  IF  ASC(Z$) = 27  THEN  GOTO 190
  289. 2900  FOR J = 1 TO 10:A$(I,J) = "      00": GOSUB 3360: NEXT J
  290. 2910  PRINT D$;"OPEN PAYCHECK.F,L100"
  291. 2920  PRINT D$;"READ PAYCHECK.F,R";RN
  292. 2930  FOR J = 1 TO 10: PRINT A$(I,J): NEXT 
  293. 2940  PRINT D$"CLOSE PAYCHECK.F"
  294. 2950  GOTO 190
  295. 2960  REM  DISPLAY RECORD TO BE CHANGED/DELETED
  296. 2970  CALL  -1184
  297. 2980  PRINT 
  298. 2990  VTAB 6
  299. 3000  PRINT "MO/DA  GROSS   FED    ST    FICA   SUI "
  300. 3010  PRINT 
  301. 3020  PRINT "               VAC    UA    NET    HOURS"
  302. 3030  PRINT 
  303. 3040  POKE 34,4
  304. 3050  PRINT D$;"OPEN PAYCHECK.F,L100"
  305. 3060  PRINT D$;"READ PAYCHECK.F,R0"
  306. 3070  PRINT D$;"READ PAYCHECK.F,R";RN
  307. 3080  FOR J = 1 TO 10
  308. 3090  INPUT A$(I,J)
  309. 3100  GOSUB 3360
  310. 3110  NEXT J
  311. 3120  PRINT D$;"CLOSE PAYCHECK.F"
  312. 3130  PRINT "# ";RN
  313. 3140  PRINT 
  314. 3150  PRINT A$(I,1); TAB( 7)A$(I,2); TAB( 15)A$(I,3); TAB( 22)A$(I,4); TAB( 29)A$(I,5); TAB( 36)A$(I,6)
  315. 3160  PRINT  TAB( 12)A$(I,7); TAB( 20)A$(I,8); TAB( 26)A$(I,9); TAB( 35)A$(I,10)
  316. 3170  PRINT : PRINT : PRINT 
  317. 3180  PRINT "PRESS <ESC> TO QUIT...."
  318. 3190  PRINT 
  319. 3200  PRINT "IS THIS THE CORRECT RECORD (Y/N) ";: GET Z$: PRINT Z$
  320. 3210  POKE 34,0
  321. 3220  IF  ASC(Z$) = 27  THEN  GOTO 190
  322. 3230  IF Z$ = "N" GOTO 2640
  323. 3240  RETURN 
  324. 3250  REM  EXIT ROUTINE
  325. 3260  CALL  -1184
  326. 3270  VTAB 10: PRINT "HAVE A NICE DAY....": END 
  327. 3280  REM  INIT DATA FILE PAYCHECK.F
  328. 3290 ER =  PEEK(222): IF ER = 5  THEN  PRINT D$"CLOSE": PRINT D$"OPEN PAYCHECK.F,L100": PRINT D$"WRITE PAYCHECK.F,R0": PRINT 0: PRINT D$"CLOSE":NR = 0: GOTO 190
  329. 3300  IF ER = 8  THEN  PRINT "DISK I/O ERROR": GOTO 3350
  330. 3310  IF ER = 4  THEN  PRINT "DISK WRITE PROTECTED": GOTO 3350
  331. 3320  IF ER = 9  THEN  PRINT "DISK FULL": GOTO 3350
  332. 3330  IF ER = 6  THEN  PRINT "FILE NOT FOUND": GOTO 3350
  333. 3340  PRINT "ERROR #"ER" IN LINE " PEEK(218) + PEEK(219) *256
  334. 3350  PRINT "PRESS ANY KEY TO RETURN TO MENU": GET K$: PRINT : GOTO 190
  335. 3360  REM  FORMAT ROUTINE
  336. 3370  IF J = 1  OR J = 6  OR J = 8  THEN F = 5
  337. 3380  IF J = 3  OR J = 4  OR J = 5  OR J = 7  OR J = 10  THEN F = 6
  338. 3390  IF J = 2  OR J = 9  THEN F = 7
  339. 3400 A$ = A$(I,J)
  340. 3410 B$ = "         "
  341. 3420 A$ = B$ +A$
  342. 3430 A$(I,J) =  RIGHT$(A$,F)
  343. 3440  RETURN