概要
ZTRAP コマンドは、コマンド後置条件と引数間接指定の両方を受け入れます。ZTRAP には、以下の 3 つの形式があります。
引数なしの ZTRAP はエラーを強制し、エラー・コード <ZTRAP> を表示します。
ZTRAP ztraparg はエラーを強制し、エラー・コード <Zxxxx> を表示します。xxxx は、ztraparg によって指定された文字列の最初の 4 文字です。引用符付きの文字列リテラルではなく式を指定した場合、コンパイラは式を評価して、結果の文字列の最初の 4 文字を使用します。式を評価するとき、InterSystems IRIS は、プラス符号と、先頭および末尾のゼロを数字から切り離します。ztraparg の残りすべての文字は無視されます。
ZTRAP $ZERROR は新しいエラーを強制しません。ZTRAP$ZERROR は現行のプログラム・スタック・レベルで実行を停止し、別のエラー・ハンドラが見つかるまでスタック・レベルをポップします。その後、現行のエラー・コードを使用して、そのエラー・ハンドラで実行を続行します。
例
以下の例は、式で ZTRAP コマンドを使用して、エラー・コードを生成する方法を示したものです。
; at this point the routine discovers an error ...
ZTRAP "ER23"
...
ルーチンが実行され、予想されたエラー条件が発見されたら、出力は以下のようになります。
<ZER23>label+offset^routine
以下の例は、後置条件を使用すると ZTRAP コマンドにどのような影響を与えるかを示しています。
;
ZTRAP:y<0 "yNEG"
;
ルーチンが実行され、y が負数である場合、出力は以下のようになります。
<ZyNEG>label+offset^routine
以下の例は、ZTRAP コマンドの引数間接指定をどのように使用するかを示したものです。
;
SET ERPTR="ERMSG"
SET ERMSG="WXYZ"
;
;
ZTRAP @ERPTR
出力は、以下のようになります。
<ZWXYZ>label+offset^routine
以下の例は、前のコンテキスト・レベルで定義された $ZTRAP エラー・トラップ・ハンドラを起動する ZTRAP コマンドを示します。
Main
NEW $ESTACK
SET $ZTRAP="OnErr"
WRITE !,"$ZTRAP set to: ",$ZTRAP
WRITE !,"Main $ESTACK= ",$ESTACK // 0
WRITE !,"Main $ECODE= ",$ECODE," $ZERROR=",$ZERROR
DO SubA
WRITE !,"Returned from SubA" // not executed
WRITE !,"MainReturn $ECODE= ",$ECODE," $ZERROR=",$ZERROR
QUIT
SubA
WRITE !,"SubA $ESTACK= ",$ESTACK // 1
ZTRAP
WRITE !,"SubA $ECODE= ",$ECODE," $ZERROR=",$ZERROR
QUIT
OnErr
WRITE !,"OnErr $ESTACK= ",$ESTACK // 0
WRITE !,"OnErr $ECODE= ",$ECODE," $ZERROR=",$ZERROR
QUIT