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 >
BASIC Source File  |  1984-04-29  |  8KB  |  260 lines

  1.     REMARK    *********************************************\
  2.         *  P/R06B.BAS  TRANSACTION FILE MAINTENANCE *\
  3.         *     5/16/79            11:00 AM    *\
  4.         *********************************************
  5.  
  6.     DIM P$(7),W$(5),T2(8),G3(5),G2$(5)
  7. %INCLUDE PRNMASK
  8. %INCLUDE CURSOR
  9.  
  10.     GOTO 6000
  11.  
  12. %INCLUDE SUBS1
  13. %INCLUDE GENINFO
  14. 780    IF END #Y4 THEN 795
  15.     READ #Y4,X0;T2(1),T2(2),T2(3),T2(4),T2(5),T2(6),T2(7),T2(8)    REMARK  READ TRANSACTION RECORD
  16.     RETURN
  17. 795    R1=99:RETURN
  18.  
  19. 800    PRINT #Y4,X0;T2(1),T2(2),T2(3),T2(4),T2(5),T2(6),T2(7),T2(8)    REMARK  WRITE TRANSACTION RECORD
  20.     RETURN
  21.  
  22.                                     REMARK  *****  LINE PRINTER ROUTINE  *****
  23.  
  24.  
  25.  
  26. 825    A1=59                                REMARK  SET CARRIAGE WIDTH
  27.     IF LINE.COUNT% < 55 THEN RETURN                    REMARK  IF SPACE REMAINS ON REPORT PAGE, RETURN
  28.     PRINT CHR$(12);
  29.     P=P+1
  30.     PRINT
  31.     PRINT TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE ";
  32.     X0=G3(1):GOSUB 680.5                        REMARK  PRINT TODAY'S DATE
  33.     PRINT
  34.     PRINT TAB((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE ";P
  35.     PRINT TAB((A1-6)/2);"DAY";G3(5)
  36.     PRINT
  37.     PRINT " LOC.  EMP.  DAY  PT  HOURS  WT  JOB NO.  DEPT   AMOUNT"
  38.     PRINT
  39.     LINE.COUNT%=6                            REMARK  RESET LINE COUNTER FOR NEW PAGE
  40.     RETURN
  41.  
  42.  
  43. 5300    X1=530:X2=1:X3=0:X4=6:GOSUB 345                    REMARK  CHANGE PAY TYPE
  44.     T2(3)=X0
  45.     X1=530:GOSUB 210
  46.     PRINT USING "#  /123456789012/";T2(3),P$(T2(3)+1)        REMARK  DISPLAY PAY TYPE AND CORRESPONDING DESCRIPTION
  47.     RETURN
  48.  
  49.  
  50. 5350    X1=594:X2=1:X3=0:X4=4:GOSUB 345                    REMARK  CHANGE WORK TYPE
  51.     T2(4)=X0
  52.     X1=594:GOSUB 210
  53.     PRINT USING "#  /123456789012/";T2(4),W$(T2(4)+1)        REMARK  DISPLAY WORK TYPE AND CORRESPONDING DESCRIPTION
  54.     RETURN
  55.  
  56.  
  57. 5400    X1=653:X2=6:X3=0:X4=999999:GOSUB 345                REMARK  CHANGE JOB NUMBER
  58.     T2(6)=X0
  59.     RETURN
  60.  
  61.  
  62.  
  63. 5450    X1=721:X2=2:X3=0:X4=99                        REMARK  CHANGE DEPARTMENT NUMBER
  64.     GOSUB 345
  65.     T2(5)=X0
  66.     RETURN
  67.  
  68.  
  69. 5500    X1=782:X2=5:X3=0:X4=99.99:GOSUB 345                REMARK  CHANGE HOURS
  70.     T2(7)=X0
  71.     RETURN
  72.  
  73.  
  74. 5550    X1=844:X2=7:X3=0:X4=9999.99:GOSUB 345                REMARK  CHANGE AMOUNT
  75.     T2(8)=X0
  76.     RETURN
  77.  
  78.  
  79.  
  80. 6000    MASKA$="   # /13456789012/"                    REMARK  SET UP PRINT MASKS
  81.     MASKB$="#### /134567890123456789012/"
  82.     MASKC$="  ## /13456789012345678901234 /"
  83.     MASKD$="####  ####   ##   #"
  84.  
  85. %INCLUDE PRNMASK
  86.  
  87.     Y4=1:Y9=2
  88.     OPEN "P/R0F040.DAT" RECL 42 AS 1                REMARK  OPEN PAYROLL TRANSACTION FILE
  89.     OPEN "G/I0F010.DAT" RECL 200 AS Y9:GOSUB 700            REMARK  OPEN AND LOAD GENERAL INFORMATION FILE
  90.     OPEN "CRT" RECL 1100 AS 19
  91.  
  92.     P$(1)="SALARY"                            REMARK  SET UP PAY TYPE DESCRIPTIONS
  93.     P$(2)="HOURLY"
  94.     P$(3)="VACATION"
  95.     P$(4)="HOLIDAY"
  96.     P$(5)="PIECE WORK"
  97.     P$(6)="OVERTIME"
  98.     P$(7)="COMP TIME"
  99.  
  100.     W$(1)="N/A"                            REMARK  SET UP WORK TYPE DESCRIPTIONS
  101.     W$(2)="PHASE 1"
  102.     W$(3)="PHASE II"
  103.     W$(4)="NO JOB NO."
  104.     W$(5)="JOB NO."
  105.  
  106.     X0=6:GOSUB 260                            REMARK  LOAD TRANSACTION F/M CRT MASK
  107.  
  108. 6020    CONSOLE
  109.     IF B>0 THEN GOSUB 265
  110.     X2=1:X3=0:X4=2
  111.     X2$="ENTER OPERATION (1=PRINT; 2=CHANGE OR DELETE; 0=END)"    REMARK  ENTER OPERATION CODE
  112.     GOSUB 665
  113.  
  114.     IF X0=0 THEN PRINT CLEAR.SCREEN$;:\                REMARK  IF CODE=0, TERMINATE PROGRAM AND LOAD MENU
  115.     PRINT "P/R TRANSACTION FILE MAINTENANCE LOADING MENU":\
  116.     CHAIN "P/R000"
  117.  
  118.     OPERATION.CODE=X0
  119.     IF OPERATION.CODE=2 THEN GOTO 6300
  120.  
  121.  
  122. 6100    X1=275:X2=4:X3=0:X4=9999:GOSUB 345                REMARK  ENTER START TRANSACTION REFERENCE NUMBER
  123.     B=X0
  124.     IF B=0 THEN 6020                        REMARK  IF ZERO WAS ENTERED, PROMPT FOR OPERATION CODE
  125.  
  126.     X1=286:X2=4:X3=B:X4=9999:GOSUB 345                REMARK  ENTER END TRANSACTION NUMBER
  127.     E=X0
  128.  
  129.     X2=1:X3=0:X4=1:X2$="ENTRY CORRECT":GOSUB 665            REMARK VERIFY ENTRY
  130.     IF X0 <> 1 THEN 6100
  131.     CLOSE Y4
  132.     OPEN "P/R0F040.DAT" RECL 42 AS Y4
  133.     Z=0:S2=0:R1=0:P=0                        REMARK  SET EMPLOYEE VARIABLE, EOF FLAG AND PAGE COUNT
  134.  
  135.     LINE.COUNT%=60
  136.     LPRINTER                            REMARK  SET PRINTER AS OUTPUT DEVICE
  137.     X4$="PAYROLL TRANSACTION REPORT"
  138.     FIRST.EMPL=1
  139.  
  140. 6120    X0=B                                REMARK  READ TRANSACTION RECORD FROM FILE
  141.     GOSUB 780
  142.  
  143.     IF R1=99 OR B>E THEN Z=9000000000:GOTO 6145            REMARK  PRINT LAST EMPLOYEE TOTALS
  144.  
  145.     IF T2(1)=S2 THEN 6170                        REMARK  PRINT DETAIL IF EMPLOYEE HAS NOT CHANGED
  146.  
  147.     IF FIRST.EMPL=1 THEN FIRST.EMPL=0:GOTO 6167            REMARK  IF FIRST RECORD, DON'T BREAK FOR TOTALS
  148.  
  149.     IF S1=0 THEN 6155                        REMARK  DON'T BREAK FOR TOTALS IF ONLY ONE TRANSACTION\
  150.                                             EXISTS FOR THIS EMPLOYEE
  151.  
  152. 6145    GOSUB 825                            REMARK  CHECK FOR END OF REPORT PAGE
  153.     PRINT TAB(20);:PRINT USING MASK4.2$;S1                REMARK  PRINT EMPLOYEE TOTAL 
  154.     LINE.COUNT%=LINE.COUNT%+1
  155.  
  156. 6155    PRINT                                REMARK  SPACE ONE LINE AND SET EMPLOYEE TOTAL TO ZERO
  157.     LINE.COUNT%=LINE.COUNT%+1
  158.     S1=0
  159.  
  160.     IF Z=9000000000 THEN 6020                    REMARK  IF END OF RANGE, PROMPT FOR OPERATION CODE
  161.  
  162. 6167    S2=T2(1)
  163.  
  164. 6170    LINE.COUNT%=LINE.COUNT%+1
  165.     GOSUB 825                            REMARK  CHECK FOR END OF PAGE
  166.  
  167.     S1=S1+T2(7)                            REMARK  ACCUMULATE HOURS FOR THIS EMPLOYEE'S TRANSACTIONS
  168.     PRINT USING MASKD$;B,T2(1),T2(2),T2(3);                REMARK  PRINT EMPLOYEE NUMBER,DAY NUMBER AND PAY TYPE
  169.  
  170.     IF T2(7)>0 THEN PRINT "  ";:PRINT USING MASK2.2$;T2(7);        REMARK  PRINT HOURS IF GREATER THAN ZERO
  171.  
  172.     PRINT TAB(29);
  173.     IF T2(4)>0 THEN PRINT T2(4);                    REMARK  PRINT WORK TYPE IF GREATER THAN ZERO
  174.  
  175.     PRINT TAB(33);
  176.     IF T2(6)>0 THEN PRINT USING MASK6$;T2(6);            REMARK  PRINT JOB NUMBER "  "" ""   ""   ""
  177.  
  178.     PRINT TAB(45);
  179.     IF T2(5)>0 THEN PRINT USING "##";T2(5);                REMARK  PRINT DEPARTMENT "  "" ""   ""   ""
  180.  
  181.     PRINT TAB(49);
  182.     IF T2(8)>0 THEN PRINT USING MASK4.2$;T2(8);            REMARK  PRINT TRANS. AMT "  "" ""   ""   ""
  183.  
  184.     PRINT
  185.     B=B+1                                REMARK  INCREMENT RECORD POINTER AND GET NEXT RECORD
  186.     GOTO 6120
  187.  
  188.  
  189. 6300    X1=275:X2=4:X3=0:X4=9999:GOSUB 345                REMARK  ENTER REFERENCE NUMBER FOR TRANSACTION TO CHANGE
  190.     R1=0
  191.     IF X0>0 THEN 6310
  192.  
  193.     X2=3:X3=0:X4=999:X2$="ENTER EMPLOYEE NUMBER":GOSUB 665        REMARK  IF ZERO WAS ENTERED, SEARCH FOR TRANSACTION RECORD\
  194.                                             BASED ON EMPLOYEE NUMBER
  195.     IF X0=0 THEN 6020                        REMARK  IF EMPLOYEE NUMBER=0, PROMPT FOR OPERATION CODE
  196.     X=X0
  197.     X0=0
  198.     T2(1)=0
  199.     WHILE X > T2(1)                            REMARK  SCAN THE FILE UNTIL KEY IS MATCHED OR SURPASSED
  200.     X0=X0+1
  201.     GOSUB 780
  202.     IF R1=99 THEN T2(1)=9999
  203.     WEND
  204.  
  205.     IF T2(1)=X THEN B=X0:GOTO 6315\                    REMARK  IF A MATCH WAS FOUND, RETURN;OTHERWISE,
  206.     ELSE\                                REMARK  FLASH ERROR BULLETIN AND REQUEST OPERATION CODE
  207.     X2$="NOT ON FILE":GOSUB 615:GOTO 6020
  208.  
  209.  
  210. 6310    B=X0
  211.     E=0
  212.     GOSUB 780
  213. 6315    IF R1=99 THEN 6020
  214.  
  215.     GOSUB 7000                            REMARK  DISPLAY TRANSACTION DATA ON CRT
  216.  
  217. 6320    X2=2:X3=-1:X4=6
  218.     X2$="ENTER FIELD TO CHANGE (0=NONE; -1=CHANGE OPERATION)"    REMARK  REQUEST FIELD TO CHANGE FOR THIS TRANSACTION
  219.     GOSUB 665
  220.  
  221.     IF X0=0 THEN X0=B:GOSUB 800:GOTO 6330                REMARK  IF NO CHANGES, SAVE RECORD & GET NEXT TRANSACTION
  222.     F=X0
  223.     IF F=-1 THEN 6020                        REMARK  IF -1 ENTERED, REQUEST NEW OPERATION CODE
  224.  
  225.     ON F GOSUB 5300,5350,5400,5450,5500,5550            REMARK  CHANGE RECORD BASED ON FIELD NUMBER ENTERED
  226.     GOTO 6320
  227.  
  228. 6330    B=B+1:X0=B                            REMARK  LOCATE NEXT TRANSACTION IN FILE...
  229.     GOSUB 780
  230.  
  231.     IF R1<>99 THEN GOSUB 7000:GOTO 6320\                REMARK  DISPLAY IT IF FOUND;IF NOT, PROMPT OPERATOR
  232.     ELSE\                                REMARK  FOR ANOTHER TRANSACTION REFERENCE NUMBER
  233.     GOTO 6300
  234.  
  235.  
  236. 7000    X1=274:GOSUB 210                        REMARK  DISPLAY CURRENT TRANSACTION DATA ON CRT
  237.  
  238.     PRINT USING MASKC$;B                        REMARK  DISPLAY TRANSACTION REFERENCE NUMBER
  239.     PRINT
  240.     X1=14:GOSUB 215
  241.     PRINT USING MASK6$;T2(1)                    REMARK  DISPLAY EMPLOYEE NUMBER
  242.     X1=16:GOSUB 215
  243.     PRINT USING MASKB$;T2(2)                    REMARK  DISPLAY DAY NUMBER
  244.     X1=16:GOSUB 215
  245.     PRINT USING MASKA$;T2(3),P$(T2(3)+1)                REMARK  DISPLAY PAY TYPE AND CORRESPONDING DESCRIPTION
  246.     X1=16:GOSUB 215
  247.     PRINT USING MASKA$;T2(4),W$(T2(4)+1)                REMARK  DISPLAY WORK TYPE AND CORRESPONDING DESCRIPTION
  248.     X1=14
  249.     GOSUB 215
  250.     PRINT USING MASK6$;T2(6)                    REMARK  DISPLAY JOB NUMBER
  251.     X1=14:GOSUB 215
  252.     PRINT USING MASK6$;T2(5)                    REMARK  DISPLAY DEPARTMENT NUMBER
  253.     X1=15:GOSUB 215
  254.     PRINT USING MASK2.2$;T2(7)                    REMARK  DISPLAY HOURS
  255.     X1=13:GOSUB 215
  256.     PRINT USING MASK4.2$;T2(8)                    REMARK  DISPLAY TRANSACTION AMOUNT
  257.     RETURN
  258.  
  259.  
  260.