1  REM  ****  HP BASIC PROGRAM LIBRARY  ******************************
2  REM
3  REM        EFPRT:  CTC PAYROLL PROGRAM, PART 4 OF 34
4  REM
5  REM        36213  REV B  6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ***********************************
8  H$=""
9  REM * PRINTS EMPLOYEE FILE *
10  DIM E$[30],H$[2],D$[10]
11  DIM E[20],S[20]
100  FILES E1,E2,EAUX
150  PRINT "WHICH PRINTER: (1) ACCOUNTING (2) ABDICK";
155  INPUT P5
160  IF P5=1 OR P5=2 THEN 200
165  PRINT '7'7'7'7'7'7"WHAT";
170  GOTO 155
200  READ E9,E7
210  DATA 2,17
220  READ #(E9+1),1;A9,M9
222  PRINT "BEGINNING EMPLOYEE#";
223  INPUT U7
224  IF U7>1000 AND U7 <= M9 THEN 230
226  PRINT '7'7'7'7'7"INVALID EMP#"
228  GOTO 222
230  PRINT H$"ENTER TODAY'S DATE";
235  INPUT D$
240  L=LEN(D$)
250  IF L>4 AND L<7 THEN 270
260  PRINT '7'7'7'7'7'7"INVALID DATE"
265  GOTO 230
270  PRINT " ";
275  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;
290  K=4
295  GOSUB 9910
300  PRINT TAB(43)"P A Y R O L L  E M P L O Y E E  F I L E";
310  K=1
320  GOSUB 9900
330  PRINT TAB(58);
340  IF L=6 THEN 370
350  PRINT D$[1,1]"/";D$[2,3]"/";D$[4,5];
360  GOTO 380
370  PRINT D$[1,2]"/";D$[3,4]"/";D$[5,6];
380  P8=7
385  GOSUB 6000
390  GOSUB 8000
400  REM
1000  FOR I1=U7 TO M9
1005  GOSUB 4000
1010  READ #N,R1;E$
1020  FOR I2=1 TO E7
1030  READ #N;E[I2]
1040  NEXT I2
1045  IF E[1]=-1 THEN 2270
1050  GOSUB 8100
1055  PRINT E$;TAB(24);
1060  Z$="##"
1070  X$=" "
1080  Z[1]=S[1]
1090  GOSUB 9000
1100  PRINT TAB(31);
1110  Z[1]=S[9]
1120  GOSUB 9000
1130  PRINT TAB(37);
1140  Z[1]=S[11]
1150  GOSUB 9000
1160  PRINT TAB(43);
1170  Z[1]=S[4]
1180  GOSUB 9000
1190  PRINT "   ";
1200  X=E[10]
1220  GOSUB 8200
1230  X=E[8]
1240  GOSUB 8200
1250  PRINT "   ";
1260  Z$="#    "
1270  Z[1]=S[8]
1280  GOSUB 9000
1290  Z$="$##.### "
1295  Z[1]=E[5]
1297  GOSUB 9000
1800  Z$="$####.##  "
1810  Z[1]=E[6]
1820  GOSUB 9000
1830  K1=11
1840  K2=15
1850  GOSUB 8300
1870  GOSUB 6000
1900  Z$="###-##-####    "
1905  X$="0"
1910  Z[1]=S[5]
1920  Z[2]=S[6]
1930  Z[3]=S[7]
1940  GOSUB 9000
1950  Z$="####"
1960  X$=" "
1970  Z[1]=I1
1980  GOSUB 9000
1990  PRINT TAB(24);
2000  Z$="##"
2010  Z[1]=S[2]
2020  GOSUB 9000
2030  PRINT TAB(31);
2040  Z[1]=S[3]
2050  GOSUB 9000
2060  PRINT TAB(37);
2070  Z[1]=S[12]
2080  GOSUB 9000
2082  PRINT TAB(43);
2084  Z[1]=S[13]
2086  GOSUB 9000
2090  PRINT TAB(51);
2091  Z[1]=L8
2092  GOSUB 9000
2095  PRINT TAB(58);
2100  X=E[9]
2110  GOSUB 8200
2120  PRINT "   ";
2130  Z$="#            "
2140  Z[1]=S[10]
2150  GOSUB 9000
2160  X=E[7]
2170  GOSUB 8200
2180  K1=12
2190  K2=16
2195  GOSUB 8300
2202  K=1
2210  GOSUB 9900
2220  P9=P9+3
2230  IF P9<60 THEN 2270
2240  GOTO P5 OF 2245,2250
2245  PRINT " ";
2246  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'18'18'18'18'18'18'18'18'18'18;
2247  GOTO 2260
2250  K=66-P9
2255  GOSUB 9910
2260  GOSUB 8000
2270  NEXT I1
2280  END 
4000  REM
4010  R=I1-1000
4020  FOR I=1 TO E9
4030  IF R<I*200 THEN 4040
4035  NEXT I
4037  PRINT "I1 AND M9>";E9*200+1000;I1;M9
4038  STOP 
4040  N=I
4045  R1=R-(I-1)*200
4050  RETURN 
6000  GOTO P5 OF 6010,6030
6010  PRINT '13;
6020  RETURN 
6030  PRINT 
6040  RETURN 
8000  K=4
8010  GOSUB 9910
8020  PRINT "    EMPLOYEE NAME      TITLE MARITAL SEX  STATE ";
8030  PRINT "BIRTH DT  DT HIRED EXEMPTION HOURLY AMT RAISE  ";
8040  PRINT " STATE    CITY    AUTO";
8050  GOSUB 6000
8070  PRINT "SOCIAL SEC. EMP NUMBER DEPT  DEPDNTS RACE WKCMP   FICA    ";
8080  PRINT "DT TERM  WK STATUS  RATE  RAISE DT   ";
8090  PRINT " DISAB    ADV.    INS.";
8092  K=2
8094  GOSUB 9900
8096  P9=8+P8
8098  P8=0
8099  RETURN 
8100  MAT S=ZER
8102  L7=INT(E[17]/10)
8104  L8=E[17]-L7*10
8110  S[1]=INT(E[1]/10^4)
8120  S[2]=INT((E[1]-S[1]*10^4)/100)
8130  S[3]=E[1]-S[1]*10^4-S[2]*100
8140  S[4]=INT(E[2]/1000)
8150  S[5]=E[2]-S[4]*1000
8160  S[6]=INT(E[3]/10^4)
8170  S[7]=E[3]-S[6]*10^4
8180  X1=5
8182  FOR I=8 TO 13
8184  X=0
8186  X2=5
8188  FOR J=1 TO (I-8)
8190  X=X+S[J+7]*10^X2
8192  X2=X2-1
8194  NEXT J
8195  S[I]=INT((E[4]-X)/10^X1)
8196  X1=X1-1
8197  NEXT I
8198  RETURN 
8200  Z$="##/##/##  "
8210  Z[3]=INT(X/10^4)
8220  Z[1]=INT((X-Z[3]*10^4)/100)
8230  Z[2]=X-Z[3]*10^4-Z[1]*100
8240  GOSUB 9000
8250  RETURN 
8300  Z$="$###.## "
8310  FOR I=K1 TO K2 STEP 2
8320  Z[1]=E[I]
8330  GOSUB 9000
8340  NEXT I
8350  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 
9900  GOSUB 6000
9910  FOR I=1 TO K
9920  PRINT "       ";
9930  GOSUB 6000
9940  NEXT I
9950  RETURN 
9999  END 
