BREAKコマンドは、コードの実行を一時停止し、ダイレクトモードを開始します。
BRAKEコマンドのフォーマットは:
B[REAK][:tvexpr] [expr[:tvexpr][,...]]
オプションでコマンド直後に続く真理値の式は、GT.Mがコマンドを実行するかどうかをコントロールする後置コマンドです。
オプションの式は、プロセスがダイレクトモードに入る前に、XECUTEへGT.Mコードのフラグメンテーションを含んでいます。
引数なしでのBREAKコマンドは、ルーチンのコードの実行を一時停止し、すぐにダイレクトモードを開始します。このケースでは、行の中で次のコマンドと区別するために、BREAKに続き少なくとも2つのスペースが必要です。
式の直後のオプションの真理値式は、GT.M XECUTEの引数かどうかをコントロールする後置条件引数です。もし現れて true の場合、プロセスはダイレクトモードに入る前にコードを実行します。もし現れて false の場合、プロセスはダイレクトモードに入る前にコードを実行しません。
もし後置条件の引数が存在し true の場合、プロセスはコードの実行を一時停止し、XECUT する引数の前と後で、ダイレクトモードを開始します。
間接指定演算子と1つ以上のBREAKの引数リストに評価される原子式(expression atom)は、BREAKのための正当な引数を構成します。
Mトランザクション内でBREAKコマンドを発行すると、そのトランザクションのアイソレーションを破壊します。GT.Mがトランザクション処理を実装する方法のために、トランザクション内のBREAKは、トランザクションが再起動の無限数を("ライブロック:live lock ")を低下させる可能性があります。
一般的に、プロダクション(本番)のプログラムは、BREAKコマンドを含めることはできません。したがって、GT.Mは、ソースコードではなくプロセスに一時的なブレークポイントを挿入するZBREAKとZSTEPのコマンドを提供しています。イメージが終了するまで、または、明示的に別のZBREAKコマンドによって削除されるまでは、ZBREAKが挿入されたBREAKが唯一の存在です。ZSTEPコマンドの実行のためにのみ存在するイメージの中で、ZSTEPもまた、一時的なBREAKを挿入します。GT.Mのデバッグ環境では、BREAKを挿入するZBREAKとZSTEPは、ルーチンに直接BREAKをコーディングするよりも、ブレークポイントの設定で、より柔軟でよりエラーを起こしにくい手段を提供します。ZBREAKとZSTEPの詳細については、これらのコマンドを記述するセクションを参照してください。プロダクション(本番)を目的とするコード内の任意のBREAKコマンドは、プロダクションにFALSEである何かに条件を付けるべきですが、ZBREAKコマンドとは異なり、GT.Mは、BREAKコマンドを "オフ:turn off" にするに手段が現在ありません。
ZCONTINUEは、割り込みプログラムの実行を再開します。
GT.M は BREAKのソースを識別するメッセージを表示します:
プログラム本体 (The body of a program)
ZBREAKのアクション( A ZBREAK action )
デバイスのEXCEPTION(例外) (A device EXCEPTION )
ZSTEPアクション ( A ZSTEP action )
VIEW "BREAKMSG" マスクは、これらのメッセージを選択的に有効または無効にします。 マスクの説明については、 “View”を参照してください。 デフォルトでは、GT.Mイメージを実行するプロセスはすべてのBREAKメッセージを表示します。
プロセスがBREAKを検出すると、それはダイレクトモードでコマンドを処理するためのプロンプトを示す準備が表示されます。デフォルトでは、ダイレクトモードでは、GTM>プロンプトが表示されます。$ZPROMPT 特殊変数をSETは、プロンプトを変更できます。
例:
LOOP0 F S act=$O(^act(act)) Q:act="" B:debug D LOOP1
FORループは、コマンドの後置条件を持つBREAKが含まれています。
例:
GTM>ZPRINT ^br br; kill for i=1:1:3 do break; quit break; write "Iteration ",i,?15,"x=",$get(x,"<UNDEF>"),! break:$data(x) "write ""OK"",!":x,"write ""Wrong again"",!":'x set x=$increment(x,$data(x)) quit GTM>DO ^br Iteration 1 x=<UNDEF> Iteration 2 x=0 %GTM-I-BREAK, Break instruction encountered At M source location break+2^br GTM>ZCONTINUE Wrong again %GTM-I-BREAK, Break instruction encountered At M source location break+2^br GTM>ZCONTINUE Iteration 3 x=1 OK %GTM-I-BREAK, Break instruction encountered At M source location break+2^br GTM>ZCONTINUE %GTM-I-BREAK, Break instruction encountered At M source location break+2^br GTM>ZCONTINUE GTM>
これは、コマンドと引数の後置条件の両方を持つBREAKを使用しています。アクションには、デバッグメッセージを表示します。