すべてのアプリケーションは、その内部で発生するすべての例外を処理し、「通常」制御を、呼び出し側プログラムに戻すことができる必要があります。 PL/I 例外処理機能および ANYCONDITION ON ユニットを使用すると、これが可能になります。
非 PL/I ルーチンから呼び出される PL/I ルーチンにおける最初の実行可能ステートメントは、ON ANYCONDITION ステートメントでなければなりません。このステートメントには、他の ON ユニットによって明示的に処理されないすべての状態を処理するコードが含まれている必要があります。 処理できない状態が発生する場合は、ルーチンで正常に実行される最後のステートメントを 指し示す GOTO ステートメントを使用します。例えば、次のようになります。
pliapp:
proc( p1, ..., pn )
returns( ... )
options( fromalien );
/* declarations of paramaters, if any */
/* declarations of other variables */
on anycondition
begin;
/* handle condition if possible */
/* if unhandled, set return value */
goto return_stmt;
end;
/* mainline code */
return_Stmt:
return( ... );
end_stmt:
end pliapp;
関数でない PL/I ルーチンの場合、GOTO のターゲットは、ルーチンの END ステートメント でなければなりません。