51 lines
1.4 KiB
Plaintext
51 lines
1.4 KiB
Plaintext
/******************************************************/
|
||
/* This program tests the procedure called GNT, which */
|
||
/* is a free-field scanner (parser) that reads a line */
|
||
/* of input and breaks it into individual parts. */
|
||
/******************************************************/
|
||
fscan:
|
||
procedure options(main);
|
||
%replace
|
||
true by '1'b;
|
||
declare
|
||
token character(80) varying
|
||
static initial('');
|
||
|
||
gnt:
|
||
procedure;
|
||
declare
|
||
i fixed,
|
||
line character(80) varying
|
||
static initial('');
|
||
|
||
line = substr(line,length(token)+1);
|
||
do while(true);
|
||
if line = '' then
|
||
get edit(line) (a);
|
||
i = verify(line,' ');
|
||
if i = 0 then
|
||
line = '';
|
||
else
|
||
do;
|
||
line = substr(line,i);
|
||
i = verify(line,'0123456789.');
|
||
if i = 0 then
|
||
token = line;
|
||
else
|
||
if i = 1 then
|
||
token = substr(line,1,1);
|
||
else
|
||
token = substr(line,1,i-1);
|
||
return;
|
||
end;
|
||
end;
|
||
end gnt;
|
||
|
||
do while(true);
|
||
call gnt;
|
||
put edit(''''!!token!!'''') (x(1),a);
|
||
end;
|
||
|
||
end fscan;
|
||
|
||
|