Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

ZTRAP

エラーを強制し、指定されたエラー・コードを表示します。

Synopsis

ZTRAP:pc ztraparg

ZTRAP:pc $ZERROR
ZTRAP:pc $ZE

引数

pc オプション — 後置条件式。
ztraparg オプション — エラー・コードの文字列。エラー・コードの文字列は、文字列リテラル、または文字列に評価される式として指定しますが、文字列の最初の 4 文字のみが使用されます。
$ZERROR 特殊変数 $ZERROR$ZE と省略できます。

概要

ZTRAP コマンドは、コマンド後置条件と引数間接指定の両方を受け入れます。ZTRAP には、以下の 3 つの形式があります。

  • 引数なし

  • 文字列引数付き

  • $ZERROR 付き

引数なしの ZTRAP はエラーを強制し、エラー・コード <ZTRAP> を表示します。

ZTRAP ztraparg はエラーを強制し、エラー・コード <Zxxxx> を表示します。xxxx は、ztraparg によって指定された文字列の最初の 4 文字です。引用符付きの文字列リテラルではなく式を指定した場合、コンパイラは式を評価して、結果の文字列の最初の 4 文字を使用します。式を評価するとき、Caché は、プラス符号と、先頭および末尾のゼロを数字から切り離します。ztraparg の残りすべての文字は無視されます。

ZTRAP $ZERROR は新しいエラーを強制しません。ZTRAP$ZERROR は現行のプログラム・スタック・レベルで実行を停止し、別のエラー・ハンドラが見つかるまでスタック・レベルをポップします。その後、現行のエラー・コードを使用して、そのエラー・ハンドラで実行を続行します。

引数

pc

オプションの後置条件式。Caché は、後置条件式が True (0 以外の数値に評価される) の場合にこのコマンドを実行します。Caché は、後置条件式が False (0 に評価される) の場合はコマンドを実行しません。詳細は、"Caché ObjectScript の使用法" の "コマンド後置条件式" を参照してください。

ztraparg

文字列リテラルまたは文字列に評価される式。ztraparg には、以下のいずれかの値を指定できます。

  • 任意の文字を含む任意の長さの引用符付き文字列。ZTRAP は最初の 4 文字のみを使用して、エラー・コードを生成します。文字列が 4 文字未満の場合は、指定されたすべての文字列が使用されます。常に大文字となるシステム・エラー・コードとは異なり、大文字/小文字は維持されます。以下にコード例を示します。

      ZTRAP "FRED"  ; generates <ZFRED>
      ZTRAP "Fred"  ; generates <ZFred>
      ZTRAP "Freddy"  ; generates <ZFred>
      ZTRAP "foo"  ; generates <Zfoo>
      ZTRAP " foo"  ; generates <Z foo>
      ZTRAP "@#$%"  ; generates <Z@#$%>
      ZTRAP ""  ; generates <Z>
      ZTRAP """"  ; generates <Z">
  • 文字列として評価される式。

      ZTRAP 1234  ; generates <Z1234>
      ZTRAP 2+2  ; generates <Z4>
      ZTRAP 10/3  ; generates <Z3.33>
      ZTRAP +0.700  ; generates <Z.7>
      ZTRAP $ZPI  ; generates <Z3.14>
      ZTRAP $CHAR(64)_$CHAR(37)  ; generates <Z@%>
      ZTRAP ""  ; generates <Z>
      ZTRAP """"  ; generates <Z">

ZTRAP コマンドは、引数間接指定を受け入れます。詳細は、"Caché ObjectScript の使用法" の "間接演算" を参照してください。

$ZERROR によるエラー・ハンドラへの制御渡し

ZTRAP の引数が特殊変数 $ZERROR のときは、$ZTRAP エラー・ハンドラ内で有効な特別な処理が実行されます。ZTRAP $ZERROR は新しいエラーを強制しません。ZTRAP $ZERROR は現行のプログラム・スタック・レベルで実行を停止し、別のエラー・ハンドラが見つかるまでスタック・レベルをポップします。その後、現行のエラー・コードを使用して、そのエラー・ハンドラで実行を続行します。このエラー・ハンドラは別のネームスペースにある場合があります。

制御をエラー・ハンドラに渡すこの方法は、従来の ZQUIT コマンドを使用するよりも推奨されます。

以下の例は、式で 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

関連項目

FeedbackOpens in a new tab