49 lines
1.6 KiB
Plaintext
49 lines
1.6 KiB
Plaintext
|
/******************************************************/
|
|||
|
/* This program demonstrates PL/I character string */
|
|||
|
/* processing by turning a negative sentence into a */
|
|||
|
/* positive one. */
|
|||
|
/******************************************************/
|
|||
|
optimist:
|
|||
|
procedure options(main);
|
|||
|
%replace
|
|||
|
true by '1'b,
|
|||
|
false by '0'b,
|
|||
|
nwords by 5;
|
|||
|
declare
|
|||
|
negative (1:nwords) character(8) varying static initial
|
|||
|
(' never',' none',' nothing',' not',' no'),
|
|||
|
positive (1:nwords) character(10) varying static initial
|
|||
|
(' always',' all',' something','',' some'),
|
|||
|
upper character(28) static initial
|
|||
|
('ABCDEFGHIJKLMNOPQRSTUVWXYZ. '),
|
|||
|
lower character(28) static initial
|
|||
|
('abcdefghijklmnopqrstuvwxyz. '),
|
|||
|
sent character(254) varying,
|
|||
|
word character(32) varying,
|
|||
|
(i,j) fixed;
|
|||
|
|
|||
|
do while(true);
|
|||
|
put skip list('What''s up? ');
|
|||
|
sent = ' ';
|
|||
|
do while
|
|||
|
(substr(sent,length(sent)) ^= '.');
|
|||
|
get list (word);
|
|||
|
sent = sent !! ' ' !! word;
|
|||
|
end;
|
|||
|
sent = translate(sent,lower,upper);
|
|||
|
if verify(sent,lower) ^= 0 then
|
|||
|
sent = ' that''s an interesting idea.';
|
|||
|
do i = 1 to nwords;
|
|||
|
j = index(sent,negative(i));
|
|||
|
if j ^= 0 then
|
|||
|
sent = substr(sent,1,j-1) !!
|
|||
|
positive(i) !!
|
|||
|
substr(sent,j+length(negative(i)));
|
|||
|
end;
|
|||
|
put list('Actually,'!!sent);
|
|||
|
put skip;
|
|||
|
end;
|
|||
|
|
|||
|
end optimist;
|
|||
|
|
|||
|
|