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_R050.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  10KB  |  367 lines

  1.     REMARK    *******************************************\
  2.         *  P/R050.BAS  PAYROLL TRANSACTION ENTRY  *\
  3.         *  5/16/79                     5:45 PM    *\
  4.         *******************************************
  5.  
  6. %INCLUDE CURSOR
  7.  
  8.     DIM S(1),T2(8),W$(5),P$(7),R$(5),R2(5),G3(5),G2$(5)
  9.  
  10.     DEF FNR(Z1)=INT(Z1*100+.5)/100                    REMARK  ROUNDING FUNCTION
  11.     DEF FNEXACT(X0,X1)=X0*100+X1                    REMARK  KEY LOCATOR FUNCTION
  12. %INCLUDE PRNMASK
  13.      GOTO 6000
  14.  
  15. %INCLUDE SUBS1
  16. %INCLUDE GENINFO
  17.  
  18. 1020    A4=X1                                REMARK  ENTER AND REDISPLAY JOB NUMBER ON CRT
  19.     X2=6
  20.     X3=0
  21.     X4=999999
  22.     GOSUB 345
  23.     GOSUB 210
  24.     PRINT USING MASK6$;X0
  25.     RETURN 
  26.  
  27. 1040    K=FNEXACT(T2(6),0)
  28.     Y2=4
  29.     RECORD.COUNT=JOB.RECORDS
  30. %INCLUDE PR-SEARCH
  31.  
  32. 5300    IF T2(4)=3 OR T2(4)=0 THEN 5600                    REMARK  REJECT ENTRY IF PROHIBITED BY WORK TYPE
  33.     X1=586
  34.     GOSUB 1020                            REMARK  ENTER JOB NUMBER
  35.     IF X0=0 THEN RETURN
  36.     T2(6)=X0
  37.     K$=STR$(T2(6))
  38.     GOSUB 1040                            REMARK  REMARK LOCATE JOB HEADER
  39.     IF H = -1 THEN X2$="NOT ON FILE":GOSUB 615            REMARK  WARN IF JOB HEADER NOT ON FILE
  40.     RETURN
  41.  
  42.  
  43. 5350    IF T2(4)<>2 THEN 5600                        REMARK  ENTER DEPARTMENT NUMBER IF WORK TYPE CODE=2
  44.     X1=654
  45.     X2=2
  46.     X3=0
  47.     X4=10
  48.     GOSUB 345 
  49.     T2(5)=X0
  50.     RETURN 
  51.  
  52.  
  53. 5400    IF T2(3)=0 THEN GOTO 5600                    REMARK  IF PAY TYPES ARE INCONSISTENT, REJECT ENTRY
  54.     IF T2(3)=2 AND R2(1)=1 THEN GOTO 5600
  55. 5405    X1=715:X2=5:X3=0:X4=99.99:GOSUB 345                REMARK  ENTER HOURS
  56.     HOURS=HOURS+X0-T2(7)
  57.     T2(7)=X0
  58. 5408    X1=737
  59.     GOSUB 210
  60.     PRINT USING MASK2.2$;HOURS                    REMARK  DISPLAY TOTAL HOURS ENTERED SO FAR FOR EMPLOYEE
  61.     RETURN 
  62.  
  63.  
  64. 5450    IF T2(3)<> 4 THEN 5600                        REMARK  ENTER QUANTITY FOR PIECEWORK TRANSACTIONS
  65.     X1=778:X2=6:X3=1:X4=999999:GOSUB 345
  66.     N=X0
  67. 5460    T2(8)=FNR(N*N1)                            REMARK  CALCULATE AND DISPLAY PIECEWORK AMOUNT
  68.     X1=905
  69.     GOSUB 210
  70.     PRINT USING MASK4.2$;T2(8)
  71.     RETURN
  72.  
  73.  
  74. 5500    IF T2(3)=4\                            REMARK  IF PAY TYPE=4, THEN ENTER PIESEWORK RATE
  75.     THEN\
  76.     X1=841:X2=7:X3=0:X4=9999.99:GOSUB 345:\    
  77.     N1=X0:\
  78.     GOTO 5460\                            REMARK  RE-DISPLAY PIECEWORK AMOUNT
  79.     ELSE GOTO 5600
  80.  
  81.  
  82. 5550    IF R2(1)<>1 OR T2(3)<>2 THEN GOTO 5600                REMARK  ENTER VACATION PAY AMOUNT FOR HOURLY EMPLOYEES
  83.     X1=905:X2=7:X3=0:X4=9999.99:GOSUB 345
  84.     T2(8)=X0
  85.     RETURN 
  86.  
  87.  
  88. 5600    X2$="OUT OF RANGE"                        REMARK  DISPLAY ERROR BULLETIN ON CRT
  89.     GOSUB 615
  90.     RETURN 
  91.  
  92.  
  93. 5650    X1=524                                REMARK  CLEAR TRANSACTION DATA FROM SCREEN FOR NEXT ENTRY
  94.     GOSUB 210
  95.     PRINT TAB(20)
  96.     FOR I%=1TO 6
  97.     X1=10
  98.     GOSUB 215
  99.     PRINT "        "
  100.     NEXT I%
  101.     RETURN 
  102.  
  103.  
  104. 5700    X2$="INCONSISTENT"                        REMARK  FLASH THIS ERROR MESSAGE WHEN TYPE CODES DO NOT\
  105.                                             AGREE WITH EMPLOYEE RECORD OR DATA ENTERED
  106.     GOSUB 615
  107.     RETURN 
  108.  
  109.  
  110. 5750    IF X0=0\
  111.     THEN\
  112.     PRINT #Y4,TRANSACTION.COUNT%+1;\                REMARK  SAVE TRANSACTION RECORD ON DISK IF X0 IS ZERO
  113.     T2(1),G3(5),T2(3),T2(4),T2(5),T2(6),T2(7),T2(8):\
  114.     TRANSACTION.COUNT%=TRANSACTION.COUNT%+1:\
  115.     CLOSE Y4:\
  116.     OPEN "P/R0F040.DAT" RECL 42 AS Y4:\
  117.     X1=524:\
  118.     GOSUB 210:\
  119.     PRINT "***RECORDED***":\
  120.     FOR I=1 TO 60:\
  121.     NEXT I:\
  122.     GOTO 5760
  123.  
  124. 5755    X2$="CANCEL"                            REMARK  IF CODE ENTERED=99, THEN CANCEL TRANSACTION
  125.     X9=99
  126.     GOSUB 615
  127.     IF T2(7)=0 THEN 5760
  128.     HOURS=HOURS-T2(7)
  129.     GOSUB 5408
  130.  
  131.  
  132. 5760    FOR I%=5 TO 8                            REMARK  INITIALIZE TRANSACTION RECORD VARIABLES
  133.     T2(I%)=0
  134.     NEXT I%
  135.     N=0
  136.     N1=0
  137.     GOSUB 5650                            REMARK  CLEAR SCREEN OF PREVIOUS TRANSACTION DATA
  138.  
  139. 5767    RETURN
  140.  
  141. 5770    X9=0
  142.     X2$="USE ALPHA KEYS TO SET UP NEXT TRANSACTION(D=NO CHANGE;E=EXIT)"
  143.     X2=1:X3=0:X4=0:X0=0:GOSUB 665                    REMARK  PROMPT FOR ALPHA KEY ENTRY
  144.     IF X0$="" OR X0$="D" THEN RETURN                REMARK  IF NO CHANGES SPECIFIED, RETURN
  145.  
  146.     IF X0$<"A" OR X0$>"E"\                        REMARK  REJECT INVALID ALPHA ENTRIES
  147.     THEN X2$="OUT OF RANGE":GOSUB 615:GOTO 5770
  148.  
  149.     IF X0$ = "E" THEN GOTO 7300                    REMARK  END PROGRAM IF 'E' WAS ENTERED
  150.  
  151.     F=ASC(X0$)-64                            REMARK  GET THE DECIMAL VALUE OF THE LETTER KEYED IN
  152.     X9=T2(1)
  153.     ON F GOSUB 7200,7400,7350                    REMARK  CHANGE EMPLOYEE, PAY TYPE OR WORK TYPE BASED ON CODE
  154.     GOTO 5770
  155.  
  156.  
  157. 6000    MASK12$="/############/"                    REMARK  START OF MAINLINE
  158.     MASKA$="   # /############/"
  159.     Y4=3
  160.     Y8=4
  161.     Y9=5
  162.     OPEN "P/R0F110.DAT" RECL 1150 AS 1                REMARK  OPEN EMPLOYEE MASTER FILE
  163.     OPEN "G/I0F010.DAT" RECL  200 AS Y9
  164.     OPEN "P/R0F040.DAT" RECL 42 AS 3                REMARK  OPEN TRANSACTION FILE
  165.     OPEN "JOB0F100.DAT" RECL 160 AS 4,"CRT" RECL 1100 AS 19        REMARK  OPEN JOB KEY FILE AND CRT MASK FILE
  166.  
  167.     GOSUB 700                            REMARK  LOAD GENERAL INFORMATION FILE
  168.  
  169.  
  170.     RECS%=0                                REMARK  SEARCH TRANSACTION FILE FOR EOF
  171.     IF END #Y4 THEN 6020
  172.  
  173.     FOR F%=10 TO 1 STEP -1                        REMARK  SEARCH IN A FILE 1024 RECORDS MAXIMUM
  174.     READ #Y4,(2^F%)+RECS%;LINE X$
  175.     RECS%=RECS% + 2^F%
  176. 6020    NEXT F%
  177.  
  178.     TRANSACTION.COUNT%=RECS%
  179.  
  180.  
  181.     P$(1)="SALARY"                            REMARK  SET UP PAY AND WORK TYPE DESCRIPTIONS
  182.     P$(2)="HOURLY"
  183.     P$(3)="VACATION"
  184.     P$(4)="HOLIDAY"
  185.     P$(5)="PIECE WORK"
  186.     P$(6)="OVERTIME"
  187.     P$(7)="COMP TIME"
  188. 6028    W$(1)="N/A"
  189.     W$(2)="PHASE I"
  190.     W$(3)="PHASE II"
  191.     W$(4)="NO JOB NO."
  192.     W$(5)="JOB NO."
  193.  
  194.     X0=5                                REMARK  LOAD AND DISPLAY CRT MASK NUMBER 5
  195.     GOSUB 260
  196.  
  197.     X1=23                                REMARK  DISPLAY TODAY'S DATE
  198.     X0=G3(1)
  199.     GOSUB 680
  200.  
  201.     X1=7
  202.     GOSUB 215
  203.     PRINT G3(5)                            REMARK  DISPLAY DAY NUMBER
  204.  
  205.     GOSUB 7150                            REMARK  ENTER COMPANY NUMBER AND NAME
  206.  
  207.     GOSUB 7400                            REMARK  PROMPT OPERATOR FOR PAY TYPE
  208.  
  209.     GOSUB 7350                            REMARK  PROMPT OPERATOR FOR WORK TYPE
  210.  
  211.  
  212. 6140    IF T2(4)=1 OR T2(4)=2 OR T2(4)=4\                REMARK  ENTER JOB NUMBER IF PHASE 1,2 OR TYPE=4
  213.     THEN GOSUB 5300
  214.  
  215.     IF T2(4)=2 THEN GOSUB 5350                    REMARK  ENTER DEPARTMENT NUMBER IF PHASE 2
  216.  
  217.     IF T2(3)=1\                            REMARK  IF PAY TYPE IS 1,3,5 OR 6, REQUEST HOURS
  218.     OR T2(3)=3\
  219.     OR T2(3)=5\
  220.     OR T2(3)=6\
  221.     THEN\
  222.     GOSUB 5400
  223.  
  224.     IF T2(3)=4 THEN\                        REMARK  ENTER HOURS AND RATE FOR PIECEWORK PAY TYPES
  225.     GOSUB 5400:\
  226.     GOSUB 5450:\
  227.     GOSUB 5500
  228.  
  229.     IF T2(3) <> 2 THEN GOTO 6155
  230.     IF R2(1)=1 THEN GOSUB 5550\                    REMARK  ENTER VACATION PAY AMOUNT FOR HOURLY EMPLOYEE
  231.     ELSE GOSUB 5400                            REMARK  ENTER VACATION HOURS FOR SALARIED EMPLOYEE
  232.  
  233. 6155    X=0:X2=2:X3=0:X4=99                        REMARK  PROMPT OPERATOR FOR CHANGES TO ENTERED FIELDS
  234.     X2$="ENTER FIELD TO CHANGE ('0' = NONE; '99' TO CANCEL)"
  235.     GOSUB 665
  236.     F=X0
  237.     IF F>6 AND F < 99\
  238.     THEN\
  239.     X2$="OUT OF RANGE":GOSUB 615:GOTO 6155
  240.  
  241.     IF F=0 THEN GOTO 6175
  242.     IF F=99  THEN GOTO 6180                        REMARK  IF FIELD TO CHANGE = 99, CANCEL TRANSACTION
  243.  
  244.     ON F GOSUB 5300,5350,5400,5450,5500,5550            REMARK  CHANGE FIELDS AND RE-PROMPT
  245.     GOTO 6155
  246.  
  247. 6175    X0=0                                REMARK  SAVE TRANSACTION RECORD ON FILE
  248. 6180    GOSUB 5750
  249.     IF T2(4)=0 OR T2(4)=3 THEN GOSUB 7200 ELSE GOTO 6185
  250.  
  251.     IF X0>0 THEN GOTO 6140                        REMARK  IF NEW EMPLOYEE=0 OR WORK TYPE NOT 0 OR 3,
  252. 6185    GOSUB 5770                            REMARK  ALLOW ALPHA-KEY FIELD CHANGES
  253.     GOTO 6140
  254.  
  255.  
  256.  
  257.     GOSUB 265                            REMARK  DISPLAY CURRENT TRANSACTION DATA ON CRT
  258.     X1=23
  259.     X0=G3(1)
  260.     GOSUB 680                            REMARK  DISPLAY DATE
  261.     X1=7
  262.     GOSUB 215
  263.     PRINT G3(5)                            REMARK  DISPLAY DAY NUMBER AND COMPANY NAME
  264.     GOSUB 7160
  265.     X1=12
  266.     GOSUB 215
  267.     GOSUB 7265                            REMARK  DISPLAY EMPLOYEE NUMBER AND NAME
  268. 7010    X1=12
  269.     GOSUB 215
  270.     PRINT USING MASKA$;T2(3),P$(T2(3)+1)                REMARK  DISPLAY PAY TYPE AND DESCRIPTION
  271.     X1=12
  272.     GOSUB 215
  273.     PRINT USING MASKA$;T2(4),W$(T2(4)+1)                REMARK  DISPLAY WORK TYPE AND DESCRIPTION
  274.     PRINT
  275.     X1=11
  276.     GOSUB 215
  277.     PRINT USING MASK6$;T2(6)                    REMARK  DISPLAY JOB NUMBER
  278.     X1=13
  279.     GOSUB 215
  280.     PRINT USING MASK2$;T2(5)                    REMARK  DISPLAY DEPARTMENT NUMBER
  281. 7070    X1=12
  282.     GOSUB 215
  283.     PRINT USING MASK2.2$;T2(7);                    REMARK  DISPLAY HOURS
  284.     X1=18
  285.     GOSUB 215
  286.     PRINT USING MASK2.2$;HOURS                    REMARK  DISPLAY TOTAL HOURS ENTERED FOR THIS EMPLOYEE
  287.     X1=11
  288.     GOSUB 215
  289.     PRINT USING MASK6$;N                        REMARK  DISPLAY PIECEWORK QUANTITY
  290.     X1=10
  291.     GOSUB 215
  292.     PRINT USING MASK4.2$;N1                        REMARK  DISPLAY PIECEWORK RATE
  293.     X1=10
  294.     GOSUB 215    
  295.     PRINT USING MASK4.2$;T2(8)                    REMARK  DISPLAY TRANSACTION AMOUNT
  296.     RETURN 
  297.  
  298. 7150    GOSUB 7160                            REMARK  FIRST ENTRY OF EMPLOYEE NUMBER
  299.     GOSUB 7200
  300.     IF X0=0  THEN GOTO 7300                        REMARK  IF ZERO ENTERED, END PROGRAM
  301.     RETURN 
  302. 7160    X1=267
  303.     GOSUB 210
  304.     PRINT USING"  ## /123456890123456789012/";G1,G2$(1)
  305.     RETURN 
  306. 7200    REMARK **********PROMPT FOR ENTRY OF EMPLOYEE NUMBER**********
  307.     X1=332
  308.     X2=3
  309.     X3=0
  310.     X4=999
  311.     GOSUB 345 
  312.     IF X0=0 AND T2(4)=0 THEN RETURN
  313.     IF X0=0 AND T2(4)=3 THEN RETURN
  314.     IF X0>MSTR.RECORDS OR X0=0 THEN GOSUB 5600:GOTO 7200        REMARK  FLASH ERROR MESSAGE IF EMPLOYEE NUMBER IS INVALID
  315.  
  316.     GOSUB 745                            REMARK  READ EMPLOYEE MASTER RECORD
  317.  
  318.     IF S(1)=0 THEN X2$="EMPLOYEE NOT ON FILE":GOSUB 615:GOTO 7200    REMARK  IF EMPLOYEE IS INACTIVE OR DELETED, FLASH ERROR
  319.     IF R2(1)=99 THEN X2$="EMPLOYEE INACTIVE":GOSUB 615:GOTO 7200
  320.  
  321.  
  322. 7260    HOURS=0                                REMARK  INITIALIZE TOTAL ENTERED HOURS FOR THIS EMPLOYEE
  323.     GOSUB 5408
  324.     T2(1)=S(1)
  325.     X1=331
  326.     GOSUB 210
  327. 7265    PRINT USING MASK4$+" "+MASK.22A$;S(1),R$(1)            REMARK  DISPLAY EMPLOYEE NUMBER AND NAME
  328.  
  329.     IF R2(1)=1 AND T2(3)=0 THEN GOSUB 5700                REMARK  FLASH OPERATOR WARNING IF NEEDED
  330.     RETURN 
  331.  
  332.  
  333. 7300    PRINT CLEAR.SCREEN$;"P/R TRANS. ENTRY LOADING MENU"        REMARK  TERMINATE PROGRAM AND LOAD MENU HERE
  334.     CHAIN "P/R000"
  335.  
  336.  
  337. 7350    X1=462                                REMARK  CHANGE WORK TYPE SUBROUTINE
  338.     X2=1
  339.     X3=0
  340.     X4=4
  341.     GOSUB 345 
  342.     T2(4)=X0
  343.     X1=X1+2
  344.     GOSUB 210
  345.     PRINT USING MASK12$;W$(T2(4)+1);                REMARK  DISPLAY WORK TYPE AND CORRESPONDING DESCRIPTION
  346.     RETURN 
  347.  
  348.  
  349.  
  350. 7400    X1=398                                REMARK CHANGE PAY TYPE SUBROUTINE
  351.     X2=1
  352.     X3=0
  353.     X4=6
  354.     GOSUB 345
  355.     T2(3)=X0
  356.     X1=X1+2
  357.     GOSUB 210
  358.     PRINT USING MASK12$;P$(T2(3)+1)
  359.     IF R2(1)=1 AND T2(3)=0 THEN GOSUB 5700                REMARK  FLASH OPERATOR WARNING IF INDICATED
  360.     RETURN
  361.  
  362.  
  363. 745    REMARK *************READ MASTER RECORD**************
  364.     READ #1,X0;R$(1),R$(2),R$(3),R$(4),R1.0,R2.0,R2(1),R2(2),R2(3),R2(4),\
  365.     R2(5),R3$,S(1)
  366.     RETURN
  367.