home *** CD-ROM | disk | FTP | other *** search
- REMARK **************************************\
- * P/R300.BAS JOB COSTING REPORT *\
- * 5/18/79 10:20 AM *\
- **************************************\
-
- %INCLUDE CURSOR
-
-
- DIM S(1),R1(2),R2(5),G3(5),G2$(5),J(4,14),REPORT.SPEC(6),T2(8)
- DIM W(2),W1(2),W2$(2),W2(14),R$(5),L$(80)
- DIM L$(80)
- DEF FNR(X9)=INT(X9*100+.5)/100 REMARK ROUNDING FUNCTION
- DEF FNEXACT(M1,M2)=M1*1000+M2 REMARK KEY LOCATOR FUNCTION
- GOTO 6000
-
-
- %INCLUDE SUBS1
- %INCLUDE GENINFO
-
- 745 Q$=" " REMARK READ ONLY A PORTION OF THE EMPLOYEE MASTER RECORD
- R$(1)="NOT ON FILE"
- IF X0 = 0 OR X0 > MSTR.RECORDS THEN Q$="N":RETURN
- READ #1,X0;R$(1),R$(2),R$(3),R$(4),R$(5),R1(1),R1(2),\
- R2(1),R2(2),R2(3),R2(4),R2(5),S(1)
-
- IF S(1)=0 THEN R$(1)="NOT ON FILE":Q$="N":RETURN
- RETURN
-
-
- 825 A1=115 REMARK **** LINE PRINTER ROUTINE ****
- IF LINE.COUNT% < 56 THEN RETURN REMARK IF SPACE REMAINS ON REPORT PAGE, RETURN
- P=P+1
- PRINT CHR$(12);TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE "; REMARK SKIP TO TOP OF FORM AND PRINT DATE
- X0=G3(1):GOSUB 680.5
- PRINT
- PRINT TAB((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE";P REMARK PRINT REPORT TITLE AND PAGE NUMBER
- PRINT
- LINE.COUNT%=4 REMARK RESET LINE COUNTER FOR NEW REPORT PAGE
-
- IF P=1 THEN RETURN REMARK PRINT CURRENT JOB HEADER DATA FROM PREVIOUS PAGE
-
- 836 PRINT "JOB "; REMARK PRINT JOB HEADER DATA ON PRINTER
- PRINT USING "######";W(1);
- PRINT " ";W1$;TAB(70);"STARTED ";
- X0=W1(1):GOSUB 680.5
-
- IF W2$(1)<>"0" THEN PRINT " COMPLETED "; \
- ELSE PRINT " DUE DATE ";
- X0=W1(2):GOSUB 680.5 REMARK PRINT JOB COMPLETION OR DUE DATE
- PRINT " TYPE ";W2$(2);
-
- IF W2$(1)<>"0" THEN GOTO 840
-
- X0=INT(W1(2)/100)*100 REMARK COMPARE REPORT DATE AND DUE DATE; PRINT 'OVERDUE'\
- IF DUE DATE <= REPORT DATE
- X0=(W1(2)-X0)*10000+(X0/100)
- X1=INT(G3(1)/100)*100
- X1=(G3(1)-X1)*10000+(X1/100)
- IF X0 <= X1 THEN PRINT TAB(120);"**OVERDUE**";
-
-
- 840 PRINT
- PRINT
- PRINT " EMPLOYEE NAME";TAB(46);"HOURS COST-1 COST-2";
- PRINT " P/R OHD GEN OHD PRS OHD OTH OHD TOT OHD COST"
- LINE.COUNT%=LINE.COUNT%+3
-
-
- RETURN
-
-
- %INCLUDE JOBFILE
- %INCLUDE PR-SEARC
-
-
- 4100 REMARK ****************************************\
- * PRINT A LINE OF THE COSTING REPORT *\
- * BASED ON REPORT.SPEC AND LEVEL% *\
- ****************************************
-
- PRINT TAB(13);X0$; REMARK PRINT EMPLOYEE NAME OR TOTAL TYPE
-
- IF REPORT.SPEC(4)=1\ REMARK PRINT MONTH-TO-DATE TOTALS IF REQUESTED
- THEN\
- Z=J(LEVEL%,4)+J(LEVEL%,5)+J(LEVEL%,6)+J(LEVEL%,7):\
- PRINT TAB(38);"MTD";:\
- PRINT USING MASKA$;J(LEVEL%,1),J(LEVEL%,2),J(LEVEL%,3),\
- J(LEVEL%,4),J(LEVEL%,5),J(LEVEL%,6),J(LEVEL%,7),Z,Z+J(LEVEL%,3):\
- LINE.COUNT%=LINE.COUNT%+1
-
- IF REPORT.SPEC(5)=1\ REMARK PRINT JOB-TO-DATE TOTALS IF REQUESTED
- THEN\
- Z=J(LEVEL%,11)+J(LEVEL%,12)+J(LEVEL%,13)+J(LEVEL%,14):\
- PRINT TAB(38);"JTD";:\
- PRINT USING MASKA$;J(LEVEL%,8),J(LEVEL%,9),J(LEVEL%,10),\
- J(LEVEL%,11),J(LEVEL%,12),J(LEVEL%,13),J(LEVEL%,14),\
- Z,Z+J(LEVEL%,10):\
- LINE.COUNT%=LINE.COUNT%+1
-
- PRINT
- LINE.COUNT%=LINE.COUNT%+1
- IF LEVEL%=4 THEN RETURN REMARK AVOID ACCUMULATION IF GRAND TOTALS WERE PRINTED
-
- FOR I1%=1TO 14 REMARK ACCUMULATE THIS LINE TO NEXT TOTAL LEVEL
- J(LEVEL%+1,I1%)=J(LEVEL%+1,I1%)+J(LEVEL%,I1%)
- J(LEVEL%,I1%)=0 REMARK INITIALIZE CURRENT TOTAL LEVEL
- NEXT I1%
- RETURN
-
- 5300 C=W(1)
- IF W(2)>0 THEN W1$="NO HEADER RECORD"
- IF W2$(1)="D" THEN DELETE.FLAG%=1:GOTO 5390 REMARK IGNORE LOGICALLY DELETED JOB RECORDS
- GOSUB 825 REMARK CHECK FOR END OF PAGE
-
- IF LINE.COUNT%<>7 THEN GOSUB 836 REMARK PRINT JOB HEADER DATA IF NOT ALREADY PRINTED
-
- 5310 IF REPORT.SPEC(6)=0 THEN GOTO 5313 REMARK DELETE CANCELLED JOBS IF REQUESTED
- IF W2$(1)<>"9" THEN GOTO 5313
- IF W(2)>0 THEN W2(3)=-1:X0=INPUT%:GOSUB 1110:W2(3)=0 REMARK SAVE DELETED DETAIL RECORD
- IF W(2)=0 THEN W2$(1)="D":X0=INPUT%:GOSUB 1110:W2$(1)="9" REMARK SAVE DELETED HEADER RECORD
- IF F <= 0 THEN PRINT " ***** DELETED ***** "
- LINE.COUNT%=LINE.COUNT%+1
-
- 5313 F=1
- INPUT%=INPUT%+1
- IF INPUT% > JOB.RECORDS THEN W(1)=10000000:GOTO 5380
- X0=INPUT%
- GOSUB 1100 REMARK READ JOB RECORD
- IF W2(3)=-1 THEN GOTO 5313
- IF C=W(1)\
- THEN\
- X0=W(2):GOSUB 745:\ REMARK GET EMPLOYEE RECORD
- GOSUB 825:\
- PRINT TAB(6);:\
- PRINT USING MASKB$;W(2);:\ REMARK PRINT EMPLOYEE NUMBER ON REPORT PAGE
- FOR I1%=1 TO 14:\ REMARK PLACE DETAIL RECORD FIELDS INTO LEVEL-1 TOTALS
- J(1,I1%)=W2(I1%):\
- NEXT I1%:\
- LEVEL%=1:X0$=R$(1):GOSUB 4100:\ REMARK PRINT REMAINDER OF JOB DETAIL AND ACCUMULATE
- GOTO 5310
-
-
- 5380 F=0
- IF INT(C/10)<>INT(W(1)/10) THEN 5405 REMARK IF THE NEW JOB NUMBER'S ROOT HAS CHANGED,\
- PRINT TASK TOTALS, THEN PRINT JOB TOTALS
-
- 5385 IF W2$(1)="0"\ REMARK FORCE PRINTING OF ACTIVE JOBS, OR ALL JOBS
- OR REPORT.SPEC(6)=1 THEN GOTO 5395
- IF REPORT.SPEC(3)=0 AND W2$(1) <> "D" THEN GOTO 5395
-
- 5390 INPUT%=INPUT%+1 REMARK SEARCH FOR A JOB THAT IS PRINTABLE
- IF INPUT%>JOB.RECORDS THEN W(1)=10000000:GOTO 5405
- X0=INPUT%
- GOSUB 1100 REMARK GET NEXT DETAIL RECORD
- IF C<>W(1) THEN GOTO 5380 ELSE GOTO 5390
-
-
- 5395 IF DELETE.FLAG%=1 THEN DELETE.FLAG%=0:GOTO 5300 REMARK DO NOT PRINT TASK TOTALS FOR DELETED JOBS
- TASK.TOTALS%=1
-
- LEVEL%=2:X0$="TASK TOTALS":GOSUB 4100 REMARK PRINT TASK TOTALS AND START PRINTING A NEW TASK
-
- IF W(2) > 0 THEN INPUT%=INPUT%-1
- GOTO 5300
-
- 5405 IF W(2) > 0 THEN INPUT%=INPUT%-1 REMARK IF NEW JOB RECORD HAS NO HEADER, SUBTRACT POINTER
-
- IF DELETE.FLAG%=1 THEN GOTO 5415
-
- IF TASK.TOTALS%=0\ REMARK IF TASK TOTALS FLAG NOT SET, ACCUMULATE TO JOB TOTALS
- THEN\
- FOR I1%=1 TO 14:\
- J(3,I1%)=J(2,I1%):\
- J(2,I1%)=0:\
- NEXT I1%\
- ELSE\
- LEVEL%=2:X0$="TASK TOTALS":GOSUB 4100
-
- 5415 IF DELETE.FLAG%=1 AND TASK.TOTALS%=1\ REMARK IF LAST TASK WAS DELETED, GO ON TO PRINT JOB TOTALS
- THEN\
- DELETE.FLAG%=0
-
- IF DELETE.FLAG%=1 THEN DELETE.FLAG%=0:RETURN REMARK IF DELETE FLAG WAS SET, RETURN WITHOUT JOB TOTALS
-
-
- TASK.TOTALS%=0 REMARK PRINT JOB TOTALS
-
- LEVEL%=3:X0$="JOB TOTALS":GOSUB 4100
- X0$="----"
- FOR X%=1 TO 4:X0$=X0$+X0$:NEXT X%
- PRINT X0$;X0$ REMARK PRINT A FULL LINE OF DASHES TO SEPARATE JOBS
- LINE.COUNT%=LINE.COUNT%+1
- RETURN
-
-
- 6000 FOR I%=1 TO 9:MASKA$=MASKA$+" ######.##":NEXT I% REMARK SET UP PRINT MASKS
- MASKB$="######"
- Y6=2
- Y9=3
- CTRL.C%=1 REMARK ENABLE A CTRL-C PROGRAM EXIT
-
- OPEN "P/R0F110.DAT" RECL 1150 AS 1 REMARK OPEN FILES
- OPEN "JOB0F100.DAT" RECL 160 AS Y6
- OPEN "G/I0F010.DAT" RECL 200 AS Y9
- OPEN "CRT" RECL 1100 AS 19
-
- GOSUB 700 REMARK LOAD SYSTEM GENERAL INFORMATION
-
- RECORD.COUNT=JOB.RECORDS
- Y2=Y6
-
- 6015 LINE.COUNT%=60
- X0=14:GOSUB 260 REMARK LOAD COSTING REPORT CRT MASK
- DIM REPORT.SPEC(6),J(4,14)
- 6020 X1=266:X2=6:X3=0:X4=999999:GOSUB 345 REMARK ENTER FIRST JOB TO PRINT
- IF X%=3 THEN GOTO 6400
- IF X0=0 THEN 6060
- REPORT.SPEC(1)=X0
-
- X1=281:X2=6:X3=0:X4=999999:GOSUB 345 REMARK ENTER LAST JOB TO PRINT
- IF X0=0 THEN 6020
- REPORT.SPEC(2)=X0
-
- 6030 X1=302:X2=1:X3=0:X4=1:GOSUB 345 REMARK INPUT WHETHER TO PRINT ACTIVE JOBS ONLY
- REPORT.SPEC(3)=X0
- X1=309:X2=1:X3=0:X4=1:GOSUB 345 REMARK INPUT WHETHER TO PRINT M-T-D FIELDS
- REPORT.SPEC(4)=X0
-
- X1=316:X2=1:X3=0:X4=1:GOSUB 345 REMARK INPUT WHETHER TO PRINT J-T-D FIELDS
- REPORT.SPEC(5)=X0
-
- 6043 X0$="A" REMARK INPUT JOB TYPE TO PRINT--"A"=ALL
- X1=334:X2=1:X3=0:X4=0:GOSUB 345
- IF X0$ = "A" THEN GOTO 6045
- IF X0$<"0" OR X0$ > "9" THEN GOTO 6043
-
- 6045 JOB.TYPE$=X0$
- X1=352:X2=1:X3=0:X4=1:GOSUB 345 REMARK INPUT WHETHER TO DELETE CANCELLED JOBS
- REPORT.SPEC(6)=X0
-
- 6050 X2=1:X3=0:X4=1:X2$="ENTRY CORRECT?":GOSUB 665 REMARK VERIFY ENTRY:'1'=O.K.; '0'=RETRY
- IF X0<>1 THEN 6015
- GOTO 6100 REMARK BRANCH TO PRINT REPORT
-
-
- 6060 FOR I1%=1 TO 9
- FOR I%=1 TO 8
- 6065 X1=64*I1%+7*I%+384:X2=6:X3=0:X4=999999:GOSUB 345 REMARK ENTER JOB NUMBERS INTO GRID (80 MAXIMUM)
- IF X0=0 THEN I1%=9:I%=8:GOTO 6070 REMARK GRID ENTRY IS TERMINATED BY JOB NUMBER=0
-
- L$(I%+8*(I1%-1))=X0$
-
- 6070 NEXT I%
- NEXT I1%
-
- 6075 X2=2:X3=0:X4=10:X2$="ENTER ROW TO CHANGE (0=NONE)" REMARK PROMPT OPERATOR FOR CHANGES TO GRID
- GOSUB 665
- IF X0=0 THEN 6030 REMARK IF ROW TO CHANGE=0, NO MORE CHANGES ARE NEEDED
- I1%=X0
- X2=1:X3=1:X4=8:X2$="ENTER COLUMN TO CHANGE":GOSUB 665
- I%=X0
- X1=64*I1%+7*I%+384:X2=6:X3=0:X4=999999:GOSUB 345 REMARK ENTER AMENDED JOB NUMBER
- L$(I%+8*(I1%-1))=X0$
- GOTO 6075
-
- 6100 LPRINTER REMARK SELECT PRINTER AS OUTPUT DEVICE
- X4$="JOB COSTING"
- GOSUB 825 REMARK PRINT HEADINGS FOR FIRST PAGE
-
- REPORT.SPEC(4)=REPORT.SPEC(4) OR REPORT.SPEC(6) REMARK ENABLE MTD AND JTD PRINT IF DELETE OPTION SELECTED
- REPORT.SPEC(5)=REPORT.SPEC(5) OR REPORT.SPEC(6)
-
-
- 6105 IF REPORT.SPEC(1)=0 THEN 6130 REMARK IF START JOB=0, PROCESS JOB FILE VIA GRID ENTRIES
-
- K1=FNEXACT(REPORT.SPEC(1),0) REMARK LOCATE START JOB ON FILE
- GOSUB 1060
- INPUT%=L
- X0=INPUT%
- GOSUB 1100
- 6120 IF W(1)>REPORT.SPEC(2) THEN 6200 REMARK IF JOB NUMBER IS BEYOND RANGE SPECIFIED, EXIT
-
- IF W(1)=10000000 THEN 6200 REMARK IF END OF FILE ENCOUNTERED, EXIT
-
- IF W2$(1)="D" THEN GOTO 6125
- IF JOB.TYPE$<> "A" AND W2$(2)<>JOB.TYPE$ THEN GOTO 6125
-
- 6123 IF REPORT.SPEC(3)=0\ REMARK DETERMINE WHETHER TO PRINT THIS JOB
- OR W2$(1)<"1"\
- OR REPORT.SPEC(6)=1\
- THEN\
- GOSUB 5300:GOTO 6120
-
- 6125 VAR1=W(1) REMARK LOOK FOR NEXT JOB IF THIS THIS IS NOT TO BE PRINTED
- INPUT%=INPUT%+1
- X0=INPUT%
- GOSUB 1100
- IF VAR1=W(1) THEN GOTO 6125\
- ELSE\
- GOTO 6120
-
-
- 6130 FOR I%=1TO 80 REMARK PRINT REPORT USING JOB ENTRY GRID
- 6135 JOB.NO=VAL(L$(I%))
- IF JOB.NO=0 THEN 6155
- K=FNEXACT(JOB.NO,0)
- GOSUB 1060 REMARK SEARCH FILE FOR A MATCH FROM JOB GRID
-
- IF H=-1 THEN 6155 REMARK IF NOT FOUND, GET THE NEXT JOB ON THE GRID
- INPUT%=L REMARK READ HEADER RECORD
- X0=INPUT%
- GOSUB 1100
- IF W2$(1)="D" THEN 6155
-
- W(2)=0 REMARK SET EMPLOYEE NUMBER IN ORDER TO PRINT HEADER
-
- GOSUB 5300
- 6155 NEXT I%
-
-
- 6200 LEVEL%=4:X0$="GRAND TOTALS":GOSUB 4100 REMARK PRINT REPORT GRAND TOTALS
- GOTO 6015
-
-
- 6400 CONSOLE REMARK DISPLAY EXIT MESSAGE AND LOAD THE MENU
- PRINT CLEAR.SCREEN$;"JOB COSTING REPORT LOADING MENU"
- CHAIN "P/R000"
-