引数付きの ZWRITE
引数付きの ZWRITE は、1 つの expression 引数またはコンマ区切りの expression 引数リストを指定できます。これらの引数は、左から右の順に評価されます。各引数は、変数または式を指定できます。expression がコンマ区切りのリストである場合、各変数または式は個別の行に表示されます。
-
変数:varname=value として表示されます。
-
式:評価され、その結果が value として表示されます。
-
特殊変数:value として表示されます。
-
InterSystems IRIS リスト構造:$lb(element1,element2) として表示されます。
-
添え字付きグローバルは、SQL データ値や SQL インデックス値の格納に使用されるものを含め、$lb() リスト構造として表示されます。
-
オブジェクト参照:<OBJECT REFERENCE>[oref] として表示されます。これは、引数なしの ZWRITE によって表示される値です。オブジェクト参照引数付きの ZWRITE は、この値に加えて追加の “一般情報”、“属性値”、および (該当する場合には) “スウィズル参照” と “計算参照” の情報を表示します。
-
JSON 配列と 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 コマンドと比較するには、"ObjectScript の使用法" の “コマンド” の章の "表示 (書き込み) コマンド" 機能テーブルを参照してください。
変数
expression が変数である場合、ZWRITE は varname=value を別個の行に書き出します。変数は、ローカル変数、プロセス・プライベート・グローバル、グローバル変数、またはオブジェクト参照 (OREF) にすることができます。
ZWRITE は未定義の変数は無視します。エラーの発行はしません。コンマ区切りの変数リスト内で未定義の変数を 1 つ以上指定すると、ZWRITE は未定義の変数を無視して、定義された変数を返します。この動作により、複数の変数を、そのすべてが定義済みであるかどうかを判別するための確認なしで表示できます。未定義の変数を WRITE、ZZDUMP、または ZZWRITE に指定すると、InterSystems IRIS は <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 プロパティが拡張グローバル参照を削除するために設定されている場合でも、拡張グローバル参照を表示します。存在しないネームスペースを指定した場合、InterSystems IRIS は <NAMESPACE> エラーを発行します。特権を持たないネームスペースを指定した場合、InterSystems IRIS は <PROTECT> エラーを発行し、続けてグローバル名とデータベース・パスを表示します (例:<PROTECT> ^myglobal,c:\intersystems\iris\mgr\)。添え字付き変数と拡張グローバル参照に関する詳細は、"グローバルの使用法" の "グローバル構造" を参照してください。
非表示文字
ZWRITE はすべての表示文字を表示します。非表示文字は $CHAR 関数を使用して表示し、非表示文字それぞれを連結された $c(n) 値として表します。非表示制御文字は実行しません。詳細は、以下の例を参照してください。
SET charstr=$CHAR(65,7,66,67,0,68,11,49,50)
ZWRITE charstr
式
expression がリテラル式である場合、ZWRITE はその式を評価し、結果の value を個別の行に書き出します。式に未定義の変数が含まれている場合、InterSystems IRIS は <UNDEFINED> エラーを発行します。
式が多次元のプロパティである場合、ZWRITE はプロパティの子孫を表示しません。ZWRITE で多次元のプロパティ全体を表示するには、それに MERGE を実行してローカル配列にマージするか、またはオブジェクト全体を表示します。
InterSystems IRIS リスト構造
ZWRITE への InterSystems IRIS リスト構造 (%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 の例です。この例では、SQL テーブルに投影される、Sample.Person 永続クラスに対して定義されたデータを表示します。このグローバル変数は、その名前を永続クラス名 (SQL テーブル名ではありません) から取得し、大文字と小文字を区別します。また、データ・グローバルであることを示すため、"D" が付加されます。下位ノードには、$LISTBUILD ($lb) 構文として表示されるリスト構造が含まれています。
ZWRITE ^Sample.PersonD
単一のデータ・レコードを表示するには、以下に示すように、RowID 値をグローバル添え字として指定できます。
ZWRITE ^Sample.PersonD(22)
インデックスの内容を表示するには、"I" を付加した永続クラス名を指定し、インデックス名を添え字として入力できます。インデックス名では、大文字と小文字が区別されます。
ZWRITE ^Sample.PersonI("NameIDX")
リストで使用されるその他の出力不能文字も表示されます。
以下は、拡張グローバル参照を使用して、指定したネームスペース内の添え字付きグローバル変数の内容を表示する ZWRITE の例です。
ZWRITE ^["USER"]Sample.PersonD
ネームスペース名は、別のネームスペースでも現在のネームスペースでもかまいません。ネームスペース名は、大文字と小文字を区別しません。
$QUERY または $NAME によって返されたグローバルからの拡張グローバル参照を削除するために設定可能な RefInKind メソッドまたはプロパティが設定されているかどうかに関係なく、ZWRITE は常に拡張グローバル参照を表示します。
オブジェクト参照
ZWRITE へのオブジェクト参照 (OREF) は、変数または式のいずれかとして指定できます。オブジェクト参照を指定した場合、ZWRITE は variable=9@%SQL.Statement ; <OREF> や 9@%SQL.Statement ; <OREF> などの値を表示し、一般情報、属性値、および (該当する場合には) オブジェクトのプロパティのスウィズル参照と計算参照も 1 行に 1 属性ずつ表示します。
Note:
<OREF> 識別子の接尾語は、ブラウザ・インタフェースを介して 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).%New("mytempdomain")
DO doref.%Save()
SET domId=doref.Id
ZWRITE doref
SET stat=##class(%iKnow.Domain).%DeleteId(domId)
以下の例では、OREF に続いて "一般情報"、"属性値"、"スウィズル参照"、および "計算参照" を表示します。
SET poref=##class(Sample.Person).%OpenId(1)
ZWRITE poref
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 の詳細は、"クラスの定義と使用" の “OREF の基本” を参照してください。
JSON 配列と JSON オブジェクト
引数なしの ZWRITE は、JSON 動的配列と JSON ダイナミック・オブジェクトをオブジェクト参照として表示します。以下に例を示します。
USER>SET jarray = ["apples","oranges"]
USER>SET jobj = {"fruit":"apples","count":24}
USER>ZWRITE
jarray=<OBJECT REFERENCE>[1@%Library.DynamicArray]
jobj=<OBJECT REFERENCE>[2@%Library.DynamicObject]
引数付きの ZWRITE は、JSON 動的配列と JSON ダイナミック・オブジェクトの値を表示します。詳細は、以下の例を参照してください。
JSON 配列:
USER>SET jarray = ["apples","oranges"]
USER>SET jobj = {"fruit":"apples","count":24}
USER>ZWRITE jarray
jarray = ["apples","oranges"] ; <DYNAMIC ARRAY>
USER>ZWRITE jobj
jobj = {"fruit":"apples","count":24} ; <DYNAMIC OBJECT>
引数なしの ZWRITE は、以下の例に示すように OREF 値を JSON オブジェクト内に表示します。
USER>SET oref = ##class(%SQL.Statement).%New()
USER>SET jobj = {"ObjRef":(oref)}
USER>ZWRITE
jobj=<OBJECT REFERENCE>[4@%Library.DynamicObject]
oref=<OBJECT REFERENCE>[6@%SQL.Statement]
JSON オブジェクト OREF 引数付きの ZWRITE は、("6@%SQL.Statement") のような形式を使用して OREF 値を JSON オブジェクト内に表示します。
USER>SET orefsql = ##class(%SQL.Statement).%New()
USER>SET jobjsql = {"ObjRef":(orefsql)}
USER>SET orefrs = ##class(%ResultSet).%New()
USER>SET jobjrs = {"ObjRef":(orefrs)}
USER>ZWRITE jobjsql
jobjsql={"ObjRef":("6@%SQL.Statement")} ; <DYNAMIC OBJECT>
USER>ZWRITE jobjrs
jobjrs={"ObjRef":("7@%Library.ResultSet")} ; <DYNAMIC OBJECT>
オブジェクト参照 (OREF) の詳細は、"クラスの定義と使用" の “OREF の基本” を参照してください。
ZWRITE は、JSON オブジェクト内の $DOUBLE 値を以下のように処理します。
引数なしの ZWRITE
USER>SET jnum = {"doub":($DOUBLE(1.234))}
USER>SET jnan = {"doub":($DOUBLE("NAN"))}
USER>SET jinf = {"doub":($DOUBLE("-INF"))}
USER>ZWRITE
jinf=<OBJECT REFERENCE>[6@%Library.DynamicObject]
jnan=<OBJECT REFERENCE>[5@%Library.DynamicObject]
jnum=<OBJECT REFERENCE>[4@%Library.DynamicObject]
$DOUBLE JSON オブジェクト引数付きの ZWRITE
USER>SET jnum = {"doub":($DOUBLE(1.234))}
USER>SET jnan = {"doub":($DOUBLE("NAN"))}
USER>SET jinf = {"doub":($DOUBLE("-INF"))}
USER>ZWRITE jnum
jnum={"doub":1.2339999999999999857} ; <DYNAMIC OBJECT>
USER>ZWRITE jnan
jnan={"doub":($DOUBLE("NAN"))} ; <DYNAMIC OBJECT>
USER>ZWRITE jinf
jnan={"doub":($DOUBLE("-INF"))} ; <DYNAMIC OBJECT>
ObjectScript 内での JSON の処理の詳細は、"SET コマンド" を参照してください。
ビット文字列
ZWRITE へのビット文字列は、変数または式のいずれかとして指定できます。ZWRITE 引数が ($BIT 関数を使用して作成された) InterSystems IRIS 圧縮ビット文字列である場合、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