1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        ETPRT:  CTC PAYROLL PROGRAM, PART 5 OF 34
4  REM   
5  REM        36213  REV B  6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
8  REM
9  REM
10  DIM T$[40],D$[10]
50  PRINT "WHICH PRINTER: (1) ACCOUNTING (2) ABDICK";
51  INPUT P5
52  IF P5=1 OR P5=2 THEN 100
53  PRINT '7'7'7'7'7"WHAT";
54  GOTO 51
100  FILES ETRAN
102  PRINT "'ALL' OR 'LAST X' TRANSACTIONS (A/L)";
103  K7=0
104  INPUT D$
106  IF D$[1,1]="A" THEN 134
112  PRINT "ENTER X";
114  INPUT X9
116  IF  END #1 THEN 130
117  K7=0
118  I=1
120  READ #1,I;T$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
122  K7=K7+1
124  READ #1;T$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
126  K7=K7+1
128  I=I+1
129  GOTO 120
130  L1=INT((K7-X9)/2)+1
132  IF L1>0 THEN 200
134  L1=1
200  REM
210  PRINT " ";
211  PRINT '18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18;
212  K=4
214  GOSUB 9105
220  PRINT TAB(17)"P A Y R O L L  T R A N S A C T I O N  F I L E";
222  GOSUB 6000
225  P8=5
230  GOSUB 8000
300  IF  END #1 THEN 1055
1000  FOR I1=L1 TO 200
1010  READ #1,I1;T$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
1020  GOSUB 1100
1030  READ #1;T$,U6,T1,D$,T2,T3,T4,T5,T6,D1,T7
1040  GOSUB 1100
1050  NEXT I1
1055  PRINT 
1057  PRINT "TOTAL TRANSACTIONS ON FILE = ";K7
1060  PRINT "DO YOU WANT THE TRANSACTION FILE CLEARED";
1070  INPUT D$
1075  IF D$[1,1]="N" THEN 9999
1080  PRINT #1,1
1085  PRINT #1; END 
1090  END 
1100  REM
1110  GOSUB 8100
1120  PRINT TAB(10);
1130  Z$="####"
1140  Z[1]=U6
1150  GOSUB 9000
1160  PRINT TAB(16);T$;TAB(40);
1170  GOTO T1 OF 1180,2000,3100,3400,4000,4200,4300,4400
1180  IF D$#"A" THEN 1200
1190  T$="ADD NEW EMPLOYEE"
1195  GOTO 1700
1200  IF D$#"D" THEN 1206
1202  T$="DELETED EMPLOYEE"
1204  GOTO 1700
1206  IF D$#"G" THEN 1210
1207  T$="RE-LINKED FREE EMP#S"
1208  GOTO 1700
1210  IF D$="M" THEN 1230
1215  T$="INVALID EMP TRANS"
1220  GOTO 1700
1230  REM
1232  GOTO T2 OF 1290,1300,1320,1340,1360,1380,1400,1420,1440,1460
1240  GOTO T2-10 OF 1480,1500,1520,1522,1524,1526,1528,1530,1540,1560
1260  GOTO T2-20 OF 1580,1600,1620,1640,1512,1650
1270  T$="INVALID MOD CODE"
1280  GOTO 1695
1290  T$="MOD EMPLOYEE#"
1295  GOTO 1695
1300  T$="MOD EMPLOYEE NAME"
1310  GOTO 1700
1320  T$="MOD EMPLOYEE TITLE"
1330  GOTO 1695
1340  T$="MODIFY DEPARTMENT"
1350  GOTO 1695
1360  T$="MOD # OF DEPENDENTS"
1370  GOTO 1695
1380  T$="MODIFY STATE CODE"
1390  GOTO 1695
1400  T$="MOD S.S. NUMBER"
1410  GOTO 1700
1420  T$="MODIFY EXEMPTION"
1430  GOTO 1695
1440  T$="MOD MARITAL STATUS"
1450  GOTO 1695
1460  T$="MODIFY WORK STATUS"
1470  GOTO 1695
1480  T$="MODIFY SEX"
1490  GOTO 1695
1500  T$="MODIFY RACE"
1510  GOTO 1695
1512  T$="MOD WKMAN'S COMP"
1516  GOTO 1695
1520  T$="MODIFY RATE"
1521  GOTO 1960
1522  T$="MOD AMT OF RAISE"
1523  GOTO 1685
1524  T$="MOD RAISE DATE"
1525  GOTO 1700
1526  T$="MOD HIRE DATE"
1527  GOTO 1700
1528  T$="MOD TERMINATION DT"
1529  GOTO 1700
1530  T$="MOD BIRTH DATE"
1531  GOTO 1700
1540  T$="MOD STATE TAX"
1550  GOTO 1685
1560  T$="MOD DISABILITY"
1570  GOTO 1685
1580  T$="MOD CITY TAX"
1590  GOTO 1685
1600  T$="MOD ADVANCE"
1610  GOTO 1685
1620  T$="MOD AUTO DEDUCT"
1630  GOTO 1685
1640  T$="MOD INSURANCE"
1645  GOTO 1685
1650  T$="MOD FICA STATUS"
1655  GOTO 1695
1685  Z$="$+######.##"
1690  GOTO 1700
1695  Z$="+##########"
1700  PRINT T$;TAB(61);
1710  IF T3=0 AND T5=0 THEN 1845
1720  IF T2#7 THEN 1800
1730  Z[1]=T3
1735  X1=T4
1740  GOSUB 1900
1750  Z$="###-##-####"
1760  GOSUB 9000
1770  PRINT TAB(70)"   ";
1775  Z[1]=T5
1780  X1=T6
1785  GOSUB 1900
1790  GOSUB 9000
1795  GOTO 1845
1800  IF T2>14 AND T2<19 THEN 1930
1825  Z[1]=T3
1830  GOSUB 9000
1832  PRINT TAB(70)"   ";
1835  Z[1]=T5
1840  GOSUB 9000
1845  REM
1850  REM
1852  K=1
1853  GOSUB 9100
1855  P9=P9+2
1860  IF P9<60 THEN 1885
1865  GOTO P5 OF 1870,1875
1870  PRINT " ";
1871  PRINT '18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18'18;
1872  GOTO 1880
1875  K=66-P9
1877  GOSUB 9105
1880  GOSUB 8000
1885  RETURN 
1900  Z[2]=INT(X1/10^4)
1910  Z[3]=X1-Z[2]*10^4
1920  RETURN 
1930  X=T3
1935  GOSUB 3000
1940  PRINT TAB(70)"   ";
1945  X=T5
1950  GOSUB 3000
1955  GOTO 1845
1960  Z$="$######.###"
1965  GOTO 1700
2000  REM
2002  IF D$#"R" THEN 2090
2005  PRINT "EMPLOYEE HOURS";TAB(61);
2010  Z$="+##.##"
2015  Z[1]=T2
2020  GOSUB 9000
2025  PRINT "R, ";
2030  Z[1]=T3
2035  GOSUB 9000
2040  PRINT "O/T, ";
2045  Z[1]=T4
2050  GOSUB 9000
2055  PRINT "S, ";
2060  Z[1]=T5
2065  GOSUB 9000
2070  PRINT "V";
2087  GOTO 1850
2090  IF D$#"C" THEN 2120
2100  T$="ENTERED COMMISSION"
2110  GOTO 1700
2120  IF D$#"A" THEN 2140
2130  T$="ENTERED ADJUSTMENT"
2135  GOTO 1700
2140  PRINT "INVALID PAY CODE"
2145  GOTO 1850
3000  Z[3]=INT(X/10^4)
3010  Z[1]=INT((X-Z[3]*10^4)/100)
3020  Z[2]=X-Z[3]*10^4-Z[1]*100
3030  Z$="#####/##/##"
3040  GOSUB 9000
3050  RETURN 
3100  REM
3110  IF D$#"Q " THEN 3140
3120  T$="CLEARED ALL QTD TOTALS"
3130  GOTO 1700
3140  IF D$#"Y " THEN 3170
3150  T$="CLEARED ALL YTD TOTALS"
3160  GOTO 1700
3170  IF D$#"B " THEN 3200
3180  T$="CLEARED BOTH QTD AND YTD TOTALS"
3190  GOTO 1700
3200  IF D$#"I " THEN 3210
3205  T$="INITIALIZED QTD & YTD TOTALS"
3207  GOTO 1700
3210  IF D$#"MQ" THEN 3230
3215  T$[1,8]="MOD QTD "
3220  GOTO 3250
3230  IF D$="MY" THEN 3245
3235  PRINT "INVALID QTD-YTD FILE CODE"'13;
3240  GOTO 1850
3245  T$[1,8]="MOD YTD "
3250  GOTO T2 OF 3265,3275,3285,3295,3305,3315,3325,3335,3345,3347
3255  T$[9]="(INVALID)"
3260  GOTO 3350
3265  T$[9]="FICA"
3270  GOTO 3350
3275  T$[9]="W/H"
3280  GOTO 3350
3285  T$[9]="STATE"
3290  GOTO 3350
3295  T$[9]="DISAB"
3300  GOTO 3350
3305  T$[9]="CITY"
3310  GOTO 3350
3315  T$[9]="ADV."
3320  GOTO 3350
3325  T$[9]="AUTO"
3330  GOTO 3350
3335  T$[9]="INS."
3340  GOTO 3350
3345  T$[9]="GROSS"
3346  GOTO 3350
3347  T$[9]="SICK PAY"
3350  Z$="$+######.##"
3360  PRINT T$;TAB(61);
3370  GOTO 1825
3400  IF D$#"CE" THEN 3403
3401  T$="CLEARED ALL EMPLOYEE HOURS"
3402  GOTO 1700
3403  IF D$#"CV" THEN 3406
3404  T$="CLEARED ALL ACCRUED VAC. HRS"
3405  GOTO 1700
3406  IF D$#"CS" THEN 3409
3407  T$="CLEARED ALL ACCRUED SICK HRS"
3408  GOTO 1700
3409  IF D$#"AS" THEN 3412
3410  T$="ADDED MONTHLY SICK HRS"
3411  GOTO 1700
3412  IF D$#"AV" THEN 3415
3413  T$="ADDED MONTHLY VAC. HRS"
3414  GOTO 1700
3415  IF D$#"AB" THEN 3418
3416  T$="ADDED BOTH MONTHLY HRS"
3417  GOTO 1700
3418  IF D$#"D " THEN 3421
3419  T$="DEDUCTED VAC. AND SICK HRS"
3420  GOTO 1700
3421  GOTO T2 OF 3425,3430,3440,3450,3470,3480,3490,3500,3510,3520
3422  GOTO T2-10 OF 3585,3590
3423  T$="INVALID CUR-PAY CODE"
3424  GOTO 3570
3425  T$="MOD REG. HRS"
3427  GOTO 3570
3430  T$="MOD O/T HRS"
3435  GOTO 3570
3440  T$="MOD SICK HRS"
3445  GOTO 3570
3450  T$="MOD VAC HRS"
3455  GOTO 3570
3470  T$="MOD REG EARN"
3475  GOTO 3350
3480  T$="MOD O/T EARN"
3485  GOTO 3350
3490  T$="MOD OTHER EARN"
3495  GOTO 3350
3500  T$="MOD GROSS EARN"
3505  GOTO 3350
3510  T$="MOD F.I.C.A."
3515  GOTO 3350
3520  T$="MOD FEDERAL"
3570  Z$="+#######.##"
3580  GOTO 3360
3585  T$="MOD ACCRUED VAC."
3587  GOTO 3595
3590  T$="MOD ACCRUED SICK"
3595  Z$="+######.###"
3597  GOTO 3360
4000  IF D$="CL" THEN 4170
4001  IF D$#"C" THEN 4015
4007  T$="CM*MOD "
4010  GOTO 4040
4015  IF D$#"A" THEN 4030
4020  T$="AJ*MOD "
4025  GOTO 4040
4030  T$="BAD COM/ADJ CODE"
4035  GOTO 3350
4040  GOTO T2 OF 4055,4065,4075,4085,4095,4105,4115,4125,4135,4145
4042  GOTO T2-10 OF 4151,4155
4045  T$="BAD ADJ MOD#"
4050  GOTO 3350
4055  T$[8]="EMP#"
4060  GOTO 4160
4065  IF D$="C" THEN 4070
4066  T$[8]="GROSS"
4067  GOTO 3350
4070  T$[8]="COMAMT"
4072  GOTO 3350
4075  T$[8]="FICA"
4080  GOTO 3350
4085  T$[8]="FEDRAL"
4090  GOTO 3350
4095  T$[8]="STATE"
4100  GOTO 3350
4105  T$[8]="DISAB"
4110  GOTO 3350
4115  T$[8]="CITY"
4120  GOTO 3350
4125  T$[8]="ADV"
4130  GOTO 3350
4135  T$[8]="AUTO"
4140  GOTO 3350
4145  T$[8]="INS."
4150  GOTO 3350
4151  T$[8]="NET"
4152  GOTO 3350
4155  T$[8]="CHECK#"
4160  Z$="###########"
4165  GOTO 3360
4170  T$="CLEARED COMMISSION/ADJUSTMENT FILE"
4175  GOTO 1700
4200  IF D$#"S" THEN 4215
4205  T$="CREATED STATE/DPT/EMP# FILE"
4210  GOTO 1700
4215  IF D$#"P" THEN 4230
4220  T$="FIGURED CURRENT PAYROLL"
4222  T$[24]="(AUTO 80)"
4223  IF T2=0 THEN 1700
4224  T$[24]="(NON-AUTO 80)"
4225  GOTO 1700
4230  T$="BAD PRE-PAYROLL CODE"
4235  GOTO 1700
4300  IF D$#"C" THEN 4320
4310  T$="ADDED COMMIS TO TOTALS"
4315  GOTO 1700
4320  IF D$#"A" THEN 4340
4325  T$="ADDED ADJ TO TOTALS"
4330  GOTO 1700
4340  IF D$#"P" THEN 4360
4345  T$="ADDED CURR PAY TO TOTALS"
4350  GOTO 1700
4360  T$="INVALID ADD TRANS CODE"
4370  GOTO 1700
4400  T$="CLEARED EMP. EARNINGS HISTORY FILES"
4410  GOTO 1700
6000  GOTO P5 OF 6010,6030
6010  PRINT '13;
6020  RETURN 
6030  PRINT 
6040  RETURN 
8000  K=4
8010  GOSUB 9105
8020  PRINT "  DATE    EMP#  EMPLOYEE NAME       ";
8025  PRINT "    TYPE OF TRANSACTION         FROM            TO";
8030  K=2
8035  GOSUB 9100
8040  P9=7+P8
8045  P8=0
8050  RETURN 
8100  Z[1]=INT(D1/10^4)
8110  Z[2]=INT((D1-Z[1]*10^4)/100)
8120  Z[3]=D1-Z[1]*10^4-Z[2]*100
8130  X$=" "
8140  Z$="##/##/##"
8150  GOSUB 9000
8160  RETURN 
9000  REM
9003  LET Z2=Z3=Z4=Z5=Z7=Z8=Z9=1
9004  DIM Y$[10],Z$[72]
9005  LET Y$="0123456789"
9006  LET Z0=Z9-1
9007  LET Z0=Z0+1
9008  IF Z0=LEN(Z$)+1 THEN 9059
9009  IF Z$[Z0,Z0]="#" THEN 9016
9010  IF Z$[Z0,Z0+1]=".#" THEN 9016
9011  IF Z$[Z0,Z0+1]="+#" THEN 9014
9012  PRINT Z$[Z0,Z0];
9013  GOTO 9007
9014  LET Z4=0
9015  GOTO 9007
9016  LET Z=100
9017  LET Z6=Z[Z2]
9018  LET Z9=Z0-1
9019  LET Z9=Z9+1
9020  IF Z$[Z9,Z9]="." THEN 9023
9021  IF Z$[Z9,Z9]="#" THEN 9019
9022  GOTO 9027
9023  IF Z5#1 THEN 9027
9024  LET Z5=0
9025  LET Z=Z9
9026  GOTO 9019
9027  IF Z#100 THEN 9029
9028  LET Z=Z9
9029  IF Z4=1 THEN 9034
9030  IF Z6 >= 0 THEN 9033
9031  PRINT "-";
9032  GOTO 9034
9033  PRINT " ";
9034  LET Z6=ABS(Z6)+10^(Z-Z9-1)
9035  FOR Z1=Z-Z0 TO Z+1-Z9 STEP -1
9036  IF Z$[Z-Z1,Z-Z1]#"." THEN 9041
9037  PRINT ".";
9038  LET Z3=0
9039  LET Z7=2
9040  GOTO 9055
9041  LET Z8=INT(Z6/(10^(Z1+Z7-2)))
9042  IF Z6<10^(Z-Z0) THEN 9045
9043  PRINT "#";
9044  GOTO 9055
9045  LET Z6=Z6-Z8*10^(Z1+Z7-2)
9046  IF Y$[Z8+1,Z8+1]="0" THEN 9048
9047  LET Z3=0
9048  IF Z3=0 THEN 9054
9049  IF Z1#1 THEN 9052
9050  PRINT "0";
9051  GOTO 9055
9052  PRINT X$;
9053  GOTO 9055
9054  PRINT Y$[Z8+1,Z8+1];
9055  NEXT Z1
9056  LET Z3=Z4=Z5=Z7=1
9057  LET Z2=Z2+1
9058  GOTO 9006
9059  RETURN 
9100  GOSUB 6000
9105  FOR I=1 TO K
9110  PRINT "      ";
9115  GOSUB 6000
9120  NEXT I
9130  RETURN 
9999  END 
