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_R06B.BAS
< prev
next >
Wrap
BASIC Source File
|
1984-04-29
|
8KB
|
260 lines
REMARK *********************************************\
* P/R06B.BAS TRANSACTION FILE MAINTENANCE *\
* 5/16/79 11:00 AM *\
*********************************************
DIM P$(7),W$(5),T2(8),G3(5),G2$(5)
%INCLUDE PRNMASK
%INCLUDE CURSOR
GOTO 6000
%INCLUDE SUBS1
%INCLUDE GENINFO
780 IF END #Y4 THEN 795
READ #Y4,X0;T2(1),T2(2),T2(3),T2(4),T2(5),T2(6),T2(7),T2(8) REMARK READ TRANSACTION RECORD
RETURN
795 R1=99:RETURN
800 PRINT #Y4,X0;T2(1),T2(2),T2(3),T2(4),T2(5),T2(6),T2(7),T2(8) REMARK WRITE TRANSACTION RECORD
RETURN
REMARK ***** LINE PRINTER ROUTINE *****
825 A1=59 REMARK SET CARRIAGE WIDTH
IF LINE.COUNT% < 55 THEN RETURN REMARK IF SPACE REMAINS ON REPORT PAGE, RETURN
PRINT CHR$(12);
P=P+1
PRINT
PRINT TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE ";
X0=G3(1):GOSUB 680.5 REMARK PRINT TODAY'S DATE
PRINT
PRINT TAB((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE ";P
PRINT TAB((A1-6)/2);"DAY";G3(5)
PRINT
PRINT " LOC. EMP. DAY PT HOURS WT JOB NO. DEPT AMOUNT"
PRINT
LINE.COUNT%=6 REMARK RESET LINE COUNTER FOR NEW PAGE
RETURN
5300 X1=530:X2=1:X3=0:X4=6:GOSUB 345 REMARK CHANGE PAY TYPE
T2(3)=X0
X1=530:GOSUB 210
PRINT USING "# /123456789012/";T2(3),P$(T2(3)+1) REMARK DISPLAY PAY TYPE AND CORRESPONDING DESCRIPTION
RETURN
5350 X1=594:X2=1:X3=0:X4=4:GOSUB 345 REMARK CHANGE WORK TYPE
T2(4)=X0
X1=594:GOSUB 210
PRINT USING "# /123456789012/";T2(4),W$(T2(4)+1) REMARK DISPLAY WORK TYPE AND CORRESPONDING DESCRIPTION
RETURN
5400 X1=653:X2=6:X3=0:X4=999999:GOSUB 345 REMARK CHANGE JOB NUMBER
T2(6)=X0
RETURN
5450 X1=721:X2=2:X3=0:X4=99 REMARK CHANGE DEPARTMENT NUMBER
GOSUB 345
T2(5)=X0
RETURN
5500 X1=782:X2=5:X3=0:X4=99.99:GOSUB 345 REMARK CHANGE HOURS
T2(7)=X0
RETURN
5550 X1=844:X2=7:X3=0:X4=9999.99:GOSUB 345 REMARK CHANGE AMOUNT
T2(8)=X0
RETURN
6000 MASKA$=" # /13456789012/" REMARK SET UP PRINT MASKS
MASKB$="#### /134567890123456789012/"
MASKC$=" ## /13456789012345678901234 /"
MASKD$="#### #### ## #"
%INCLUDE PRNMASK
Y4=1:Y9=2
OPEN "P/R0F040.DAT" RECL 42 AS 1 REMARK OPEN PAYROLL TRANSACTION FILE
OPEN "G/I0F010.DAT" RECL 200 AS Y9:GOSUB 700 REMARK OPEN AND LOAD GENERAL INFORMATION FILE
OPEN "CRT" RECL 1100 AS 19
P$(1)="SALARY" REMARK SET UP PAY TYPE DESCRIPTIONS
P$(2)="HOURLY"
P$(3)="VACATION"
P$(4)="HOLIDAY"
P$(5)="PIECE WORK"
P$(6)="OVERTIME"
P$(7)="COMP TIME"
W$(1)="N/A" REMARK SET UP WORK TYPE DESCRIPTIONS
W$(2)="PHASE 1"
W$(3)="PHASE II"
W$(4)="NO JOB NO."
W$(5)="JOB NO."
X0=6:GOSUB 260 REMARK LOAD TRANSACTION F/M CRT MASK
6020 CONSOLE
IF B>0 THEN GOSUB 265
X2=1:X3=0:X4=2
X2$="ENTER OPERATION (1=PRINT; 2=CHANGE OR DELETE; 0=END)" REMARK ENTER OPERATION CODE
GOSUB 665
IF X0=0 THEN PRINT CLEAR.SCREEN$;:\ REMARK IF CODE=0, TERMINATE PROGRAM AND LOAD MENU
PRINT "P/R TRANSACTION FILE MAINTENANCE LOADING MENU":\
CHAIN "P/R000"
OPERATION.CODE=X0
IF OPERATION.CODE=2 THEN GOTO 6300
6100 X1=275:X2=4:X3=0:X4=9999:GOSUB 345 REMARK ENTER START TRANSACTION REFERENCE NUMBER
B=X0
IF B=0 THEN 6020 REMARK IF ZERO WAS ENTERED, PROMPT FOR OPERATION CODE
X1=286:X2=4:X3=B:X4=9999:GOSUB 345 REMARK ENTER END TRANSACTION NUMBER
E=X0
X2=1:X3=0:X4=1:X2$="ENTRY CORRECT":GOSUB 665 REMARK VERIFY ENTRY
IF X0 <> 1 THEN 6100
CLOSE Y4
OPEN "P/R0F040.DAT" RECL 42 AS Y4
Z=0:S2=0:R1=0:P=0 REMARK SET EMPLOYEE VARIABLE, EOF FLAG AND PAGE COUNT
LINE.COUNT%=60
LPRINTER REMARK SET PRINTER AS OUTPUT DEVICE
X4$="PAYROLL TRANSACTION REPORT"
FIRST.EMPL=1
6120 X0=B REMARK READ TRANSACTION RECORD FROM FILE
GOSUB 780
IF R1=99 OR B>E THEN Z=9000000000:GOTO 6145 REMARK PRINT LAST EMPLOYEE TOTALS
IF T2(1)=S2 THEN 6170 REMARK PRINT DETAIL IF EMPLOYEE HAS NOT CHANGED
IF FIRST.EMPL=1 THEN FIRST.EMPL=0:GOTO 6167 REMARK IF FIRST RECORD, DON'T BREAK FOR TOTALS
IF S1=0 THEN 6155 REMARK DON'T BREAK FOR TOTALS IF ONLY ONE TRANSACTION\
EXISTS FOR THIS EMPLOYEE
6145 GOSUB 825 REMARK CHECK FOR END OF REPORT PAGE
PRINT TAB(20);:PRINT USING MASK4.2$;S1 REMARK PRINT EMPLOYEE TOTAL
LINE.COUNT%=LINE.COUNT%+1
6155 PRINT REMARK SPACE ONE LINE AND SET EMPLOYEE TOTAL TO ZERO
LINE.COUNT%=LINE.COUNT%+1
S1=0
IF Z=9000000000 THEN 6020 REMARK IF END OF RANGE, PROMPT FOR OPERATION CODE
6167 S2=T2(1)
6170 LINE.COUNT%=LINE.COUNT%+1
GOSUB 825 REMARK CHECK FOR END OF PAGE
S1=S1+T2(7) REMARK ACCUMULATE HOURS FOR THIS EMPLOYEE'S TRANSACTIONS
PRINT USING MASKD$;B,T2(1),T2(2),T2(3); REMARK PRINT EMPLOYEE NUMBER,DAY NUMBER AND PAY TYPE
IF T2(7)>0 THEN PRINT " ";:PRINT USING MASK2.2$;T2(7); REMARK PRINT HOURS IF GREATER THAN ZERO
PRINT TAB(29);
IF T2(4)>0 THEN PRINT T2(4); REMARK PRINT WORK TYPE IF GREATER THAN ZERO
PRINT TAB(33);
IF T2(6)>0 THEN PRINT USING MASK6$;T2(6); REMARK PRINT JOB NUMBER " "" "" "" ""
PRINT TAB(45);
IF T2(5)>0 THEN PRINT USING "##";T2(5); REMARK PRINT DEPARTMENT " "" "" "" ""
PRINT TAB(49);
IF T2(8)>0 THEN PRINT USING MASK4.2$;T2(8); REMARK PRINT TRANS. AMT " "" "" "" ""
PRINT
B=B+1 REMARK INCREMENT RECORD POINTER AND GET NEXT RECORD
GOTO 6120
6300 X1=275:X2=4:X3=0:X4=9999:GOSUB 345 REMARK ENTER REFERENCE NUMBER FOR TRANSACTION TO CHANGE
R1=0
IF X0>0 THEN 6310
X2=3:X3=0:X4=999:X2$="ENTER EMPLOYEE NUMBER":GOSUB 665 REMARK IF ZERO WAS ENTERED, SEARCH FOR TRANSACTION RECORD\
BASED ON EMPLOYEE NUMBER
IF X0=0 THEN 6020 REMARK IF EMPLOYEE NUMBER=0, PROMPT FOR OPERATION CODE
X=X0
X0=0
T2(1)=0
WHILE X > T2(1) REMARK SCAN THE FILE UNTIL KEY IS MATCHED OR SURPASSED
X0=X0+1
GOSUB 780
IF R1=99 THEN T2(1)=9999
WEND
IF T2(1)=X THEN B=X0:GOTO 6315\ REMARK IF A MATCH WAS FOUND, RETURN;OTHERWISE,
ELSE\ REMARK FLASH ERROR BULLETIN AND REQUEST OPERATION CODE
X2$="NOT ON FILE":GOSUB 615:GOTO 6020
6310 B=X0
E=0
GOSUB 780
6315 IF R1=99 THEN 6020
GOSUB 7000 REMARK DISPLAY TRANSACTION DATA ON CRT
6320 X2=2:X3=-1:X4=6
X2$="ENTER FIELD TO CHANGE (0=NONE; -1=CHANGE OPERATION)" REMARK REQUEST FIELD TO CHANGE FOR THIS TRANSACTION
GOSUB 665
IF X0=0 THEN X0=B:GOSUB 800:GOTO 6330 REMARK IF NO CHANGES, SAVE RECORD & GET NEXT TRANSACTION
F=X0
IF F=-1 THEN 6020 REMARK IF -1 ENTERED, REQUEST NEW OPERATION CODE
ON F GOSUB 5300,5350,5400,5450,5500,5550 REMARK CHANGE RECORD BASED ON FIELD NUMBER ENTERED
GOTO 6320
6330 B=B+1:X0=B REMARK LOCATE NEXT TRANSACTION IN FILE...
GOSUB 780
IF R1<>99 THEN GOSUB 7000:GOTO 6320\ REMARK DISPLAY IT IF FOUND;IF NOT, PROMPT OPERATOR
ELSE\ REMARK FOR ANOTHER TRANSACTION REFERENCE NUMBER
GOTO 6300
7000 X1=274:GOSUB 210 REMARK DISPLAY CURRENT TRANSACTION DATA ON CRT
PRINT USING MASKC$;B REMARK DISPLAY TRANSACTION REFERENCE NUMBER
PRINT
X1=14:GOSUB 215
PRINT USING MASK6$;T2(1) REMARK DISPLAY EMPLOYEE NUMBER
X1=16:GOSUB 215
PRINT USING MASKB$;T2(2) REMARK DISPLAY DAY NUMBER
X1=16:GOSUB 215
PRINT USING MASKA$;T2(3),P$(T2(3)+1) REMARK DISPLAY PAY TYPE AND CORRESPONDING DESCRIPTION
X1=16:GOSUB 215
PRINT USING MASKA$;T2(4),W$(T2(4)+1) REMARK DISPLAY WORK TYPE AND CORRESPONDING DESCRIPTION
X1=14
GOSUB 215
PRINT USING MASK6$;T2(6) REMARK DISPLAY JOB NUMBER
X1=14:GOSUB 215
PRINT USING MASK6$;T2(5) REMARK DISPLAY DEPARTMENT NUMBER
X1=15:GOSUB 215
PRINT USING MASK2.2$;T2(7) REMARK DISPLAY HOURS
X1=13:GOSUB 215
PRINT USING MASK4.2$;T2(8) REMARK DISPLAY TRANSACTION AMOUNT
RETURN