home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG045.ARK / P_R230.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  4KB  |  125 lines

  1.  
  2.  
  3.     REMARK    **************************************\
  4.         *  P/R230.BAS       PRINT W-2 FORMS  *\
  5.         *  5/17/79                  1:15 PM  *\
  6.         **************************************
  7.  
  8. %INCLUDE CURSOR
  9.  
  10.     DIM S(96),R$(5),R2(5),R1(2),G2$(5),G3(5),F1(6),K(4,20)
  11.  
  12.     GOTO 6000
  13.  
  14. %INCLUDE SUBS1
  15. %INCLUDE GENINFO
  16. %INCLUDE MSTRIN
  17.  
  18. 6000    MASKA$="  ######.##"                        REMARK  SET UP PRINT MASKS
  19.     MASKB$=" #####.##"
  20.     MASKC$="######.##"
  21.     MASKD$="#######.##"
  22.  
  23.     Y9=2
  24.     OPEN "G/I0F010.DAT" RECL 200 AS Y9:GOSUB 700            REMARK  OPEN AND LOAD GENERAL INFORMATION FILE
  25.     OPEN "P/R0F110.DAT" RECL 1150 AS 1                REMARK  OPEN PAYROLL MASTER FILE
  26.     OPEN "P/R0F060.DAT" AS 3                    REMARK  OPEN FEDERAL TAX FILE
  27.  
  28.     A3$="0"
  29.     PRINT CLEAR.SCREEN$;"FEDERAL FORM W-2"                REMARK  DISPLAY PROGRAM I.D. ON CRT
  30.     PRINT "ENTER START EMPLOYEE NUMBER OF ZERO TO EXIT"
  31.     PRINT:PRINT:PRINT"START EMPLOYEE NUMBER"
  32.  
  33.     PRINT "END EMPLOYEE NUMBER"
  34. 6010    X1=279:X2=3:X3=0:X4=MSTR.RECORDS:GOSUB 345            REMARK  ENTER START EMPLOYEE NUMBER
  35.  
  36.     IF X0=0 THEN\                            REMARK  IF START EMPLOYEE=0, END PROGRAM
  37.     PRINT CLEAR.SCREEN$;"W-2 LOADING MENU":\
  38.     CHAIN "P/R000"
  39.  
  40.  
  41.     B=X0
  42.     X1=343:X2=3:X3=B:X4=999:GOSUB 345                REMARK  ENTER END EMPLOYEE
  43.     E=X0
  44.     IF E>MSTR.RECORDS THEN E=MSTR.RECORDS                REMARK  SET DEFAULT END OF FILE
  45.     X2$="ENTRY CORRECT?":X2=1:X3=0:X4=1:GOSUB 665
  46.     IF X0<>1 THEN 6010                        REMARK  VERIFY ENTRY:'1'=O.K.; '0'=RETRY
  47.     X2$="TOTALS ONLY?":X2=1:X3=0:X4=1:GOSUB 665            REMARK  PROMPT IF THIS RUN FOR TOTALS ONLY
  48.     TOTALS.ONLY%=X0
  49.  
  50.     READ #3;L,L,L,L,L,L                        REMARK  READ EMPLOYEE FICA CUTOFF
  51.  
  52.     LPRINTER                            REMARK  SELECT PRINTER AS OUTPUT DEVICE
  53.  
  54.     FOR I%=B TO E                            REMARK  PRINT W-2 FORMS FOR EMPLOYEE RANGE
  55.     X0=I%
  56.     GOSUB 745                            REMARK  READ EMPLOYEE RECORD
  57.     IF S(1)=0 THEN GOTO 6150
  58. 6060    IF S(35)-S(36)=0 THEN 6150
  59.     IF TOTALS.ONLY%=1 THEN GOTO 6090
  60.     PRINT TAB(23);MID$(G2$(5),13,12)                REMARK  PRINT COMPANY'S FEDERAL & STATE I.D. NUMBERS
  61.     FOR J%=1TO 4
  62.     PRINT G2$(J%)                            REMARK  PRINT EMPLOYER'S NAME AND ADDRESS
  63.     NEXT J%
  64.     PRINT TAB(34);MID$(G2$(5),1,12)                    
  65.     PRINT:PRINT
  66.     X0=R1(1):GOSUB 760.5                        REMARK  PRINT EMPLOYEE'S SOCIAL SECURITY NUMBER
  67. 6070    PRINT TAB(14);
  68.     PRINT USING MASKC$;S(37);                    REMARK PRINT EMPLOYEE'S FEDERAL WITHHOLDING TAX
  69.  
  70. 6090    A=S(35)-S(36)                            REMARK  CALCULATE FICA WAGES FOR EMPLOYEE
  71.     IF A>L THEN A=L
  72.     IF TOTALS.ONLY% THEN GOTO 6140
  73. 6100    PRINT TAB(28);
  74.     PRINT USING MASKA$+MASKA$;S(35)-S(36);S(39);            REMARK  PRINT TAXABLE PAY AND FICA TAX FOR THE YEAR
  75.     PRINT TAB(51);
  76.     PRINT USING MASKB$;A                        REMARK  PRINT FICA WAGES
  77.     PRINT
  78.     PRINT TAB(3);R$(1);TAB(34);"NO"                    REMARK  PRINT EMPLOYEE NAME AND ADDRESS
  79.     PRINT TAB(3);R$(2)
  80.     PRINT TAB(3);R$(3);TAB(29);
  81.     PRINT USING MASKA$;S(38);S(35)-S(36);                REMARK  PRINT STATE WITHHOLDING TAX AND STATE TAXABLE PAY
  82.     PRINT TAB(57);"CA"
  83.     PRINT TAB(3);R$(4);TAB(55);"CA SDI"
  84.     PRINT TAB(49);:PRINT USING MASKA$;S(40)                REMARK  PRINT CALIFORNIA SDI DEDUCTION FOR THE YEAR
  85.     PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
  86.  
  87. 6140    EMPLOYEE.COUNT%=EMPLOYEE.COUNT%+1                REMARK  ACUMULATE THIS EMPLOYEE TO REPORT TOTALS
  88.     INDEX%=INT(FLOAT(EMPLOYEE.COUNT%)/41)+1
  89.     K(1,INDEX%)=K(1,INDEX%)+S(37)
  90.     K(2,INDEX%)=K(2,INDEX%)+S(35)-S(36)
  91.     K(3,INDEX%)=K(3,INDEX%)+S(39)
  92.     K(4,INDEX%)=K(4,INDEX%)+A
  93.  
  94.     IF FLOAT(EMPLOYEE.COUNT%)/41=INT(FLOAT(EMPLOYEE.COUNT%)/41)\    REMARK  SKIP ONE FORM FOR EVERY 41 IF W-2'S ARE PRINTED
  95.     AND TOTALS.ONLY%=0\
  96.     THEN\
  97.     FOR J%=1 TO 22:\
  98.     PRINT:\
  99.     NEXT J%
  100.  
  101. 6150    NEXT I%
  102.  
  103. 6200    CONSOLE                                REMARK  RE-SELECT CONSOLE FOR INPUT
  104.     X2=1:X3=0:X4=1
  105.     X2$="MOUNT STANDARD PAPER AND PRESS <RETURN> WHEN READY"
  106.     GOSUB 665                            REMARK  WAIT FOR OPERATOR RESPONSE
  107.     LPRINTER
  108.     PRINT TAB(12);"FED. INCOME";TAB(43);"FICA TAX";TAB(61);"TOTAL"    REMARK  PRINT HEADINGS
  109.     PRINT "GROUP";TAB(12);"TAX WITHHELD";TAB(31);"WAGES";
  110.     PRINT TAB(43);"WITHHELD";TAB(58);"FICA WAGES"
  111.     PRINT
  112.     FOR I%=1 TO INT(FLOAT(EMPLOYEE.COUNT%)/41)+1
  113.     PRINT
  114.     PRINT TAB(3);I%;TAB(12);                    REMARK  PRINT REPORT TOTALS FOR TWENTY GROUPS OF 41 EMPLOYEES
  115.     PRINT USING MASKD$;K(1,I%);
  116.     PRINT TAB(28);
  117.     PRINT USING MASKD$;K(2,I%);
  118.     PRINT TAB(41);
  119.     PRINT USING MASKD$;K(3,I%);
  120.     PRINT TAB(58);
  121.     PRINT USING MASKD$;K(4,I%)
  122.     NEXT I%
  123.  
  124.     GOTO 6010                            REMARK  RE-PROMPT OPERATOR TO RUN W-2 PROGRAM
  125.