Skip to main content

(従来) ^%ETN を使用したエラー・ログ

古い形式のエラー・ログでは、^%ETN ユーティリティを使用します。これについて、ここでは参考用に説明します。

^%ETN ユーティリティは、例外をアプリケーション・エラー・ログに記録した後、終了します。^%ETN (またはそのエントリ・ポイントのいずれか) をユーティリティとして呼び出すことができます。

  DO ^%ETN

または、$ZTRAP 特殊変数を ^%ETN (またはそのエントリ・ポイントのいずれか) に等しく設定することができます。

  SET $ZTRAP="^%ETN"

^%ETN またはそのエントリポイントのいずれかを指定できます。

  • FORE^%ETN (フォアグラウンド) は、例外を標準アプリケーション・エラー・ログに記録した後、HALT によって終了します。これは、ロールバック処理を起動します。これは、^%ETN と同じ処理です。

  • BACK^%ETN (バックグラウンド) は、例外を標準アプリケーション・エラー・ログに記録した後、QUIT によって終了します。これは、ロールバック処理を起動しません。

  • LOG^%ETN は、例外を標準アプリケーション・エラー・ログに記録した後、QUIT によって終了します。これは、ロールバック処理を起動しません。この例外は、標準の %Exception.SystemExceptionOpens in a new tab またはユーザ定義の例外です。

    例外を定義するには、LOG^%ETN を呼び出す前に $ZERROR を意味のある値に設定します。この値は、ログ・エントリのエラー・メッセージ・フィールドとして使用されます。ユーザ定義の例外を直接 LOG^%ETN: DO LOG^%ETN("This is my custom exception") に指定することもできます。この値は、ログ・エントリのエラー・メッセージ・フィールドとして使用されます。$ZERROR を NULL 文字列に設定すると (SET $ZERROR="")、LOG^%ETN は <LOG ENTRY> エラーを記録します。$ZERROR を <INTERRUPT> に設定すると (SET $ZERROR="<INTERRUPT>")、LOG^%ETN は <INTERRUPT LOG> エラーを記録します。

    LOG^%ETN は、$HOROLOG 日付とエラー番号の 2 つの要素を持つ %List 構造を返します。

以下の例では、$ZERROR を変数に即座にコピーするお勧めのコーディング方法を使用しています。LOG^%ETN は %List 値を返します。

  SET err=$ZERROR
  /* error handling code */
  SET rtn = $$LOG^%ETN(err)
  WRITE "logged error date: ",$LIST(rtn,1),!
  WRITE "logged error number: ",$LIST(rtn,2)

LOG^%ETN または BACK^%ETN を呼び出すと、使用可能なプロセス・メモリが自動的に増加し、処理が実行されて、$ZSTORAGE の元の値がリストアされます。ただし、<STORE> エラーの発生後に LOG^%ETN または BACK^%ETN を呼び出した場合、$ZSTORAGE の元の値をリストアすることによって別の <STORE> エラーがトリガされる可能性があります。このため、<STORE> エラーに対してこれらの ^%ETN エントリ・ポイントが呼び出された場合は、増加した使用可能メモリが維持されます。

FeedbackOpens in a new tab