File: RESEQ.BA of Tape: Various/ETH/ba1
(Source file text) 

90 REM PROGRAM RESEQ
100 DIM L$(72),F$(1),C$(1),N$(16)
110 DIM O$(16)
120 DIM L2$(72)
130 DIM N(350)
140 F$=CHR$(28)
150 PRINT "INFILE";
160 INPUT N$
170 PRINT "OUTFILE";
180 INPUT O$
190 PRINT "START,STEP";
200 INPUT S1,S
210 S1=INT(ABS(S1))
220 S=INT(ABS(S))
230 T=0
240 N2=0
250 FILE #1:N$
260 I=1
270 INPUT #1:L$
280 IFEND #1 THEN 450
290 L=LEN(L$)
300 GOSUB 1110
310 IF N1>0 THEN 350
320 PRINT "NO LINE NUMBER"
330 PRINT L$
340 GO TO 260
350 IF N1>N2 THEN 390
360 PRINT "OUT OF SEQUENCE"
370 PRINT L$
380 GO TO 260
390 N2=N1
400 T=T+1
410 N(T)=N1
420 IF T<350 THEN 260
430 PRINT "TOO MANY LINES"
440 STOP
450 RESTORE #1
460 FILEV #2:O$
470 N2=S1
480 INPUT #1:L$
490 IFEND #1 THEN 860
500 I=1
510 L=LEN(L$)
520 GOSUB 1110
530 L2$=STR$(N2)
540 PRINT #2:L2$;
550 L$=SEG$(L$,I,72)
560 N2=N2+S
570 F=0
580 D=POS(L$,F$,1)\P=D
590 IF D=0 THEN 620
600 L2$=SEG$(L$,P+1,72)
610 L$=SEG$(L$,1,P-1)
620 I=POS(L$,"GOTO",1)+4
630 IF I>4 THEN 880
640 I=POS(L$,"GO TO",1)+5
650 IF I>5 THEN 880
660 I=POS(L$,"THEN",1)+4
670 IF I>4 THEN 880
680 I=POS(L$,"GOSUB",1)+5
690 IF I>5 THEN 880
700 I=POS(L$,"GO SUB",1)+6
710 IF I>6 THEN 880
720 IF F=0 THEN 740
730 PRINT #2:F$;
740 PRINT #2:L$;
750 F=F+1
760 IF D>0 THEN 790
770 PRINT #2:
780 GO TO 480
790 D=POS(L2$,F$,1)\P=D
800 IF D>0 THEN 830
810 L$=L2$
820 GO TO 620
830 L$=SEG$(L2$,1,P-1)
840 L2$=SEG$(L2$,P+1,72)
850 GO TO 620
860 CLOSE #2
870 STOP
880 L=LEN(L$)
890 GOSUB 1050
900 IF C=32 THEN 890
910 IF C<0 THEN 1020
920 I=I-1
930 P=I
940 GOSUB 1110
950 IF N1=0 THEN 1020
960 FOR J=1 TO T
970 IF N1<>N(J) THEN 1010
980 Q$=STR$(J*S-S+S1)
990 L$=SEG$(L$,1,P-1)&Q$
1000 GO TO 720
1010 NEXT J
1020 PRINT "BAD REFERENCE"
1030 PRINT L$
1040 GOTO 720
1050 IF I<=L THEN 1080
1060 C=-1
1070 RETURN
1080 C=ASC(SEG$(L$,I,I))
1090 I=I+1
1100 RETURN
1110 N1=0
1120 GOSUB 1050
1130 IF C<48 THEN 1170
1140 IF C>57 THEN 1170
1150 N1=N1*10+C-48
1160 GOTO 1120
1170 IF C<0 THEN 1190
1180 I=I-1
1190 RETURN
1200 END