ZWRITEコマンドは、1つ以上のローカル変数、エイリアス変数、またはグローバル変数の現在値を表示します。ディスプレイ内の各項目が SET @ コマンドに有効な引数をフォーマットするように、 ZWRITEはその出力をフォーマットします。これは、ZWRITEが引用符で文字列値を囲み、$CHAR() シンタックスの非グラフィック(制御)文字を表すことを意味します。
ZWRITEコマンドのフォーマットは:
ZWR[ITE][:tvexpr] [zwrglvn[,...]]
オプションでコマンド直後に続く真理値の式は、GT.Mがコマンドを実行するかどうかをコントロールする後置コマンドです。
オプションのグローバルまたはローカル変数名は、表示するZWRITEための変数を指定します。
ZWRITEは、添字の代わりにいくつかの代替シンタックスを受け入れます。ZWRITEはまた、グローバルにネイキッド参照を指定する引数を受け入れます。 ZWRITEは、主にデバッグ用のツールなので、ZWRITEはネイキッドインジケータには影響しません。
ZWRITEはその引数に null 添字を受け入れ、これらが許可される時に、null 添字を持つ配列ノードをレポートします。
引数なしZWRITEは、現在利用可能なすべてのローカル変数が表示されますが、この場合は、行の中で次のコマンドと区別するために、コマンドに続き少なくとも2つのスペースが必要です。
もし指定されたグローバルまたはローカル変数名が添字なしの場合は、ZWRITEは、添字なし変数とすべての添字付き下位ノードが表示されます。
もしアスタリスク(*)が添字つき変数名の最後の添字によって占有された通常のスペースで表示されている場合、ZWRITEは、以前に指定された添字から下位ノードのすべての変数ノードを表示します。
ZWRITEは、変数名と添字の両方の代わりにGT.Mパターンマッチのシンタックスを受け入れます。
<name>がローカルかグローバルであるZWRITE <name>() は、ZWRITE <name>の同義語として扱われます。
コロンは、添字の値の演算子の範囲として作用します。ZWRITEは、コロンの左側の値で始まる変数とコロンの右側の値で終わる変数のすべての添字が表示されます。もし範囲の区切りが左側に値をも持たない場合、または、左側の値として空の文字列を持つ場合、表示は最初の添字から始まます。もし範囲の区切りが右側の値を持たない、または、右側の値として空の文字列を持つ場合は、表示はそのレベルの最後の添字で終了します。もし範囲区切りがどちらの側も値を持たずまたは空の文字列を持つ場合、ZWRITEはそのレベルのすべての添字を表示します。空の添字レベルでもそのレベルのすべての添字が表示されます。
間接指定演算子と1つ以上のZWRITEの引数リストに評価される原子式(expression atom)は、ZWRITEのための正当な引数を構成します。
長いZWRITE形式のレコードをロードすることができます。
ローカル変数に適用されているようなZWRITEとZSHOW "V" は、2つの違いとして、概念的に類似しています:
ZWRITEは表示する変数と添字を指定するパターンの使用を許可するのに対し、ZSHOW "V" はすべてのローカル変数に適用されるます。
ZSHOW "V" は、オプションでグローバルまたはローカル変数へ指示するための出力を許可するのに対し、ZWRITEは常に現在の出力デバイスにその出力を指示します。
ZWRITEとZSHOW "V" は、ZWRITEフォーマットで、エイリアス変数、エイリアスのコンテナの変数、以下の説明される関連データの値をダンプします。 ZWRITEフォーマットでは、配列の内容は、名前の辞書順で最初に現れる配列に関連付けられている名前で表示されます。GT.Mは、もしあれば、添字なしの値に表記上のスペースとセミコロンとアスタリスク(" ;* ") のシーケンスを追加しする、添字なしと添字付きの両方のノードと値を表示します。ZWRITE形式の出力は、ループ内で実行されるコマンド READ x と Set @ x(xは任意の名前)でGT.Mプロセスに読み込むことができます。 " ;* " は、SETコマンドによって無視されたコメントとして作用します。次の例では、AとCが同じ配列に関連付けられているエイリアスであるため、その配列のノードは、値がCに割り当てられていたにもかかわらず、Cの前に辞書的に発生するAで出力されます。
GTM>Set C=1,C("Malvern")="Wales",*A=C,*B(-3.14)=C GTM>ZSHow "V" ; ZWRite would produce the same output A=1 ;* A("Malvern")="Wales" *B(-3.14)=A *C=A GTM>ZWRite C ; Only one is name associated with the array on this ZWRite command C=1 ;* C("Malvern")="Wales" GTM>
この例に続いて、もしZWRITEコマンド用に選択された変数がエイリアス変数に関連付けられているいずれかが含まれていない場合、出力はデータではなくリファレンスのみ示しています。
GTM>ZWRITE B ; B only has a container *B(-3.14)=A GTM>
ZWRITE / ZSHOW "V" が、現在ないエイリアス変数で配列のためのエイリアスのコンテナを検出する時、n は任意のユニークな整数であるその配列のための変エイリアス数の架空の名前として 変数名 $ZWRTACnを使用しています。 SETコマンドは、このように、関連付けられているエイリアス変数を使用せずにエイリアスコンテナを再作成するために使用されるZWRITE/ ZSHOW "V"の出力を可能にしている、この特別な名前を認識します。上記の例を続けると:
GTM>Kill *A,*C ; Delete alias variables and associations, leaving only the container GTM>ZWRite $ZWRTAC="" *B(-3.14)=$ZWRTAC1 $ZWRTAC1=3 ;* $ZWRTAC1("Malvern")="Wales" $ZWRTAC="" GTM>
ZWRITEは、SET @ がsetの左側の有効なターゲットとして受け付ける、データセルのアンカーとして機能するように$ZWRTACn の名前を生成します。 $ZWRTACn の名前が作成され、そして、以前にキャプチャされた変数の状態の復元を駆動するZWRITEの出力を使用するときに破棄されます。 ZWRITE出力が出現するそれらを除き、そして、左側の SET @ ターゲットのようなものは、何も機能を持ちません。SET以外に、それらシンタックスで$ZWRTAC *を使用可能な他のコマンドはありません。 $ZWRTACnは表面的には特殊変数(ISV)のように見えますが、それらは ISV ではありません。添字なし$ZWRTACnは、SET * コマンドのターゲット(等号記号の左側)として機能できます。SET $ZWRTAC(末尾の整数なし)は、$ZWRTAC 接頭辞エイリアスに関連付けられたすべてのデータセルを削除します。 GT.Mは大文字の非省略名と接頭辞$ZWRTACを認識だけします。
ZWRITEはエイリアス変数の値を表示する時、SET @へ引数としてZWRITE出力の使用に干渉することなく視覚的にエイリアスにタグ付けする名前のために ";*" を表します。同じデータのために少なくとも2つのエイリアスがその引数に一致するときに、ZWRITEは、唯一エイリアス変数を識別することができます。 ZWRITEが現在関連付けられているエイリアスがないエイリアスのコンテナ変数を検出する時、データを公開するZWRTACメカニズムを使用します。SET @ は、ZWRTACメカニズムで公開されたデータを復元することができます。
注意 | |
---|---|
独自の $ZWRTACn "変数" を作成や操作をしないことをFISは強く推奨します。それらはエイリアス変数とコンテナを実装するためにサポートされる機能の一部ではなく、むしろ、GT.Mのユーザであるあなたに見える形の基本の実装の一部です。 FISは、それ自身の便宜のためにいつでも、GT.Mの$ZWRTACの使用を任意に変更することができます。ZWRITEとZSHOW "V"の出力ではそれらが表示される場合があるので、それらは、ここでしか文書化されます。 |
例:
GTM>ZWRITE ^?1"%"2U(0:":",)
このコマンドは、"%" で始まり2つの大文字の2文字を持っている、全てのグローバル名の0から ":" までのすべての添字の下位ノードを表示します - たとえば、"%AB"。
例:
GTM>ZWRITE A(,:,3)
このコマンドは、ローカル変数 A の3の添字で3番目のレベルのすべてのノードを表示します。
例:
ZWRITE ?1"A".E(?1"X"3N)
これは、必要に応じて任意の文字が続く"A" で始まり、次に"X"で始まり3つの数字が続く添字を持っている、いずれかのローカル変数のデータが表示されます。
例:
GTM>Set A=1,*B=A ; Create an array and an alias association GTM>ZWRite ; Show that the array and association exist A=1 ;* *B=A