34 lines
768 B
Plaintext
34 lines
768 B
Plaintext
|
/******************************************************/
|
|||
|
/* This program is nonfunctional. Its purpose is to */
|
|||
|
/* illustrate how PL/I executes the ON and REVERT */
|
|||
|
/* statements. */
|
|||
|
/******************************************************/
|
|||
|
auto_revert:
|
|||
|
procedure options(main);
|
|||
|
declare
|
|||
|
i fixed,
|
|||
|
sysin file;
|
|||
|
|
|||
|
do i = 1 to 10000;
|
|||
|
call p(i,exit);
|
|||
|
exit:
|
|||
|
end;
|
|||
|
|
|||
|
P:
|
|||
|
procedure (index,lab);
|
|||
|
declare
|
|||
|
(t, index) fixed,
|
|||
|
lab label;
|
|||
|
|
|||
|
on endfile(sysin)
|
|||
|
goto lab;
|
|||
|
|
|||
|
put skip list(index,':');
|
|||
|
get list(t);
|
|||
|
if t = index then
|
|||
|
goto lab;
|
|||
|
end P; /* implicit REVERT supplied here */
|
|||
|
|
|||
|
end auto_revert;
|
|||
|
|
|||
|
|