指定された文字列を画面またはプリンタに表示するために必要な列の数を返します。$ZWIDTH() 関数の書式は次のとおりです:
$ZW[IDTH] (expr)
式は$ZWIDTH() が表示の長さを評価する文字列です。式にUnicodeの有効な文字ではないコード・ポイント値が含まれている場合、$ZWIDTH() は実行時エラーを生成します。
式に非グラフィック文字が含まれている場合、$ZWIDTH() 関数はそれらの文字を数えません。
文字列に(通常は)グラフィック文字を含むエスケープシーケンスが含まれている場合、エスケープ処理を行わないので、$ZWIDTH() に結果を計算する文字が含まれます。そのような場合、結果は実際の表示幅よりも大きくなることがあります。
注意 | |
---|---|
"NOBADCHAR"モードでは、$ZWIDTH() は文字列を表示するために使用されたデバイスの動作と一致するかどうかにかかわらず、不正な文字にゼロの長さを返します。 |
文字セットUTF-8を指定すると、$ZWIDTH() 関数はICUのグリフ関連の規則を使用して、式を表すために必要な列の数を計算します。
例:
GTM>set NG=$char($$FUNC^%HD("200B")) GTM>set S=$char(26032)_NG_$CHAR(26033) GTM>W $ZWidth(STR) 4 GTM>
上記の例では、ローカル変数NGには、Unicodeの2つのダブル幅文字の間に表示されない非グラフィック文字が含まれています。
例:
GTM>write $zwidth("The rain in Spain stays mainly in the plain.")
44
GTM>set A="主要雨在西班牙停留在平原"
GTM>write $length(A)
12
GTM>write $zwidth(A)
24
上記の例では、$ZWIDTH() 関数は、スクリーンまたはプリンタに表示されるときにAの各文字が2列を占めるため、24を返します。