2 ! CREATES OR MAINTAINS SALARY CONTRACT REGISTER
5 ! PROGRAM NAME:"MTNSCR" - BY JAC.
10 OPEN "DK1:PAYROL.MST" AS FILE 1%
15 DIM #1%,A$(1500%)=128%,A%(0%):A%=A%(0%)
20 OPEN "DK1:PAYROL.SCR" AS FILE 2%
25 DIM #2%,S$(1500%)=128%,S%(0%)
40 OPEN "DK1:PAYROL.TPY" AS FILE 4%
45 DIM #4%,T$(700%)=64%,T%(0%):T%=T%(0%)
60 INPUT "INPUT THE PRESENT DATE AS MM-DD-YY";D$
65 N%=INSTR(1%,D$,"-"):IF N%=0% OR N%>3% THEN 60
70 IF N%=2% THEN D$=" "+D$
75 N%=INSTR(4%,D$,"-"):IF N%=0% OR N%>6% THEN 60
80 IF N%=5% THEN D$=LEFT(D$,3%)+" "+RIGHT(D$,4%)
85 OPEN "CR:" FOR INPUT AS FILE 6%
90 DEF FNZ$(A,B%)
95 IF ABS(A)<1E+6 THEN FNZ$=LEFT(NUM$(A)+SPACE$(B%-LEN(NUM$(A))),B%):GOTO 112
100 A1=FIX(A/1E+6):A2=((A/1E+6)-A1)*1E+6:A3$=NUM$(A1):A4$=RIGHT(NUM$(A2),2%)
102 IF LEN(A4$)<7% THEN A4$="0"+A4$:GOTO 102
105 A3$=LEFT(A3$,INSTR(2%,A3$," ")-1%)+A4$
110 FNZ$=LEFT(A3$+SPACE$(B%-LEN(A3$)),B%)
112 FNEND
115 D2$=LEFT(D$,2%)+MID(D$,4%,2%)+MID(D$,7%,2%):E$="    ":K%=1%
120 GET #6%:FIELD #6%,RECOUNT-1% AS A$:E1$=E$
125 IF LEFT(A$,3%)="END" THEN 335
130 GOSUB 400:F$=MID(A$,62%,1%):IF E1$=E$ AND F$=" " THEN 155
132 IF E$<E1$ THEN H%=1% ELSE H%=K%
135 GOTO 140 IF MID(A$(K%),39%,4%)=E$ FOR K%=H% UNTIL K%>A%
140 IF K%>A% THEN PRINT "CAN'T FIND EMPLOYEE NO.",E$:GOTO 115
145 IF F$<>" " THEN 195 ELSE S$(K%)="    "
155 N%=VAL(MID(S$(K%),4%,1%)):N%=N%+1%
160 S$(K%)="  "+"Y"+MID(NUM$(N%),2%,1%)+RIGHT(S$(K%),5%)
165 S$(K%)=LEFT(S$(K%),(N%-1%)*31%+4%)+D1$+M$+T$+C$:T%=T%+1%
170 T$(T%)=" S"+LEFT(A$(K%),24%)+MID(A$(K%),37%,6%)+D1$+C$+" "+T$+M$
175 A$(K%)=LEFT(A$(K%),115%)+" "+RIGHT(A$(K%),117%):GOTO 120
195 IF F$="B" THEN 260
200 IF F$<>"D" THEN PRINT "ILLEGAL CODE IN 62-IGNORED CARD":GOTO 120
205 N%=VAL(MID(S$(K%),4%,1%))
210 FOR I%=1% TO N%
215 T$=MID(S$(K%),(I%-1%)*31%+13%,7%):C$=MID(S$(K%),(I%-1%)*31%+20%,16%)
220 T%=T%+1%:T$(T%)=" D"+LEFT(A$(K%),24%)+MID(A$(K%),37%,6%)+D2$+C$+"-"+T$+"  "
240 NEXT I%
245 S$(K%)=SPACE$(128%):A$(K%)=LEFT(A$(K%),115%)+"D"+RIGHT(A$(K%),117%):GOTO 120
260 ON ERROR GOTO 500
265 T1$=LEFT(T$,6%):T2$=RIGHT(T$,7%):N%=1%
270 T=(VAL(T1$)*10%+VAL(T2$))*N%:ON ERROR GOTO 0
275 T$=FNZ$(T,8%):T%=T%+1%
280 T$(T%)=" B"+LEFT(A$(K%),24%)+MID(A$(K%),37%,6%)+D2$+C$+T$+"  "
300 S$(K%)=SPACE$(128%):A$(K%)=LEFT(A$(K%),115%)+"D"+RIGHT(A$(K%),117%):GOTO 120
335 T%(0%)=T%:CLOSE 1%,2%,4%,6%:STOP
400 E$=MID(A$,26%,4%):D1$=MID(A$,30%,4%)+"7"+MID(A$,34%,1%)
405 M$=MID(A$,35%,2%):T$=MID(A$,37%,7%)
410 C$=MID(A$,64%,16%):RETURN
500 IF ERR<>52% THEN ON ERROR GOTO 0
505 IF ASCII(T2$)=125% THEN T2$="I"
510 T2$=CHR$(ASCII(T2$)-25%):N%=-1%:RESUME 270
515 END
