80 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
| (*                            reseq.p                                        *)
 | |
| (*                            *******                                        *)
 | |
| 
 | |
| (*  A program to renumber a text file. To use this utility type :
 | |
|     reseq <file1 >file2 start step
 | |
|     to  create file2 as a renumbered version of file1, starting 
 | |
|     with line number start, with increments of step.
 | |
|     NOTE : file1 and file2 had better be different !!!                       *)
 | |
| 
 | |
| 
 | |
| (*  Version 1.1  written Friday 31 July 1987 by Jon Abbott.                  *)
 | |
| 
 | |
| program reseq(input,output);
 | |
| 
 | |
| type buf = packed array [1..10] of char;
 | |
|      string = ^ buf;
 | |
| 
 | |
| var c : char;
 | |
|     start,step,i : integer;
 | |
|     numbered : boolean;
 | |
| 
 | |
|   function argc: integer; extern;
 | |
|   function argv(i: integer): string; extern;
 | |
| 
 | |
|   procedure number;
 | |
|   begin
 | |
|     if i<10 then write('0000',i:1)
 | |
|     else if i<100 then write('000',i:2)
 | |
|     else if i<1000 then write('00',i:3)
 | |
|     else if i<10000 then write('0',i:4)
 | |
|     else write(i:5);
 | |
|     if not numbered then write('  ');
 | |
|     if not eoln then write(c);
 | |
|     while not eoln do
 | |
|     begin
 | |
|       read(c);
 | |
|       write(c)
 | |
|     end;
 | |
|     readln;
 | |
|     writeln;
 | |
|     i:=i+step
 | |
|   end;
 | |
| 
 | |
|   function getarg(n:integer) : integer;
 | |
|   var s : string;
 | |
|       i,g :integer;
 | |
|   begin
 | |
|     s := argv(n);
 | |
|     i:=1;
 | |
|     while (not (s^[i] in ['0'..'9'])) and (i<10) do i:=i+1;
 | |
|     g := 0;
 | |
|     if not (s^[i] in ['0'..'9']) then g := 100
 | |
|     else
 | |
|     while (i<11) and (s^[i] in ['0'..'9']) do begin
 | |
|       g := g*10+ord(s^[i])-ord('0');
 | |
|       i := i+1
 | |
|     end;
 | |
|     getarg := g
 | |
|   end;
 | |
| 
 | |
| begin
 | |
|   start := 100;
 | |
|   step := 10;
 | |
|   if argc>1 then start := getarg(1);
 | |
|   if argc>2 then step := getarg(2);
 | |
|   if argc>3 then
 | |
|     writeln('Syntax : reseq <file1 >file2 start step : subsequent args ignored');
 | |
|   read(c);
 | |
|   numbered := (c in ['0'..'9']);
 | |
|   i := start;
 | |
|   while not eof do
 | |
|   begin
 | |
|     if numbered then
 | |
|       while c in ['0'..'9'] do
 | |
|         read(c);
 | |
|     number;
 | |
|     if not eof then
 | |
|       if  not eoln then read(c)
 | |
|   end
 | |
| end.
 |