ZWRITE
Synopsis
ZWRITE:pc expression,... ZW:pc expression,...
引数
pc | オプション — 後置条件式 |
expression | オプション — 表示する変数または式、変数のコンマ区切りリスト、または表示する式のいずれかまたはすべて。コンマ区切りリストには、任意の組み合わせの変数と式を含めることができます。 |
概要
ZWRITE コマンドは、変数の名前とその値をリストします。これらの変数とその子孫を、現在のデバイスに 1行に 1 変数ずつ、正規順序の varname=value 形式でリストします。ZWRITE は、式の値もリストします。式は、値 として、1 行に 1 つずつ、指定された順序でリストされます。ZWRITE コマンドには、以下の 2 つの基本形式があります。
ZWRITE は、オプションの後置条件式を指定できます。Caché は、後置条件式が True (0 以外の数値に評価される) の場合にこのコマンドを実行します。Caché は、後置条件式が False (0 に評価される) の場合はコマンドを実行しません。詳細は、"Caché ObjectScript の使用法" の "コマンド後置条件式" を参照してください。
ZWRITE リストは、CTRL-C を発行すると中断され、<INTERRUPT> エラーが発生することがあります。
引数なしの ZWRITE
expression 引数なしの ZWRITE は、引数なしの WRITE と機能的に同じです。これは、プライベート変数を含むローカル変数環境 (ローカル変数) のすべての変数の名前と値を表示します。プロセス・プライベート・グローバルまたは特殊変数は表示しません。ASCII 順で名前ごとに変数をリストします。添え字ツリー順で添え字付き変数をリストします。
引数なしの ZWRITE は、ローカル変数に割り当てられた OREF 値を variable=<OBJECT REFERENCE>[oref] として表示します。OREF についてのさらなる詳細は表示されません。OREF の詳細は、"Caché オブジェクトの使用法" の “OREF の基本” を参照してください。
引数なしの ZWRITE は、ローカル変数に割り当てられたビット文字列を圧縮文字列として表示します。これは、(非表示文字を含むため) 空の文字列のようになる場合があります。ビット文字列についてのさらなる詳細は表示されません。
詳細は、"WRITE" コマンドを参照してください。
引数付きの ZWRITE
引数付きの ZWRITE は、1 つの expression 引数またはコンマ区切りの expression 引数リストを指定できます。これらの引数は、左から右の順に評価されます。各引数は、変数または式を指定できます。expression がコンマ区切りのリストである場合、各変数または式は個別の行に表示されます。
-
変数:varname=value として表示されます。
-
式:評価され、その結果が value として表示されます。
-
特殊変数:value として表示されます。
-
Caché リスト構造:$lb(element1,element2) として表示されます。
-
オブジェクト参照:<OBJECT REFERENCE>[oref] として表示されます。これは、引数なしの ZWRITE によって表示される値です。オブジェクト参照引数付きの ZWRITE は、この値に加えて追加の “一般情報”、“属性値”、および (該当する場合には) “スウィズル参照” と “計算参照” の情報を表示します。
-
JSON 配列と JSON オブジェクト:オブジェクト参照として表示されます。
-
ビット文字列:$ZWCHAR 圧縮バイナリ文字列と、ビット文字列のすべての "1" ビットのユーザが読み取れる形式の両方として表示されます。
ZWRITE は、1 つまたは複数の非数字文字を含む文字列を引用符付き文字列として表示します。
ZWRITE は、キャノニック形式の数として数値を表示します。ZWRITE は、キャノニック形式の数字を含む数値文字列を引用符なしのキャノニック形式の数として表示します。ZWRITE は、キャノニック形式でない数値文字列を引用符付きの文字列として表示します。キャノニック形式でない数値文字列に対して算術演算を行うと、文字列がキャノニック形式の数に変換されます。詳細は、以下の例を参照してください。
SET numcanon=7.9 // returns number
SET num=+007.90 // returns number
SET strnum="+7.9" // returns string
SET strcanon="7.9" // returns number
SET strnumop=+"+7.90" // returns number
ZWRITE numcanon,num,strnum,strcanon,strnumop
ZWRITE は、長すぎる文字列の表示を切り捨て、文字列表示が切り捨てられていることを示す ... を追加します。
ZWRITE は、制御文字 ($LISTBUILD および $BIT を使用して作成されたものを含む) を含む値を、読みやすい形式で表示します。この書式設定が、最大文字列長を超える、長すぎる文字列値の原因になる場合、ZWRITE は表示される文字列を切り捨て、文字列が切り捨てられていることを示す ... を追加します。
ZWRITE を WRITE、ZZDUMP、および ZZWRITE コマンドと比較するには、"Caché ObjectScript の使用法" の “コマンド” の章の "表示 (書き込み) コマンド" 機能テーブルを参照してください。
変数
expression が変数である場合、ZWRITE は varname=value を別個の行に書き出します。変数は、ローカル変数、プロセス・プライベート・グローバル、グローバル変数、またはオブジェクト参照 (OREF) にすることができます。
ZWRITE は未定義の変数は無視します。エラーの発行はしません。コンマ区切りの変数リスト内で未定義の変数を 1 つ以上指定すると、ZWRITE は未定義の変数を無視して、定義された変数を返します。この動作により、複数の変数を、そのすべてが定義済みであるかどうかを判別するための確認なしで表示できます。未定義の変数を WRITE、ZZDUMP、または ZZWRITE に指定すると、Caché は <UNDEFINED> エラーを発行します。
変数には添え字を付けることができます。変数が定義済みのサブノードを持つ場合、ZWRITE は各サブノードに対して varname=value 行を、添え字ツリー順に書き出します。ルート・ノードを指定すると、ZWRITE は、そのルート・ノードが定義されていなくても、そのサブノードをすべて表示します。
拡張グローバル参照を使用して、現在のネームスペースにマップされていないグローバル変数を指定することができます。ZWRITE は、%SYSTEM.ProcessOpens in a new tab クラスの RefInKind()Opens in a new tab メソッドまたは Config.MiscellaneousOpens in a new tab クラスの RefInKindOpens in a new tab プロパティが拡張グローバル参照を削除するために設定されている場合でも、拡張グローバル参照を表示します。存在しないネームスペースを指定した場合、Caché は <NAMESPACE> エラーを発行します。特権を持たないネームスペースを指定した場合、Caché は <PROTECT> エラーを発行し、続けてグローバル名とデータベース・パスを表示します (例:<PROTECT> ^myglobal,c:\intersystems\cache\mgr\)。添え字付き変数と拡張グローバル参照に関する詳細は、"Caché グローバルの使用法" の "グローバル構造" を参照してください。
非表示文字
ZWRITE はすべての表示文字を表示します。非表示文字は $CHAR 関数を使用して表示し、非表示文字それぞれを連結された $c(n) 値として表します。非表示制御文字は実行しません。詳細は、以下の例を参照してください。
SET charstr=$CHAR(65,7,66,67,0,68,11,49,50)
ZWRITE charstr
式
expression がリテラル式である場合、ZWRITE はその式を評価し、結果の value を個別の行に書き出します。式に未定義の変数が含まれている場合、Caché は <UNDEFINED> エラーを発行します。
式が多次元のプロパティである場合、ZWRITE はプロパティの子孫を表示しません。ZWRITE で多次元のプロパティ全体を表示するには、それに MERGE を実行してローカル配列にマージするか、またはオブジェクト全体を表示します。
Caché リスト構造
ZWRITE への Caché リスト構造 (%List) は、変数または式として指定できます。ZWRITE は、リスト構造を $lb(element1,element2) として表示します。詳細は、以下の例を参照してください。
SET FullList = $LISTBUILD("Red","Blue","Green","Yellow")
SET SubList = $LIST(FullList,2,4)
SET StrList = $LISTFROMSTRING("Crimson^Azure^Lime","^")
ZWRITE FullList,SubList,StrList
オブジェクト参照
ZWRITE へのオブジェクト参照 (OREF) は、変数または式のいずれかとして指定できます。オブジェクト参照を指定した場合、ZWRITE は variable=<OBJECT REFERENCE>[oref] または <OBJECT REFERENCE>[oref] を表示し、一般情報、属性値、および (該当する場合には) オブジェクトのプロパティのスウィズル参照と計算参照も 1 行に 1 属性ずつ表示します。
<OBJECT REFERENCE> 識別子の接頭語は、ブラウザ・インタフェースを介して ZWRITE を実行したときには、ブラウザが角括弧をタグと解釈するため、表示されない場合があります。
ZWRITE 引数が埋め込みオブジェクト・プロパティである場合、ZWRITE は、コンテナ・プロパティの配列要素の一般的な情報と属性値を、1 行に 1 属性ずつ表示します。表示形式は、%SYSTEM.OBJ.Dump()Opens in a new tab メソッドと同じです。
以下の例では、OREF に続いて "一般情報"、"属性値"、および "スウィズル参照" を表示します。
SET oref = ##class(%SQL.Statement).%New()
ZWRITE oref
以下の例では、OREF に続いて "一般情報"、"属性値"、および "計算参照" を表示します。
SET doref=##class(%iKnow.Domain).Create("mytempdomain")
SET domId=doref.Id
ZWRITE doref
SET stat=##class(%iKnow.Domain).DeleteId(domId)
以下の例では、OREF に続いて "一般情報"、"属性値"、"スウィズル参照"、および "計算参照" を表示します。
NEW $NAMESPACE
SET $NAMESPACE="Samples"
SET poref=##class(Sample.Person).%OpenId(1)
ZWRITE poref
NEW $NAMESPACE
SET $NAMESPACE="Samples"
SET myquery = "SELECT TOP 2 Name,DOB FROM Sample.Person"
SET oref = ##class(%SQL.Statement).%New()
SET qStatus = oref.%Prepare(myquery)
IF qStatus'=1 {WRITE "%Prepare failed:" DO $System.Status.DisplayError(qStatus) QUIT}
SET rset = oref.%Execute()
ZWRITE rset
OREF の詳細は、"Caché オブジェクトの使用法" の “OREF の基本” を参照してください。
JSON 配列と JSON オブジェクト
ZWRITE は、JSON 動的配列と JSON ダイナミック・オブジェクトをオブジェクト参照として表示します。参照オブジェクト・クラスは %Library.DynamicArray および %Library.DynamicObject です。詳細は、以下の例を参照してください。
JSON 配列:
SET jarray = ["apples","oranges"]
ZWRITE jarray
JSON オブジェクト:
SET jobj = {"fruit":"apples","count":24}
ZWRITE jobj
オブジェクト参照 (OREF) の詳細は、"Caché オブジェクトの使用法" の “OREF の基本” を参照してください。
ビット文字列
ZWRITE へのビット文字列は、変数または式のいずれかとして指定できます。ZWRITE 引数が ($BIT 関数を使用して作成された) Caché 圧縮ビット文字列である場合、ZWRITE は、圧縮バイナリ文字列の 10 進表現を $ZWCHAR ($zwc) 2 バイト (ワイド) 文字として表示します。
また、ZWRITE は、コンマ区切りリストとして、左から右の順に、圧縮されていない “1” ビットをリストするコメントを表示します。3 つ以上の連続した “1” ビットがある場合は、それらを 2 ドット構文 (n..m) を使用して範囲 (n と m も範囲に含む) としてリストします。例えば、ビット文字列 [1,0,1,1,1,1,0,1] は、/*$bit(1,3..6,8)*/ と表示されます。ビット文字列 [1,1,1,1,1,1,1,1] は、/*$bit(1..8)*/ と表示されます。ビット文字列 [0,0,0,0,0,0,0,0] は、/*$bit()*/ と表示されます。以下の例は、ZWRITE ビット文字列の出力を示しています。
SET $BIT(a,1) = 0
SET $BIT(a,2) = 0
SET $BIT(a,3) = 1
SET $BIT(a,4) = 0
SET $BIT(a,5) = 1
SET $BIT(a,6) = 1
SET $BIT(a,7) = 1
SET $BIT(a,8) = 0
ZWRITE a
例
引数なしの ZWRITE
以下の例では、引数なしの ZWRITE が、定義済みのすべてのローカル変数をASCII 名の順番でリストします。
SET A="A",a="a",AA="AA",aA="aA",aa="aa",B="B",b="b"
ZWRITE
これは、以下を返します。
A="A" AA="AA" B="B" a="a" aA="aA" aa="aa" b="b"
以下の例では、引数なしの ZWRITE が、キャノニック形式およびキャノニック形式でない数値をリストします。
SET w=10
SET x=++0012.00
SET y="6.5"
SET z="007"
SET a=w+x+y+z
ZWRITE
これは、以下を返します。
a=35.5 w=10 x=12 y=6.5 z="007"
引数付きの ZWRITE
以下の例では、ZWRITE は 3 つの変数を varname=value として、それぞれ個別の行で表示します。
SET alpha="abc"
SET x=100
SET y=80
SET sum=x+y
ZWRITE x,sum,alpha
以下の例では、ZWRITE は最初の引数の式を評価します。これは式を value として、変数を varname=value として返します。
SET x=100
SET y=80
ZWRITE x+y,y
以下の例では、さまざまな変数値を表示するときに ZWRITE と WRITE を比較します。ZWRITE は、引用符区切り文字列を返しますが、WRITE は返しません。
SET a=+007.00
SET b=9E3
SET c="+007.00"
SET d=""
SET e="Rhode Island"
SET f="Rhode"_"Island"
ZWRITE a,b,c,d,e,f
WRITE !,a,!,b,!,c,!,d,!,e,!,f
添え字サブノードを表示する ZWRITE
以下は、添え字付きプロセス・プライベート・グローバル変数のコンテンツを表示する ZWRITE の例です。ZWRITE は、変数の添え字を階層順に表示します。
SET ^||fruit(1)="apple",^||fruit(4)="banana",^||fruit(8)="cherry"
SET ^||fruit(1,1)="Macintosh",^||fruit(1,2)="Delicious",^||fruit(1,3)="Granny Smith"
SET ^||fruit(1,2,1)="Red Delicious",^||fruit(1,2,2)="Golden Delicious"
SET ^||fruit="Fruits"
WRITE "global arg ZWRITE:",!
ZWRITE ^||fruit
ルート・ノードを指定すると、そのルート・ノード自体が定義されていなくても、すべてのサブノードが表示されます。
SET fruit(1)="apple",fruit(4)="banana",fruit(8)="cherry"
SET fruit(1,1)="Macintosh",fruit(1,2)="Delicious",fruit(1,3)="Granny Smith"
SET fruit(1,2,1)="Red Delicious",fruit(1,2,2)="Golden Delicious"
WRITE "global arg ZWRITE:",!
ZWRITE fruit
グローバルと下位を表示する ZWRITE
以下は、添え字付きグローバル変数とそのすべての下位ノードのコンテンツを表示する ZWRITE の例です。下位ノードには、$LISTBUILD ($lb) 構文として表示されるリスト構造が含まれています。
NEW $NAMESPACE
SET $NAMESPACE="Samples"
ZWRITE ^CinemaooFilmCategoryD
リストで使用されるその他の出力不能文字も表示されます。
他のネームスペースのグローバルを表示する ZWRITE
以下は、拡張グローバル参照を使用して、他のネームスペース内の添え字付きグローバル変数のコンテンツを表示する ZWRITE の例です。
NEW $NAMESPACE
SET $NAMESPACE="Samples"
ZWRITE ^CinemaooFilmD(17)
WRITE !,"Changing namespace",!!
NEW $NAMESPACE
SET $NAMESPACE="User"
ZWRITE ^["SAMPLES"]CinemaooFilmD(17)
$QUERY または $NAME によって返されたグローバルからの拡張グローバル参照を削除するために設定可能な RefInKind メソッドまたはプロパティが設定されているかどうかに関係なく、ZWRITE は常に拡張グローバル参照を表示します。
関連項目
-
WRITE コマンド
-
ZZDUMP コマンド
-
ZZWRITE コマンド
-
"Caché ObjectScript の使用法" の “コマンド” の章の "表示 (書き込み) コマンド"