location
ブレークポイントやウォッチポイントの設定または設定解除を行う場合は、location 引数が必要です。この引数では、ブレークポイントまたはウォッチポイントの指定値の前に記号 (プラス、マイナス、またはマイナス-マイナス) が付く場合があります。記号とブレークポイントまたはウォッチポイントの指定値のさまざまな組み合わせがサポートされています。
-
*varname : ローカル変数。変数値が設定されるたびにウォッチポイントを確立します。先頭のアスタリスクは必須です。未定義のローカル変数にウォッチポイントを設定しても、エラーは発生しません。ウォッチポイントごとに、action、condition、または execute_code を任意で指定できます。これらの任意の引数は省略されることもありますが、指定された場合、もしくはスキップされた場合、必須のコロン・セパレータ (:) を指定する必要があります。
-
$ : シングル・ステップ・ブレークポイント。
-
ブレークポイントを指定するために label+offset^routine として指定される、行参照。label、+offset、および ^routine (この順番) の任意の組み合わせを指定できます。label はパブリックまたはプライベートのプロシージャで使用できます。label を省略すると、ブレークポイント位置は、ルーチンの先頭からのオフセットによりカウントされます (ZBREAK 文は、オフセット行としてカウントされます)。+offset を省略すると、ブレークポイント位置は、指定されたラベル行になります。^routine を省略すると、ブレークポイント位置は、現在ロードされているルーチン内にあるものと見なされます。^routine を使用することで、現在ロードされているルーチン以外のルーチン位置を指定できます。存在しないラベル、オフセット、ルーチンに対してブレークポイントを設定しても、エラーは発生しません。
ブレークポイントを設定するには、label+offset^routine:action:condition:execute_code のように、label+offset^routine 位置、および任意の引数として action、condition、execute_code を指定します。これらの任意の引数は省略できますが、引数をスキップする場合、必須のコロン区切り文字 (:) を指定する必要があります。
ZBREAK では、編集ポインタは移動しません。
location 引数の先頭に、指定された位置で既存のブレークポイントまたはウォッチポイントをどう処理するかを表す記号を任意で付けることができます。記号なし (設定)、マイナス記号 (無効化)、プラス記号 (再有効化)、または 2 つのマイナス記号 (削除) を指定できます。$ シングル・ステップ・ブレークポイントの前に記号を指定することもできます。存在しないブレークポイントまたはウォッチポイントを無効化、再有効化、または削除しようとすると、<COMMAND> エラーが発生します。
先頭の記号 |
意味 |
location |
location でブレークポイントまたはウォッチポイントを設定します。 |
–location#delay |
location でブレークポイントまたはウォッチポイントを無効化します。任意の #delay 整数は、終了する前にこのブレークポイントまたはウォッチポイントを無効化する反復回数を指定します。既定では、遭遇したブレークポイントまたはウォッチポイントをすべて無効化します。# 記号の前にスペースを入れることはできません。 |
+location |
location でブレークポイントまたはウォッチポイントを再び有効化します。 |
-–location |
location でブレークポイントまたはウォッチポイントを削除します。ブレークポイントとウォッチポイントをすべて削除するには、ZBREAK /CLEAR を使用します。 |
行参照 location には、コマンドとコマンドの間の位置を指定する必要があります。コマンド式の中に設定した変数を location として使用することはできません。このタイプの変数設定は、$DATA 関数、$ORDER 関数、および $QUERY 関数の target パラメータで見られます。
execute_code
実行される ObjectScript コード。このコードは、action が実行される前に実行されます。$TEST の値は、コードを実行する前に保存されます。コードの実行後、デバッグされたプログラムに存在する $TEST の値は復元されます。
execute_code は XECUTE コマンドによって内部で実行されます。XECUTE はパブリック変数にのみアクセスできます。しかし、execute_code に渡すパラメータを指定し、プライベート変数を XECUTE に渡すことができます。
XECUTE 引数には引用符付き文字列が含まれているため、ZBREAK execute_code 引数を使用してコードを渡すときには引用符を二重にする必要があります。これを正確に実施することが困難な場合があります。それに代わる手段として、ZBREAK コマンドを使用すれば、execute_code を引用符ではなく中括弧で囲むことができます。これにより、コードの中で引用符を二重にする必要がなくなります。例えば、変数 var の値を変更すると、この ZBREAK コマンドによってその新しい値が表示されます。値の表示に使用するコードは中括弧で囲みます。
ZBREAK *var:::{("(arg) WRITE ""now var="",arg,!",$GET(var,"<UNDEFINED>"))}
中括弧の代わりに引用符を使う場合に引用符を正しく二重にする最も簡単な方法は、まず実際の XECUTE コマンドとしてコードを書いたうえですべての引用符を二重にして、このコマンドに対応する ZBREAK execute_code を作成することです。
例えば、以前の ZBREAK コマンドを書くときに、引数 execute_code を中括弧ではなく引用符で囲むとします。まず、変数を表示する XECUTE コマンドを書きます。
XECUTE ("(arg) WRITE ""now var="",arg,!",$GET(var,"<UNDEFINED>"))
次に、それに相当する ZBREAK コマンドを書きます。XECUTE コードを最後の引数にコピーし、コードを引用符で囲み、コードの中の引用符を二重にします。
ZBREAK *var:::"(""(arg) WRITE """"now var="""",arg,!"",$GET(var,""<UNDEFINED>""))"