トリガ定義を検査またはロードします。$ZTRIGGER() 関数の書式は次のとおりです:
$ZTRIgger(expr1
[,expr2
])
$ZTRIGGER() は、指定されたアクションの成功に応じて真理値(1または0)を返します。
$ZTRIGGER() は、MUPIP TRIGGERによって実行されるのと同様のトリガ・メンテナンス・アクションを実行します。
expr1
が、大文字小文字を区別しない "FILE" に評価された場合、$ZTRIGGER() は、expr2
をトリガ定義ファイルの場所として評価します。次に、expr2
で指定されたファイルにトリガー定義を適用します。ファイルに delete all (-*) が含まれている場合、そのアクションはユーザーの確認を生成しません。
expr1
が大文字小文字を区別しない "ITEM" と評価された場合、$ZTRIGGER() は expr2
を単一行または複数行のトリガ定義エントリとして評価します。複数行のトリガ定義または複数行のXECUTE文字列は、<<で始まり、$char(10) を使用して改行記号の区切りを表します。ITEMを使用した expr2
では、複数行のXECUTE文字列を >> ターミネータで終了することはできません。-xecute=<< の直後にトリガ・ロジックを表示する必要はありませんが、$char(10) は、次の例に示すようにロジックの前に付ける必要があります。
set trigstr="+^a -xecute=<< -commands=S"_$char(10)_" do ^twork1"_$char(10)_" do ^twork2"_$char(10) write $ztrigger("item",trigstr) set trigstr="+^a -xecute=<< -commands=S "_$c(10)_" do ^twork1"_$c(10)_" do ^twork2"_$c(10) write $ztrigger("item",trigstr)
expr1
が大文字小文字を区別しない "SELECT" に評価された場合、$ZTRIGGER() はオプションの expr2
をトリガ名または名前ワイルドカードとして評価し、その出力を$IOに送ります。FALSEの結果(0)は、一致するトリガがないことを示します。
$ZTRIGGER() は、作業をカプセル化するために暗黙的に作成する必要がある場合でも、常にTPトランザクション内で動作します。トリガ・メンテナンス操作は、トランザクションがコミットするまで出力を予約します($TLEVELが0になるTCOMMIT)、その時点で、最終的なTCOMMITでのより大きなトランザクションの処理に成功したすべての $ZTRIGGER() 呼び出しの一貫性のある情報を含む現在の $IO に出力全体を配信します。明示的なトランザクションがTROLLBACKで終了する場合、$ZTRIGGER() 出力は生成されません。
$ZTRIGGER() は、同じトランザクションで以前に起動されたトリガを持つグローバルのトリガを更新しない限り、トランザクション内に現れることができます。
トランザクション内で$ZTRIGGER() がトランザクション内でトリガーを削除または置換しようとすると、トランザクションが名前付きグローバル内で定義されたトリガをアクティブにした後にTRIGMODINTPエラーが生成されます。
$ZTRIGGER() は、存在しないトリガの削除を成功として扱います; これが唯一の操作または一連の正常な操作の1つであれば、成功(TRUE / 1)をGT.Mプロセスに返します。$ZTRIGGER() は、ポンド記号(#)の後の数字が0(自動生成された不可能なトリガー名)で始まるトリガ名を使用してトリガを選択した場合に、失敗を返します。
GT.Mはトリガ定義を適用する領域にマップします。
GT.Mでは、異なる領域内で同じ名前と署名を持つトリガを定義できますが、同じグローバル・ディレクトリ内の異なる領域では同じ名前で、署名が異なるトリガを定義することはできません。トリガ定義をロードするときに、ユーザー定義の名前がトリガが適用される任意の領域の名前と競合すると、$ZTRIGGER() はエラーを報告します。ただし、名前が自動生成されると、すべての領域に名前が生成されるため、複数の(スパニングする)領域が存在する場合、同じトリガにはそれぞれの領域で異なる自動生成名が設定されます。
注意 | |
---|---|
$ZTRIGGER() アクション(削除または選択)は、指定された署名と一致するすべての領域内のすべてのトリガに適用されます。引数が不完全なトリガ・シグネチャ、たとえば名前のみを指定する場合、仕様は複数のトリガと一致し、それらのすべてにトリガまたは選択を適用できます。FISでは、署名の範囲を選択して分析する前に、その署名の範囲を選択して分析することをお勧めします。 |
例:
GTM>set X=$ztrigger("S") GTM>
この例では、データベースに格納されている現在のトリガ定義を表示します。
GTM>set X=$ztrigger("i","+^Acct(sub=:) -command=set -xecute=""set ^X($ztvalue)=sub""") GTM>
この例では、^Acct.
の最初のレベルノードのトリガ定義を追加します。
例:
GTM>set trigstr="+^a -commands=S -xecute=<<"_$c(10)_" do ^twork1"_$c(10)_" do ^twork2"_$c(10) write $ztrigger("item",trigstr)
この例では、$ztrigger("ITEM",<multi-line-trigger-definition>) の使い方を示します。ここで、<< は、複数行 -XECUTE文字列の定義を表し、$c(10) は改行文字区切り文字を表します。$ztrigger("FILE") 形式とは異なり、$ztrigger( "ITEM"、<multi-line-trigger-definition >) はトリガ定義を、>> で終了する必要はありません。
例:
GTM>write $ztrigger("file","agbl.trg") 1 GTM>
この例は、以前の $ztrigger( "ITEM") の例と同じです。この例では、agbl.trg に次のマルチ・ライン・トリガ定義が含まれています。
+^a -commands=S -xecute=<< do ^twork1 do ^twork2 >>
$ztrigger("ITEM") とは異なり、$ztrigger("FILE") の使用法では、トリガ定義を終了する必要があります>>