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

