home *** CD-ROM | disk | FTP | other *** search
- {$C-}
- PROGRAM DelXY;
- (* Isolate block of text - delete from original file and capture
- in new file. *)
- TYPE
- STr64 = STRING[64];
- STr255 = STRING[255];
-
- VAR
- PS1 : STr64;
- InFile, OutFile, CUTFile : TEXT;
- QUIT : BOOLEAN;
- RecD : ARRAY[1..200] OF STr255;
- L,P2,P3,Result,
- F2,F3,COUNT : INTEGER;
-
-
- PROCEDURE ErrMsg;
-
- BEGIN
- Writeln;
- Write('Syntax: DELXY <TextFile> <F#> <T#>');
- Writeln;
- Writeln(' Where: F# = Line number to start definition');
- Write(
- ' T# = Line number ending block definition');
- END;
-
- PROCEDURE Open(FilVar : STr64);
-
- VAR
- NewVar,NewVar2 : STr64;
- I,PosDot : INTEGER;
-
- BEGIN
- FOR I := 1 TO Length(FilVar) DO FilVar[I] := UpCase(FilVar[I]);
- {$I-} Assign(InFile,FilVar);
- Reset(InFile); {$I+}
- IF IOResult <> 0 THEN BEGIN
- Writeln;
- Write(FilVar,' not found.');
- QUIT := TRUE;
- END
- ELSE BEGIN
- PosDot := Pos('.',FilVar);
- IF PosDot = 0 THEN NewVar := FilVar + '.OUT'
- ELSE NewVar := Copy(FilVar,1,PosDot) + 'OUT';
- {$I-} Assign(OutFile,NewVar);
- Rewrite(OutFile); {$I+}
- IF IOResult <> 0 THEN BEGIN
- Writeln;
- Write('Error writing ',NewVar,'.');
- QUIT := TRUE;
- END ELSE
- BEGIN
- PosDot := Pos('.',FilVar);
- IF PosDot = 0 THEN NewVar2 := FilVar + '.CUT'
- ELSE NewVar2 := Copy(FilVar,1,PosDot) + 'CUT';
- {$I-} Assign(CUTFile,NewVar2);
- Rewrite(CUTFile); {$I+}
- IF IOResult <> 0 THEN BEGIN
- Writeln;
- Write('Error writing ',NewVar2,'.');
- QUIT := TRUE;
- END;
- END;
- END;
- END;
-
- PROCEDURE PCheck(NumP : INTEGER);
-
- BEGIN
- F2 := P2;
- F3 := P3;
- QUIT := ((P2 < 1) OR (P3 < P2));
- END;
-
- PROCEDURE Read2Array;
-
- BEGIN
- L := 0;
- REPEAT
- L := Succ(L);
- Readln(InFile,RecD[L]);
- UNTIL (L = 200) OR (Eof(InFile)); {Stay with-in array boundries}
- END;
-
- PROCEDURE WritFile(X,Y,A,B : INTEGER);
-
- VAR
- N : INTEGER;
-
- BEGIN
- FOR N := A TO B DO BEGIN
- COUNT := Succ(COUNT);
- IF (COUNT >= F2) AND (COUNT <= F3) THEN
- BEGIN
- IF COUNT = F2 THEN BEGIN
- Writeln(Chr(7),'DELETING/SAVING:');
- Writeln;
- END;
- Writeln(CUTFile,RecD[N]);
- Writeln(RecD[N]);
- END ELSE
- Writeln(OutFile,RecD[N]);
- END;
- END;
-
- BEGIN
- TextColor(15);
- TextBackGround(1);
- ClrSCR;
- COUNT := 0;
- QUIT := (ParamCount <> 3);
- IF NOT QUIT THEN BEGIN
- PS1 := ParamStr(1);
- Val(ParamStr(2),P2,Result);
- Val(ParamStr(3),P3,Result);
- PCheck(ParamCount);
- END;
- IF NOT QUIT THEN BEGIN
- Open(PS1);
- IF NOT QUIT THEN BEGIN
- REPEAT { Read 200 lines or less at a time }
- Read2Array;
- IF L = 200 THEN BEGIN
- P2 := P2 - 200;
- P3 := P3 - 200;
- END;
- WritFile(P2,P3,1,L);
- UNTIL Eof(InFile);
- Writeln;
- Write('Line number(s) ',F2,'-',F3);
- Write(' isolated.');
- END;
- Close(InFile);
- Close(OutFile);
- Close(CUTFile);
- END
- ELSE ErrMsg;
- Writeln;
- END.
-