ZPRINTコマンドはその引数によって選択されたソースコード行が表示されます。
ZPRINTコマンドのフォーマットは:
ZP[RINT][:tvexpr][entryref[:label[+intexpr]][,...]
オプションでコマンド直後に続く真理値の式は、GT.Mがコマンドを実行するかどうかをコントロールする後置コマンドです。
引数のないZPRINTは、現在のルーチン全体または現在のトリガーを出力します。現在のルーチンは、ZSHOW "S" で表示されているように、呼び出しスタックの最上部に最も近いルーチンです; この場合は、行の次のコマンドから少なくとも2つのスペースを区切る必要があります。
オプションの entryref は、プリントを開始するためのルーチンの場所を指定します; entryref は ルーチン名(routinename) 、または、LABEL^ROUTINENAME or LABEL+OFFSET^ROUTINENAME で表されるラベル+ルーチン名形式のいずれかを含めることができます; もし entryref が routinename を含まない場合、カレントルーチンがZPRINTのデフォルトです。
entryref に続くオプションのラベルはプリントを停止する場所を識別します; オプションの整数式は、ラベルからのオフセットを指定します; ラベルとオフセットは共に lineref として呼ばれていて、この lineref は印刷する最終行を識別します; もしオフセットがラベルなしで指定されている場合は、 entryref がラベルを指定する場合であっても、オプションの lineref 内のオフセットは常にルーチンの先頭からカウントされます。
もしZPRINT引数がコロン(:) デリミタを含んでいる場合は、引数は、オプション lineref の少なくとも一つのコンポーネントを含んでいる必要があります。
もしZPRINTの引数が entryref だけを含んでいる場合、オプションの lineref とentryref のコンポーネントなしで、ラベルまたはオフセットを含んでいます、 ZPRINTはその entryref で発生している1行だけを表示します。
もし entryref が routinename だけを含んでいる場合、ZPRINTはルーチン全体を表示します。
もし entryref が トリガ名を含んでいる場合、ZPRINTはトリガコードを表示します。
もし entryref が routinename だけを含んでいて、引数がオプション lineref を含んでいる場合、ZPRINTはルーチンの先頭に表示を開始します。
もしオプション lineref が entryref 内で指定された lineref より前の行を指定する場合、ZPRINTはすべての行を表示しません。
もしオプション lineref の中のオフセットがルーチンの末尾を越える行が指定する場合、ZPRINTはルーチンの残りの部分が表示されます。
もし ZPRINTがルーチンを検索できない場合、または、もしラベルのどちらかがルーチン内に出現しない場合、ZPRINTはエラーを発行します。
間接指定演算子と1つ以上のZPRINTの引数リストに評価される原子式(expression atom)は、ZPRINTのための正当な引数を構成します。
コロン(:) デリミタの前に ルーチン名(routinename)だけが出現する可能性があることに注意してください。整数式のオフセットは、正または負のかもしれませんが、しかし、常にプラス記号(+)で区切る必要があります。
入口参照(entryref)の詳細については、 第5章:“Mの一般的な言語特徴” を参照してください。
例:
GTM>ZPRINT X^RTN
この例では、ルーチン RTN のラベル X で始まる行が表示されます。
例:
GTM>ZPRINT X^RTN:X+5 GTM>ZPRINT X+-5^RTN:X GTM>ZPRINT X^RTN:X+-5^RTN
最初の行は、ラベル X で始まる行とルーチンRTN の中の次の5行を表示します。2番目の行は、同じルーチンの中のラベル X に先行する5行とラベル X で始まる行を表示します。3番目の行は、ルーチン名が引数のコロンの前にのみ現れなければなりませんので、実行時エラーを生成します。
例:
GTM>zprint ^A#1# do ^test1 do stop^test2 GTM>
このコマンドは、トリガ名 A#1# のトリガコードを表示します。
ZPRINT ^x#/BREG : Print trigger routine user-named "x" in region BREG ZPRINT ^x#1#/BREG : Print trigger routine auto-named "x#1" in region BREG ZPRINT ^x#1#A/BREG : Print trigger routine auto-named "x#1", runtime disambiguated by "#A", AND in region BREG ZPRINT +1^x#1#A/BREG : Print line 1 of trigger routine auto-named "x#1", runtime disambiguated by "#A", AND in region BREG
これらは、曖昧さを回避する組み合わせのいくつかの例です。