49 lines
1016 B
QBasic
49 lines
1016 B
QBasic
' *** STAT2_EX.BAS - STATIC statement programming example
|
||
'
|
||
INPUT "Name of file";F1$
|
||
INPUT "String to replace";Old$
|
||
INPUT "Replace with";Nw$
|
||
Rep = 0 : Num = 0
|
||
M = LEN(Old$)
|
||
OPEN F1$ FOR INPUT AS #1
|
||
CALL Extension
|
||
OPEN F2$ FOR OUTPUT AS #2
|
||
DO WHILE NOT EOF(1)
|
||
LINE INPUT #1, Temp$
|
||
CALL Search
|
||
PRINT #2, Temp$
|
||
LOOP
|
||
CLOSE
|
||
PRINT "There were ";Rep;" substitutions in ";Num;" lines."
|
||
PRINT "Substitutions are in file ";F2$
|
||
END
|
||
|
||
SUB Extension STATIC
|
||
SHARED F1$,F2$
|
||
Mark = INSTR(F1$,".")
|
||
IF Mark = 0 THEN
|
||
F2$ = F1$ + ".NEW"
|
||
ELSE
|
||
F2$ = LEFT$(F1$,Mark - 1) + ".NEW"
|
||
END IF
|
||
END SUB
|
||
|
||
SUB Search STATIC
|
||
SHARED Temp$,Old$,Nw$,Rep,Num,M
|
||
STATIC R
|
||
Mark = INSTR(Temp$,Old$)
|
||
WHILE Mark
|
||
Part1$ = LEFT$(Temp$,Mark - 1)
|
||
Part2$ = MID$(Temp$,Mark + M)
|
||
Temp$ = Part1$ + Nw$ + Part2$
|
||
R = R + 1
|
||
Mark = INSTR(Temp$,Old$)
|
||
WEND
|
||
IF Rep = R THEN
|
||
EXIT SUB
|
||
ELSE
|
||
Rep = R
|
||
Num = Num + 1
|
||
END IF
|
||
END SUB
|
||
|