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_R220.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  6KB  |  158 lines

  1.     REMARK    ***************************************\
  2.         *  P/R220.BAS  941A QUARTERLY REPORT  *\
  3.         *    5/21/79             9:43 AM      *\
  4.         ***************************************
  5.  
  6. %INCLUDE CURSOR
  7.  
  8.     DIM S1(8),F1(6),B(9),P1(3),S(96),R1(2),R2(5),R$(5),G2$(5),G3(5)
  9.     RESTORE
  10.     DATA "GROSS EARNINGS","TAXABLE EARNINGS","SUBJECT TO F.U.T."
  11.     DATA "SUBJECT TO F.I.C.A.","SUBJECT TO S.D.I.","F.U.T."
  12.     DATA "F.I.C.A.","S.D.I.","NO. OF EMPLOYEES"
  13.     DEF FNR(I8)=INT(I8*100+.5)/100                    REMARK  ROUNDING FUNCTION
  14.     GOTO 6000
  15.  
  16. %INCLUDE SUBS1
  17. %INCLUDE GENINFO
  18. %INCLUDE MSTRIN
  19.  
  20. 5000    PRINT                                REMARK  PRINT AND CLEAR 941A PAGE TOTALS
  21.     PRINT TAB(21);
  22.     PRINT USING A$;P1(1),P1(1),P1(2),P1(3)                REMARK  PRINT PAGE TOTALS
  23.     FOR I7%=1 TO 3
  24.     P1(I7%)=0                            REMARK  CLEAR PAGE TOTAL
  25.     NEXT I7%
  26.     RETURN 
  27.  
  28. 5030    IF C-A>=I2 THEN  A1=0                        REMARK  CALCULATE HOW MUCH OF GROSS PAY IS TAXABLE,\
  29.                                             MODIFIED BY CUTOFF STORED IN I2
  30.     IF C>=I2 THEN A1=I2-C+A ELSE A1=A
  31.  
  32.     RETURN 
  33.  
  34. 6000    A$="## EMPLOYEES ## EMPLOYEES      ########.##  ########.##"    REMARK  SET UP PRINT MASKS
  35.     B$="########.##"
  36.     C$="  ######"
  37.     D$=" ########.##  ########.##"
  38.     E$="####"
  39.  
  40.     OPEN "P/R0F060.DAT" AS 1                    REMARK  OPEN FEDERAL TAX FILE
  41.     READ #1;F1(1),F1(2),F1(3),F1(4),F1(5),F1(6)            REMARK  READ TAX TABLES IN
  42.     OPEN "P/R0F070.DAT" AS 2                    REMARK  OPEN STATE TAX FILE
  43.     READ #2;S1$,S1(1),S1(2),S1(3),S1(4),S1(5),S1(6),S1(7),S1(8)    REMARK  READ STATE TAX TABLES IN
  44.  
  45.     CLOSE 1,2
  46.     OPEN "P/R0F110.DAT" RECL 1150 AS 1                REMARK  OPEN EMPLOYEE MASTER FILE
  47. 6010    CONSOLE
  48.     PRINT CLEAR.SCREEN$;"FEDERAL QUARTERLY 941A"            REMARK  DISPLAY PROGRAM I.D. AND ENTRY MASK
  49.     PRINT "ENTER START EMPLOYEE NUMBER OF ZERO TO EXIT"
  50.     PRINT:PRINT:PRINT "START EMPLOYEE NUMBER"
  51.     PRINT "END EMPLOYEE NUMBER"
  52.     X1=279:X2=3:X3=0:X4=999:GOSUB 345                REMARK  ENTER STARTING EMPLOYEE NUMBER
  53.  
  54.     IF X0=0 THEN\                            REMARK  IF START EMPLOYEE IS ZERO,
  55.     PRINT CLEAR.SCREEN$;"941A LOADING MENU":\            REMARK  ABORT PROGRAM AND LOAD THE MENU
  56.     CHAIN "P/R000"
  57.     E1=X0
  58.  
  59. 6020    X1=343:X2=3:X3=E1:X4=999:GOSUB 345                REMARK  ENTER ENDING EMPLOYEE NUMBER
  60.     E2=X0
  61.     X2=1:X3=0:X4=1:X2$="ENTRY CORRECT?":GOSUB 665            REMARK  VERIFY ENTRY: '1'=O.K.; '0'=RETRY
  62.     IF X0<>1 THEN  6010
  63.  
  64.     FOR A%=1 TO 3
  65.     P1(A%)=0                            REMARK  CLEAR PAGE TOTAL
  66.     NEXT A%
  67.     FOR A%=1 TO 9
  68.     B(A%)=0                                REMARK  CLEAR GRAND TOTALS
  69.     NEXT A%
  70.     B1=0
  71.     RESTORE 
  72.  
  73.     Y9=4:OPEN "G/I0F010.DAT" RECL 200 AS Y9                REMARK  OPEN GENERAL INFORMATION FILE
  74.     GOSUB 700                            REMARK  READ GENERAL INFORMATION FILE
  75.     CLOSE Y9
  76.     LPRINTER                            REMARK  SELECT PRINTER AS OUTPUT DEVICE
  77.     IF E1 > MSTR.RECORDS THEN GOTO 6010                REMARK  IF INVALID EMPLOYEE RANGE, RE-ENTER
  78.     IF E2 > MSTR.RECORDS THEN E2=MSTR.RECORDS
  79.     FOR J%=E1 TO E2
  80.     X0=J%
  81.     GOSUB 745                            REMARK  READ EMPLOYEE MASTER RECORD
  82.     IF Q$="E" THEN 6100
  83.     IF S(1)<E1 OR S(59)=0 THEN GOTO 6090                REMARK  IF NO Q-T-D PAY, SKIP THIS EMPLOYEE
  84.     B(1)=B(1)+S(59)                            REMARK  ADD TOTAL PAY TO TOTAL Q-T-D PAY
  85.     A=S(59)-S(60)                            REMARK  CALCULATE TAXABLE Q-T-D PAY
  86.     B(2)=B(2)+A                            REMARK  ADD TO 941A TOTALS
  87.     B(9)=B(9)+1                            REMARK  INCREMENT TOTAL EMPLOYEES LISTED
  88.     C=S(35)-S(36)                            REMARK  CALCULATE Y-T-D TAXABLE PAY
  89.     I2=S1(8)
  90.     GOSUB 5030                            REMARK  CALCULATE TOTAL TAXABLE PAY
  91.     B1=B1+A1                            REMARK  ADD TO TOTAL SUBJECT TO S.U.I
  92.     I2=F1(2):GOSUB 5030                        
  93.     B(3)=B(3)+A1                            REMARK  ADD TO TOTAL FUT EMPLOYER
  94.     I2=F1(4):GOSUB 5030
  95.     B(4)=B(4)+A1                            REMARK  ADD TO TOTAL FICA EMPLOYER
  96.     I2=F1(6):GOSUB 5030
  97.     B.0=A1                                REMARK  CALCULATE FICA EMPLOYEE WAGES
  98.     I2=S1(6):GOSUB 5030                        REMARK  CALCULATE SDI EMPLOYER WAGES
  99.     B(5)=B(5)+A1
  100.     GOSUB 6200                            REMARK  PRINT 941A DETAIL ON FORM
  101. 6090    NEXT J%
  102. 6100    IF LINE.COUNT%>43 THEN  6110
  103.     FOR I3%=LINE.COUNT% TO 43
  104.     PRINT
  105.     NEXT I3%
  106. 6110    GOSUB 5000                            REMARK  PRINT 941A TOTALS FOR LAST PAGE
  107. 6120    CONSOLE
  108.     X2=1:X3=0:X4=1:X2$="READY TO PRINT SUMMARY?":GOSUB 665        REMARK  VERIFY ENTRY:'1'=READY; '0'=NOT READY
  109.     IF X0<>1 THEN  6120
  110.     LPRINTER                            REMARK  SELECT PRINTER AS OUTPUT DEVICE
  111.     PRINT:PRINT
  112.     PRINT "QUARTERLY TOTALS"
  113.     PRINT 
  114. 6130    B(6)=FNR(B(3)*F1(1)/10000)                    REMARK  CALCULATE ESTIMATED FEDERAL UNEMPLOYMENT TAX
  115.     B(7)=FNR(B(4)*F1(3)/10000)                    REMARK  CALCULATE ESTIMATED EMPLOYEE FICA TAXES
  116.     B(8)=FNR(B(5)*S1(5)/10000)                    REMARK  CALCULATE ESTIMATED SDI TAXES
  117.     FOR I3%=1 TO 8
  118.     READ A2$                            REMARK  READ SUMMARY DESCRIPTIONS FROM DATA TABLE
  119.     PRINT A2$;TAB(20);
  120.     PRINT USING B$;B(I3%)                        REMARK  PRINT DESCRIPTION AND AMOUNT
  121.     PRINT 
  122. 6150    NEXT I3%
  123.     PRINT "SUBJECT TO S.U.I.";TAB(20);
  124.     PRINT USING B$;B1                        REMARK  PRINT S.U.I. TAXABLE EARNINGS
  125.     PRINT 
  126.     PRINT "S.U.I.";TAB(20);
  127.     PRINT USING B$;FNR(B1*S1(7)/10000)                REMARK  PRINT ESTIMATED S.U.I. TAX
  128.     PRINT 
  129.     READ A5$
  130.     PRINT A5$;TAB(20);
  131.     PRINT USING C$;B(9)                        REMARK  PRINT NUMBER OF EMPLOYEES IN THIS REPORT
  132. 6170    GOTO 6010
  133.  
  134. 6200    IF LINE.COUNT%>44 OR P=0 THEN GOTO 6250                REMARK  PRINT EMPLOYEE DETAIL ON 941A REPORT
  135. 6210    PRINT TAB(7);
  136.     X0=R1(1):GOSUB 760.5                        REMARK  PRINT SOCIAL SECURITY NUMBER
  137.     PRINT TAB(22);R$(1);TAB(51);                    REMARK  PRINT  EMPLOYEE NAME
  138.     PRINT USING D$;B.0,A                        REMARK  PRINT FICA WAGES AND Q-T-D TAXABLE PAY
  139. 6230    LINE.COUNT%=LINE.COUNT%+1
  140.     P1(1)=P1(1)+1                            REMARK  INCREMENT NUMBER OF EMPLOYEES THIS PAGE
  141.     P1(2)=P1(2)+B.0                            REMARK  ADD TO TOTAL FICA WAGES THIS PAGE
  142.     P1(3)=P1(3)+A                            REMARK  ADD TO TOTAL Q-T-D TAXABLE PAY THIS PAGE
  143.     IF LINE.COUNT%<44 THEN  RETURN
  144.     GOSUB 5000                            REMARK  PRINT AND CLEAR PAGE TOTALS
  145. 6250    IF P>1 THEN PRINT CHR$(12);                    REMARK  IF FIRST PAGE, DON'T DO A FORM FEED
  146. 6251    PRINT:PRINT
  147.     P=P+1
  148.     PRINT TAB(10);G2$(5);TAB(54);                    REMARK  PRINT COMPANY'S FEDERAL & STATE ID NUMBERS
  149.     X0=G3(1):GOSUB 680.5                        REMARK  PRINT REPORT DATE
  150.     PRINT TAB(71);
  151.     PRINT USING E$;P                        REMARK  PRINT PAGE NUMBER
  152. 6270    FOR I3%=1TO 4
  153.     PRINT TAB(10);G2$(I3%)                        REMARK  PRINT COMPANY NAME AND ADDRESS
  154.     NEXT I3%
  155.     FOR I%=1 TO 6:PRINT:NEXT I%                    REMARK  PRINT LINE FEEDS TO DETAIL SECTION
  156.     LINE.COUNT%=1
  157.     GOTO 6210
  158.