home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug088.ark / W2PRINT.BAS < prev   
BASIC Source File  |  1984-04-29  |  4KB  |  123 lines

  1.      rem This is the Federal W2 Printer
  2.  
  3. %INCLUDE ALL.BAS
  4.      dim n(2,20),k$(3,20),h(9),s(9),t(4,9)
  5.      print clear$:print
  6.      RESTORE
  7. 1055 T$="#,###.##"
  8. 1060 U$="##,###.##"
  9. 1065 V$="###,###.##"
  10. 1075 N(1,3)=24:N(1,4)=24:N(1,5)=24:N(1,6)=17:N(1,7)=2:N(1,8)=5
  11. 1080 N(1,9)=14:N(1,10)=11:N(1,11)=8:N(1,12)=8:N(1,13)=1:N(1,14)=1:N(1,15)=1
  12. 1120 Z9=1
  13. 1145 Z9=0
  14. 1200 REM READ TAB VALUES ROUTINE
  15. 1400 REM THIS PART GETS CUTOFFS FOR FICA,SDI,FUTA AND SUTA
  16.      open "b:epc" as 1
  17.      read #1;c1,c2,c3,c4,c5,c6,c7,c8
  18.      close 1
  19. 1500 PRINT clear$:PRINT
  20. 1510 PRINT "IS PENSION PLAN COVERAGE PROVIDED YOUR EMPLOYEES?":PRINT
  21. 1520 INPUT K$(0,20)
  22. 1530 PRINT clear$:PRINT
  23. 1540 PRINT "DID YOU FAIL TO COLLECT FICA TAX ON EMPLOYEES TIPS, PROVIDE"
  24. 1550 PRINT "MORE THAN $50,000 GROUP-TERM LIFE INSURANCE, OR HAVE ANY"
  25. 1560 PRINT "STATUTORY EMPLOYEES WHOSE EARNINGS ARE SUBJECT TO FICA BUT"
  26. 1570 PRINT "NOT SUBJECT TO FEDERAL INCOME TAX (YES OR NO TO ANY ONE,"
  27. 1580 PRINT "TWO, OR ALL THREE)?"
  28. 1590 PRINT:INPUT line temp$
  29.           if left$(temp$,1)="y" or left$(temp$,1)="Y" then Y8=1
  30. 1600 PRINT clear$:PRINT
  31. 1610 PRINT "DID ANY EMPLOYEES HAVE TIPS THAT MUST BE INCLUDED IN BOX 18"
  32. 1620 PRINT:INPUT line temp$
  33.      if left$(temp$,1)="y" or left$(temp$,1)="Y" then Y9=1
  34. 1630 PRINT clear$:PRINT
  35. 1640 PRINT "ENTER STATE NAME FOR BOX 22.":PRINT
  36. 1650 INPUT K$(0,19)
  37. 3000 REM READ NAME FILE SUBROUTINE
  38. 3005 a5=T%(12)
  39. 3080 N(1,10)=20:N(1,11)=20
  40. 3085 Z9=1:FOR Z=3 TO 11:K$(0,Z)=MID$(N$,Z9,N(1,Z)):Z9=Z9+N(1,Z):NEXT Z
  41. 3090 N(1,10)=11:N(1,11)=8
  42. 3125 REM ROUTINE TO ELIMINATE TRAILING BLANKS
  43.      l8=1
  44. 3130 FOR I=3 TO 11
  45.      l9=len(k$(0,i))
  46. 3140 for z=l9 to l8 step -1
  47. 3150 IF MID$(K$(0,I),Z,1)<>" " THEN 3170
  48. 3160 NEXT Z
  49. 3170 Z$=""
  50. 3180 FOR Z0=1 TO Z
  51. 3190 Z$=Z$+MID$(K$(0,I),Z0,1)
  52. 3200 NEXT Z0
  53. 3210 K$(0,I)="":K$(0,I)=Z$
  54. 3220 NEXT I
  55. 6000 REM PRINT W2 FORMS
  56. 6005 PRINT clear$:PRINT:PRINT "PRINTING W2 FORMS":P0=1
  57. 6010 lprinter
  58. 6015 open "b:ep" recl 512 as 1
  59. 6020 z3=(size("b:ep")*block.size)/512
  60. 6025 FOR Z2=1 TO Z3
  61. 6030 read #1,z2;N(2,1),N(2,2),N$,N,R,H1,H2,H3
  62. 6035 IF N(2,2)=0 THEN 6045
  63. 6040 NEXT Z2
  64. 6045 close 1
  65. 6050 Z2=Z2-1
  66. 6090 P1=1:P2=41
  67. 6095 open "b:ep" recl 512 as 1
  68. 6200 FOR Z1=P1 TO P2
  69. 9000 REM GET RECORD AND PRINT
  70. 9010 read #1,z1;N(2,1),N(2,2),N$,N,R,H1,H2,H3,\
  71.           E0,E1,E2,F1,F2,F3,E3,E4,E5,E6,E7,E8,S1,S2,S3,M1,M2,M3
  72. 9020 IF N(2,2)=0 THEN 9500
  73. 9095 Z9=1:FOR Z=3 TO 15:K$(3,Z)=MID$(N$,Z9,N(1,Z)):Z9=Z9+N(1,Z):NEXT Z
  74. 9100 N$=""
  75. 9102 IF E2>C1 THEN Z5=C1:GOTO 9110
  76. 9104 Z5=E2
  77. 9110 T1=T1+E5:T2=T2+E2:T3=T3+F3:T4=T4+Z5:T5=T5+Z6
  78. 9120 PRINT clear$:PRINT
  79. 9130 IF Y8=1 THEN INPUT "ENTER BOX 17 INFORMATION ";Y6:PRINT
  80. 9140 IF Y9=1 THEN INPUT "ENTER BOX 18 INFORMATION ";Z6:PRINT
  81. 9200 FOR Z=1 TO 3:print:NEXT Z
  82. 9210 print TAB(10);N(2,1);TAB(34);K$(0,11)
  83. 9220 print:print
  84. 9230 print TAB(11);K$(0,4):print TAB(11);K$(0,5)
  85. 9240 print TAB(11);K$(0,6);", ";K$(0,7);"  ";K$(0,8);TAB(44);K$(0,10)
  86. 9250 print:print
  87. 9260 print TAB(11);K$(3,10);TAB(27);:print using u$;e5;TAB(40);
  88.      print using v$;e2;tab(55);:print using t$;f3;tab(68);:print using u$;z5
  89. 9275 print
  90. 9280 print TAB(10);K$(3,3);TAB(48);K$(0,20);TAB(55);
  91.      print using t$;y6;tab(68);:print using u$;z6
  92. 9300 print:print TAB(11);K$(3,5);TAB(41);
  93.      print using u$;e8;tab(53);:print using v$;e2
  94. 9310 print TAB(67);K$(0,19)
  95. 9320 print TAB(11);K$(3,6);", ";K$(3,7);"  ";K$(3,8)
  96. 9325 print:print
  97. 9330 print TAB(68);:print using t$;s3
  98. 9350 P0=P0+1
  99. 9355 IF P0=4 THEN P0=1:INPUT "TYPE RETURN TO CONTINUE ";line temp$
  100. 9400 NEXT Z1
  101. 9410 GOSUB 10000
  102. 9500 IF Z1>41 THEN GOSUB 10000
  103. 9910 close 1
  104. 9915 console
  105. 9920 CHAIN "master5"
  106. 10000 IF Z1+1/3=INT(Z1+1/3) THEN 10500
  107. 10010 A=Z1
  108. 10020 FOR Z=1 TO Z2
  109. 10030 A=A-3
  110. 10040 IF A<1 THEN A=A+3:GOTO 10060
  111. 10050 NEXT Z
  112. 10060 FOR Z=1 TO 8:print:NEXT Z
  113. 10070 print TAB(54);"X"
  114. 10080 IF A>1 THEN FOR Z=1 TO 21:print:NEXT Z:print TAB(54);"X"
  115. 10090 IF A>1 THEN FOR Z=1 TO 12:print:NEXT Z
  116. 10500 FOR Z=1 TO 6:print:NEXT Z
  117. 10510 print TAB(45);"X"
  118. 10520 FOR Z=1 TO 6:print:NEXT Z
  119. 10530 print using v$;tab(25);t1;tab(38);t2;tab(53);t3;tab(65);t4
  120.       print:print using v$;tab(65);t5
  121. 10560 T1=0:T2=0:T3=0:T4=0:T5=0
  122. 10570 RETURN
  123.