ZPRINT (ObjectScript)
構文
ZPRINT:pc lineref1:lineref2
ZP:pc lineref1:lineref2
引数
引数 | 説明 |
---|---|
pc | オプション — 後置条件式。 |
lineref1 | オプション — 表示される行、もしくは表示される行の範囲の最初の行。リテラルとして指定します。ラベル名、数値オフセット (+n)、またはラベル名と数値オフセットのいずれかになります。省略した場合、現在のルーチン全体が表示されます。 |
:lineref2 | オプション — 表示される行の範囲の最後の行。リテラルとして指定します。範囲を指定するには、lineref1 を指定する必要があります。 |
概要
ZPRINT コマンドは、現在ロードされているルーチンからコードの行を表示します。ルーチンをロードするには、ZLOAD を使用します。ZLOAD は、ルーチンの INT コード・バージョンをロードします。現在のルーチンの名前については、$ZNAME 特殊変数にアクセスします。
出力は、現在のデバイスに送られます。ターミナルから呼び出した場合、現在の出力デバイスは既定でターミナルになります。現在のデバイスは、USE コマンドで設定できます。現在のデバイスのデバイス ID については、$IO 特殊変数にアクセスします。
ZPRINT は、ルーチンの INT コード・バージョンを表示します。INT コードではプリプロセッサ文はカウントされず、含まれることもありません。ルーチンの MAC バージョンの完全な空白行は、ソース・コード内にあっても、複数行コメント内にあっても、コンパイラによって削除されます。したがって、INT ルーチンには表示もカウントもされません。このため、ZPRINT では、MAC ルーチン内の以下の複数行コメントは、3 行ではなく 2 行で表示およびカウントされます。
/* This comment includes
a blank line */
MAC コード内のコメント #;、##;、および /// は、INT コードには表示されないことがあるため、行数やオフセットに影響が生じる場合があります。詳細は、"MAC コードのルーチンおよびメソッドに使用するコメント" を参照してください。
ZPRINT で、編集ポインタを出力した行の末尾に設定します。例えば、ZPRINT の次に ZINSERT " SET y=2" を指定すると、行がルーチンの末尾に挿入されます。また、ZPRINT +1:+4 の次に ZINSERT " SET y=2" を指定すると、行が第 5 行として挿入されます。$TEXT 関数は、現在のルーチンから 1 行を出力しますが、編集ポインタは変更しません。
ZPRINT には、以下の 2 つの形式があります。
-
引数なし
-
引数付き
引数なしの ZPRINT は、現在ロードされているルーチンのすべてのコードの行を表示します。
引数付きの ZPRINT は、指定されたコードの行を表示します。ZPRINT lineref1 は、lineref1 によって指定された行を表示します。ZPRINT lineref1:lineref2 は、lineref1 から lineref2 まで (両端を含む) の行を表示します。
lineref 引数は、ルーチンの INT コード・バージョンを使用して、行および行オフセットをカウントします。ソース (MAC) バージョンに対応する行および行オフセットを正しくカウントするために、ルーチンの変更後、ZPRINT のルーチンを再コンパイルする必要があります。
$TEXT 関数を使用して、単一の INT コード行を返すことができます。
引数
pc
オプションの後置条件式。InterSystems IRIS は、後置条件式が True (0 以外の数値に評価される) の場合に ZPRINT コマンドを実行します。InterSystems IRIS は、後置条件式が False (0 に評価される) の場合はコマンドを実行しません。詳細は、"コマンド後置条件式" を参照してください。
lineref1
印刷する行、または表示や印刷する行の範囲の最初の行。以下のいずれかの構文形式で指定できます。
-
+offset : offset は、現在のルーチンの行番号を指定する正の整数です。+1 はルーチンの最初の行であり、ラベル行とすることもできます。+0 は常に空の文字列を返します。
-
label[+offset] : label はルーチン内のラベルであり、offset はこのラベルからカウントする行数となります (ラベル自体の offset は 0 としてカウント)。offset オプションを省略、または label+0 と指定すると、InterSystems IRIS はラベル行を印刷します。label+1 は、ラベルの後の行を出力します。
ラベルは、31 文字よりも長くすることができますが、最初の 31 文字は一意である必要があります。ZPRINT は、指定された label の最初の 31 文字のみと一致します。ラベル名では大文字と小文字が区別され、Unicode 文字を含めることができます。
lineref2
表示される範囲の最後の行。lineref1 と同じ方法で指定します。lineref2 を指定するには、lineref1 を指定する必要があります。lineref1 および lineref2 はコロン (:) 記号で区切ります。コロンと lineref2 の間に空欄を入れることはできません。
lineref2 に、行のシーケンス内で lineref1 よりも前のラベルまたはオフセットが指定されている場合、ZPRINT は lineref2 を無視して、lineref1 で指定される単一のコード行を表示します。
lineref2 に、存在しないラベルまたはオフセットが指定されている場合、ZPRINT は、lineref1 からルーチンの最後までを表示します。
例
以下のコード行が与えられた場合を示します。
AviationLetters
Abc
WRITE "A is Abel",!
WRITE "B is Baker",!
WRITE "C is Charlie",!
Def WRITE "D is Delta",!
WRITE "E is Epsilon",!
/* Not sure about E */
WRITE "F is Foxtrot",!
lineref 引数なしの ZPRINT は、コメント行を含めて、9 行すべてを表示します。
ZPRINT +0 は、空の文字列を表示します。
ZPRINT +1 は、ラベル AviationLetters を表示します。
ZPRINT +8 は、コメント行 /* Not sure about E */ を表示します。
ZPRINT +10 は、空の文字列を表示します。
ZPRINT Def または ZPRINT Def+0 は、行 Def WRITE "D is Delta",! を表示します。これは、実行可能なコードも含むラベル行です。
ZPRINT Def+1 は、行 WRITE "E is Epsilon",! を表示します。
範囲の例
ZPRINT +0:+3 は、空の文字列を表示します。
ZPRINT +1:+3 は、最初の 3 行を表示します。
ZPRINT +3:+3 は、3 行目を表示します。
ZPRINT +3:+1 は、3 行目を表示します。lineref2 は無視されます。
ZPRINT +3:Abc+1 は、3 行目を表示します。lineref1 と lineref2 はともに同一行を指定しています。
ZPRINT +3:abc+1 は、3 行目からルーチンの最後までを表示します。行ラベルは大文字と小文字が区別されるので、範囲の端点が判別されません。
ZPRINT Abc+1:+4 は、3 行目と 4 行目を表示します。
ZPRINT Abc+1:Abc+2 は、3 行目と 4 行目を表示します。
ZPRINT Abc:Def は、2、3、4、5、および 6 行目を表示します。
ZPRINT Abc+1:Def は、3、4、5、および 6 行目を表示します。
ZPRINT Def:Abc は、行 Def WRITE "D is Delta",! を表示します。lineref2 はコード内で先に出現しているので、無視されます。