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_R140.BAS
< prev
next >
Wrap
BASIC Source File
|
1984-04-29
|
5KB
|
131 lines
REMARK *****************************************\
* P/R140.BAS PAYROLL CHECK WRITER *\
* 5/17/79 11:15 P.M. *\
*****************************************
%INCLUDE CURSOR
DIM MONEY$(39),S(96),R$(5),R1(2),R2(5),G2$(5),G3(5)
DATA "ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT" REMARK DATA TABLE FOR CHECK CALCULATION
DATA "NINE","TEN","ELEVEN","TWELVE","THIRTEEN","FOURTEEN","FIFTEEN"
DATA "SIXTEEN","SEVENTEEN","EIGHTEEN","NINETEEN","TWENTY","THIRTY"
DATA "FORTY","FIFTY","SIXTY","SEVENTY","EIGHTY","NINETY"
DATA "JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST"
DATA "SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"
DEF FNR(Z1)=INT(Z1*100+.5)/100 REMARK ROUNDING FUNCTION
RESTORE
FOR I%=1 TO 39
READ MONEY$(I%)
NEXT I%
GOTO 6000
%INCLUDE SUBS1
%INCLUDE GENINFO
%INCLUDE MSTRIN
5000 X4$="" REMARK ROUTINE TO PRINT CHECK AMOUNT IN ENGLISH
IF A1<0 THEN RETURN REMARK IF ZERO CHECK AMOUNT, RETURN
N1=INT(A1/1000) REMARK DIVIDE AMOUNT BY 1000
IF N1>99 THEN RETURN REMARK CHECK CAN BE NO GREATER THAN $99,999.99
IF N1=0 THEN 5005
GOSUB 5040 REMARK CONVERT THOUSANDS OF DOLLARS TO ENGLISH
X4$=X4$+" THOUSAND"
5005 A1=A1-N1*1000
N1=INT(A1/100) REMARK DIVIDE AMOUNT BY 100
IF N1=0 THEN 5010
GOSUB 5040 REMARK CONVERT HUNDREDS OF DOLLARS TO ENGLISH
X4$=X4$+" HUNDRED"
5010 A1=A1-N1*100
N1=INT(A1) REMARK REMAINING DOLLARS
IF N1 > 0 THEN GOSUB 5040
IF LEN(X4$)=0 THEN 5025
5020 X4$=X4$+" DOLLARS"
5025 A1=A1-N1 REMARK CALCULATE REMAINING CENTS
IF A1 < .01 THEN RETURN REMARK IF NO CENTS, RETURN
IF LEN(X4$) > 0 THEN X4$=X4$+" AND"
5030 A1=A1*100
X4$=X4$+" "+STR$(A1)+" CENTS"
5035 RETURN
5040 IF N1 < 21 THEN X4$=X4$+" "+MONEY$(N1):RETURN REMARK CONVERT AMOUNT IN N1 TO ENGLISH IN X4$
X4$=X4$+" "+MONEY$(INT((N1-20)/10)+20)
A3=N1-INT(N1/10)*10
IF A3=0 THEN RETURN
X4$=X4$+"-"
5050 X4$=X4$+MONEY$(A3)
5055 RETURN
6000 A$=" ###.## #####.## ##.## ####.## #####.## ###.##" REMARK SET UP PRINT MASKS FOR CHECK WRITER
B$=" ##, ##"
C$="###.## ###.## ###.## "
D$="####.## ####.##"
E$="-####.##"
Y9=3
OPEN "P/R0F110.DAT" RECL 1150 AS 1,\
"P/R0F030.DAT" RECL 38 AS 2,\
"G/I0F010.DAT" RECL 200 AS 3
GOSUB 700 REMARK READ GENERAL INFORMATION FILE
CONSOLE
PRINT CLEAR.SCREEN$;"CHECK WRITER" REMARK DISPLAY PROGRAM I.D.
PRINT
PRINT
PRINT
PRINT "START EMPLOYEE NUMBER"
PRINT "END EMPLOYEE NUMBER"
6035 X1=279:X2=3:X3=0:X4=999:GOSUB 345 REMARK ENTER FIRST EMPLOYEE TO WRITE PAYROLL CHECK FOR
IF X0=0 THEN 6320 REMARK END PROGRAM ON ZERO EMPLOYEE NUMBER
E1=X0
X1=343:X2=3:X3=E1:X4=999:GOSUB 345 REMARK ENTER LAST EMPLOYEE NUMBER IN RANGE
E2=X0
IF E2 > MSTR.RECORDS THEN E2=MSTR.RECORDS REMARK RESET END EMPLOYEE ON DEFAULT ENTRY
X2=1:X3=0:X4=1:X2$="ENTRY CORRECT?"
GOSUB 665 REMARK VERIFY ENTRY: '1'=O.K., '0'=RETRY
IF X0 <> 1 THEN 6035
LPRINTER
FOR I2%=E1 TO E2
X0=I2%
GOSUB 745 REMARK READ MASTER RECORD FOR EMPLOYEE
IF S(1)=0 OR S(83)=0 OR R2(1)=99 THEN GOTO 6271 REMARK IF EMPLOYEE RECORD IS DELETED, INACTIVE\
OR HAS NOT BEEN PAID, DO NOT WRITE A CHECK.
6100 PRINT TAB(16);R$(1);TAB(61); REMARK PRINT EMPLOYEE NAME ON PAY STUB
X0=G3(2):GOSUB 680.5 REMARK PRINT PERIOD START DATE ON CHECK
PRINT " TO ";
X0=G3(3):GOSUB 680.5 REMARK PRINT PERIOD END DATE ON CHECK
PRINT:PRINT
PRINT USING A$; S(73),S(74),S(75),S(76),S(83),S(85); REMARK PRINT REGULAR HOURS, REGULAR PAY,\
O/T HOURS, O/T PAY, TOTAL PAY, FED W/H
PRINT USING C$;S(87),S(88);S(86); REMARK PRINT FICA, SDI AND STATE W/H TAXES
PRINT USING D$; S(89),S(83)-S(90) REMARK PRINT OTHER DEDUCTIONS AND NET PAY
FOR I%=1 TO 7:PRINT:NEXT I% REMARK SPACE DOWNWARD TO CHECK AMOUNT AREA
X0$=RIGHT$("000000"+STR$(G3(1)),6)
Z1=VAL(LEFT$(X0$,2)) REMARK Z1=MONTH
Z2=VAL(MID$(X0$,3,2)) REMARK Z2=DAY
Z3=VAL(RIGHT$(X0$,2)) REMARK Z3=YEAR
X4$=MONEY$(27+Z1)
PRINT TAB(69-LEN(X4$));X4$; REMARK PRINT MONTH IN ENGLISH
PRINT USING B$;Z2,Z3
PRINT
PRINT
A1=S(83)-S(90)
GOSUB 5000 REMARK CREATE ENGLISH CHECK AMOUNT IN X4$
PRINT TAB(2); "**";X4$;"**";TAB(65); REMARK PRINT CHECK AMOUNT
PRINT USING "**#####.##";S(83)-S(90)
FOR I%=1 TO 6:PRINT:NEXT I% REMARK PRINT LINE FEEDS TO PAYEE SECTION
PRINT TAB(5);"**";R$(1);"**" REMARK PRINT CHECK PAYEE
FOR I=1 TO 9:PRINT:NEXT I REMARK SKIP TO CHECK STUB TO PRINT DEDUCTIONS
6200 IF D1 > S(1) THEN 6270
READ #2;D1,D2,D3,D4,D1$,D5,D6 REMARK READ DEDUCTION RECORD
IF END #2 THEN 6270
IF D1 < S(1) THEN 6200 REMARK SEARCH FOR DEDUCTION/MISC PAY FOR EMPLOYEE
IF D4 < 10 THEN 6200 REMARK IF RECORD IS UNUSED, GET NEXT
6255 IF D2 < 2 THEN 6260
X=-1
D6=D6*X
6260 PRINT TAB(54);D1$;TAB(67); REMARK PRINT DESCRIPTION
PRINT USING E$;D6 REMARK PRINT AMOUNT ON CHECK STUB
GOTO 6200
6270 PRINT
PRINT
PRINT
6271 NEXT I2%
6320 CONSOLE
PRINT CLEAR.SCREEN$;"P/R CHECK WRITER LOADING MENU"
CHAIN "P/R000"