(従来) ^%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 エントリ・ポイントが呼び出された場合は、増加した使用可能メモリが維持されます。