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;
|
|||
|
|
|||
|
|