home *** CD-ROM | disk | FTP | other *** search
- rem This is the Payroll Calculation Program
-
- %INCLUDE ALL.BAS
- dim aa(11,5),b(11,5),c(11,5),d(11,5),e(11,5),f(2,10)
- dim n(2,20),k$(6,20)
- z5$="b:ep":z7$=z5$+"size"
- l$="$##,###.##":u$="##########":v$="####"
- print clear$:print
- RESTORE
- 1300 N(1,1)=8:N(1,2)=10:N(1,3)=24:N(1,4)=24:N(1,5)=24:N(1,6)=17
- 1305 N(1,7)=2:N(1,8)=5:N(1,9)=14:N(1,10)=11:N(1,11)=8:N(1,12)=8
- 1310 N(1,13)=1:N(1,14)=1:N(1,15)=1:N(1,16)=4:N(1,17)=6
- 1460 print clear$:print
-
- 1500 if end #1 then 40000
- if end #2 then 15000
- open z5$ recl 512 as 1
- close 1
- open z7$ as 2
- read #2;z2,z3
- close 2
-
- 1600 if z2>z3 then print "*** OUT OF RECORD SPACE ***"
- 1620 print clear$:PRINT "PAYROLL CALCULATION PROGRAM"
- PRINT "---------------------------"
- PRINT:PRINT "THERE ARE ";Z3;" AVAILABLE RECORDS"
- PRINT "OF THESE THERE ARE:";TAB(30);(Z3-Z2)+1;" RECORDS OPEN"
- PRINT ;TAB(30);Z2-1;" RECORDS USED"
- PRINT
-
- z2=z2-1
- 1635 PRINT "NUMBER OF EMPLOYEES";Z2
- 1650 PRINT:PRINT "CALCULATING PAYROLL":PRINT:PRINT"*** PLEASE WAIT ***"
- 1690 FOR Z=1 TO 20:N(2,Z)=0:N(0,Z)=0:NEXT Z
- 1695 N$=""
- 1700 FOR Z=1 TO 20:K$(3,Z)="":NEXT Z
- 2000 open "b:es" as 1
- for x=1 to 11
- read #1;c(x,1),c(x,2),c(x,3),c(x,4),c(x,5)
- read #1;d(x,1),d(x,2),d(x,3),d(x,4),d(x,5)
- read #1;e(x,1),e(x,2),e(x,3),e(x,4),e(x,5)
- next x
- for x=1 to 8
- read #1;f(1,x)
- next x
- for x=1 to 8
- read #1;f(2,x)
- next x
- close 1
- 3000 open "b:ef" as 1
- for x=1 to 8
- read #1;aa(x,1),aa(x,2),aa(x,3),aa(x,4),aa(x,5)
- read #1;b(x,1),b(x,2),b(x,3),b(x,4),b(x,5)
- next x
- close 1
- 5200 REM THIS PART GETS THE CUTOFF VALUES - C1=FICA CUTOFF; C2=FICA %
- 5205 REM C3=SDI CUTOFF; C4=SDI %; C5= FUTA CUTOFF; C6=FUTA %; C7=SUTA CUTOFF
- 5210 open "b:epc" as 1
- read #1;c1,c2,c3,c4,c5,c6,c7,c8
- close 1
- 5500 REM IN THE PAYROLL CALCULATIONS THAT FOLLOW, THESE GENERAL
- 5505 REM CONSIDERATIONS ARE USED. IF THE EMPLOYEE IS AN HOURLY EMPLOYEE,
- 5510 REM HIS PAY IS CALCULATED ON THE FULL HOURS ENTERED. HIS OVERTIME
- 5515 REM HOURS ARE MULTIPLIED BY 1.5 AND 2 AND ADDED TO REGULAR OR OTHER
- 5520 REM HOURS TO GET TOTAL HOURS. IF THE EMPLOYEE IS A SALARIED EMPLOYEE,
- 5525 REM THE FULL HOURS ARE POSTED BUT PAY IS CALCULATED ON 40 HOURS FOR
- 5530 REM WEEKLY; 80 HOURS FOR BIWEEKLY; 86.66667 HOURS FOR SEMIMONTHLY; AND
- 5535 REM 173.33333 HOURS FOR MONTHLY. THE PAY PERIODS PER YEAR ARE 52 FOR
- 5540 REM WEEKLY; 26 FOR BIWEEKLY; 24 FOR SEMIMONTHLY; AND 12 FOR MONTHLY.
- 6000 open "b:ep" recl 512 as 1
- 6010 open "b:tm" recl 128 as 2
- 6015 N$=""
- 6020 FOR I=1 TO Z2
- 6030 read #1,i;n(2,1),n(2,2),n$,n,r,h1,h2,h3,e0,e1,e2,f1,f2,f3,\
- e3,e4,e5,e6,e7,e8,s1,s2,s3,m1,m2,m3
- read #2,i;n(0,1),n(0,2),k$(3,3),t1,t2,t3,t4,t5,t6,t7,t8,t9
- 6060 M1=T3:REM SAVE MISCELLANEOUS DEDUCTIONS
- 6070 Z9=1:FOR Z=3 TO 15:K$(3,Z)=MID$(N$,Z9,N(1,Z)):Z9=Z9+N(1,Z):NEXT Z
-
- if k$(3,12)<>" " then 9020
-
- 6080 GOSUB 20000
- 6090 GOSUB 30000
- 8018 REM
- 8020 REM THIS PART CALCULATES FICA USING YTD GROSS (E2) AND CURRENT (E0)
- 8022 REM
- 8024 IF E2>C1 THEN F1=0
- 8026 IF E2>C1 THEN 8040
- 8028 IF E2+E0>C1 THEN F1=(E2+E0-C1)*C2
- 8030 IF E2+E0>C1 THEN 8040
- 8035 IF E2+E0<=C1 THEN F1=E0*C2
- 8036 REM
- 8038 REM NOW CALCULATE STATE DISABILITY INSURANCE
- 8039 REM
- 8040 IF E2>C3 THEN S1=0
- 8041 IF E2>C3 THEN 8050
- 8042 IF E2+E0>C3 THEN S1=(E2+E0-C3)*C4
- 8043 IF E2+E0>C3 THEN 8050
- 8044 IF E2+E0<=C3 THEN S1=E0*C4
- 8045 REM
- 8646 REM NOW COMES FEDERAL INCOME TAX CALCULATION
- 8047 REM
- 8050 P3=P1-(N*1000): REM ANNUALIZED AMOUNT SUBJECT TO WH
- 8052 Z=0
- 8056 IF K$(3,13)="M" THEN 8100
- 8057 IF K$(3,13)="H" THEN 8100
- 8058 FOR X=1 TO 8
- 8059 IF P3>AA(X,1) AND P3<=AA(X,2) THEN Z=AA(X,3)+((P3-AA(X,5))*AA(X,4))
- 8060 IF P3>AA(X,1) AND P3<=AA(X,2) THEN 8070
- 8062 NEXT X
- 8070 IF K$(3,15)="W" THEN E3=Z/52
- 8071 IF K$(3,15)="B" THEN E3=Z/26
- 8072 IF K$(3,15)="S" THEN E3=Z/24
- 8074 IF K$(3,15)="M" THEN E3=Z/12
- 8080 GOTO 8200
- 8100 FOR X=1 TO 8
- 8102 IF P3>B(X,1) AND P3<=B(X,2) THEN Z=B(X,3)+((P3-B(X,5))*B(X,4))
- 8104 IF P3>B(X,1) AND P3<=B(X,2) THEN 8120
- 8106 NEXT X
- 8120 IF K$(3,15)="W" THEN E3=Z/52
- 8121 IF K$(3,15)="B" THEN E3=Z/26
- 8122 IF K$(3,15)="S" THEN E3=Z/24
- 8124 IF K$(3,15)="M" THEN E3=Z/12
- 8130 GOTO 8200
- 8200 REM
- 8202 REM THIS IS THE CALIFORNIA STATE INCOME TAX CALCULATION
- 8204 REM WHICH USES TABLES IN A SIMILAR MANNER TO THE FEDERAL TAX
- 8206 REM CALCULATIONS. IT HAS BEEN DELIBERATELY AND CAREFULLY
- 8208 REM PARTITIONED AND EXPLAINED IN ORDER TO ALLOW YOUR PARTICULAR
- 8210 REM STATE INCOME TAX CALCULATIONS TO BE INSERTED. THESE MAY
- 8212 REM FOLLOW THE TABLES PROCEDURES OF CALIFORNIA OR THEY MAY BE
- 8214 REM SIMPLY A PERCENTAGE OF THE FEDERAL.
- 8216 REM
- 8218 REM THESE CALIFORNIA CALCULATIONS FOLLOW THE DE 44 FORM FOR THE
- 8220 REM "EXACT CALCULATION" METHOD AS DESCRIBED IN THAT BOOKLET.
- 8222 REM THEY DO NOT ALLOW FOR THE CALCULATION OF EXTRA ALLOWANCES
- 8224 REM FOR ITEMIZED DEDUCTIONS. THIS WOULD REQUIRE A COMPLETE
- 8226 REM REARRANGEMENT OF THE PAYROLL UNIT RECORD, AN EXTRA TABLE,
- 8228 REM AND AN ADDITIONAL SET OF CALCULATIONS.
- 8230 REM
- 8231 Z=0
- 8232 IF K$(3,13)="S" THEN GOSUB 8300
- 8234 IF K$(3,13)="M" THEN GOSUB 8400
- 8236 IF K$(3,13)="H" THEN GOSUB 8500
- 8238 GOTO 9000
- 8300 IF P1<=5000 THEN E6=0
- 8302 IF P1<=5000 THEN RETURN
- 8304 P1=P1-1000
- 8306 FOR X=1 TO 11
- 8308 IF P1>=C(X,1) AND P1<C(X,2) THEN Z=C(X,3)+((P1-C(X,5))*C(X,4))
- 8310 IF P1>=C(X,1) AND P1<C(X,2) THEN 8350
- 8320 NEXT X
- 8350 IF N=0 THEN 8360
- 8351 IF N>8 THEN N=8
- 8352 Z=Z-F(1,N)
- 8360 IF Z<=0 THEN E6=0
- 8362 IF Z<=0 THEN RETURN
- 8364 IF K$(3,15)="W" THEN E6=Z/52
- 8365 IF K$(3,15)="B" THEN E6=Z/26
- 8366 IF K$(3,15)="S" THEN E6=Z/24
- 8367 IF K$(3,15)="M" THEN E6=Z/12
- 8370 RETURN
- 8400 IF N<=1 AND P1<=5000 THEN E6=0
- 8401 IF N<=1 AND P1<=5000 THEN RETURN
- 8402 IF N>1 AND P1<=10000 THEN E6=0
- 8403 IF N>1 AND P1<=10000 THEN RETURN
- 8404 IF N<=1 THEN P1=P1-1000
- 8405 IF N>1 THEN P1=P1-2000
- 8406 FOR X=1 TO 11
- 8408 IF P1>=D(X,1) AND P1<D(X,2) THEN Z=D(X,3)+((P1-D(X,5))*D(X,4))
- 8410 IF P1>=D(X,1) AND P1<D(X,2) THEN 8450
- 8420 NEXT X
- 8450 IF N=0 THEN 8460
- 8451 IF N>8 THEN N=8
- 8452 Z=Z-F(2,N)
- 8460 IF Z<=0 THEN E6=0
- 8462 IF Z<=0 THEN RETURN
- 8464 IF K$(3,15)="W" THEN E6=Z/52
- 8465 IF K$(3,15)="B" THEN E6=Z/26
- 8466 IF K$(3,15)="S" THEN E6=Z/24
- 8467 IF K$(3,15)="M" THEN E6=Z/12
- 8470 RETURN
- 8500 IF P1<=10000 THEN E6=0
- 8502 IF P1<=10000 THEN RETURN
- 8504 P1=P1-2000
- 8506 FOR X=1 TO 11
- 8508 IF P1>=E(X,1) AND P1<E(X,2) THEN Z=E(X,3)+((P1-E(X,5))*E(X,4))
- 8510 IF P1>=E(X,1) AND P1<E(X,2) THEN 8550
- 8520 NEXT X
- 8550 IF N=0 THEN 8560
- 8551 IF N>8 THEN N=8
- 8552 Z=Z-F(2,N)
- 8560 IF Z<=0 THEN E6=0
- 8562 IF Z<=0 THEN RETURN
- 8564 IF K$(3,15)="W" THEN E6=Z/52
- 8565 IF K$(3,15)="B" THEN E6=Z/26
- 8566 IF K$(3,15)="S" THEN E6=Z/24
- 8567 IF K$(3,15)="M" THEN E6=Z/12
- 8570 RETURN
- 9000 print #1,i;n(2,1),n(2,2),n$,n,r,h1,h2,h3,e0,e1,e2,f1,f2,f3,\
- e3,e4,e5,e6,e7,e8,s1,s2,s3,m1,m2,m3
- 9015 N$=""
- 9020 NEXT I
- 9030 close 1
- 9040 close 2
- 10000 chain "master5"
- 15000 print clear$:print:print "CHECKING FILE LENGTH"
- PRINT:PRINT "*** PLEASE WAIT ***"
- open z5$ recl 512 as 1
- z3=(size(z5$)*block.size)/512
- for z2=1 to z3
- read #1,z2;n(2,1),n(2,2)
- if n(2,2)=0 then 15300
- next z2
- 15300 z3=int(z3)-2
- close 1
- create z7$ as 1
- print #1;z2,z3
- close 1
- GOTO 1500
- 20000 REM THIS PART CALCULATES TOTAL HOURS
- 20010 H4=T4+(T5*1.5)+(T6*2)+T7+T8+T9:REM H4=HOURS FOR CALCULATION PURPOSES
- 20020 H1=T4+T5+T6+T7+T8+T9
- 20030 IF K$(3,14)="S" THEN GOSUB 25000
- 20500 RETURN
- 25000 REM THIS PART SETS H4 FOR PAYROLL CALCULATIONS TO A VALUE
- 25010 REM DETERMINED BY THE PAYROLL PERIOD
- 25020 IF K$(3,15)="W" THEN H4=40
- 25030 IF K$(3,15)="B" THEN H4=80
- 25040 IF K$(3,15)="S" THEN H4=86.66667
- 25050 IF K$(3,15)="M" THEN H4=173.33333
- 25500 RETURN
- 30000 REM THIS CALCULATES ANNUALIZED PAY BASED ON LENGTH OF PAY PERIOD
- 30010 E0=(H4*R)+T2: REM - GROSS PAY FOR PAYROLL PERIOD
- 30020 IF K$(3,15)="W" THEN P1=E0*52
- 30030 IF K$(3,15)="B" THEN P1=E0*26
- 30040 IF K$(3,15)="S" THEN P1=E0*24
- 30050 IF K$(3,15)="M" THEN P1=E0*12
- 34995 RETURN
- 40000 print "Install payroll disk in drive B."
- input "Type return to continue ";line temp$
- initialize
- goto 1460
-