Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$ZWPACK と $ZWBPACK

2 つの 8 ビット文字を 1 つの 16 ビット文字にパックします。

Synopsis

$ZWPACK(string)

$ZWBPACK(string)

パラメータ

string 2 つ以上の 8 ビット文字で構成される文字列。string は、偶数の文字でなければなりません。

概要

$ZWPACK 関数は、8 ビット文字の文字列を 16 ビットのワイド文字の文字列としてリトル・エンディアン順にパックします。2 つの 8 ビット文字は、1 つの 16 ビット文字にパックされます。

$ZWBPACK は同じタスクを実行しますが、8 ビット文字は文字列は 16 ビットのワイド文字にビッグ・エンディアン順に格納されます。

文字列のパックは、格納する文字列の文字数と文字列操作を半分にするための方法です。アンパックすると、元の 8 ビット文字の文字列を表示するために復元されます。これらの操作は、データ内で Unicode 文字が許可されているときは使用しないでください。

入力 string には、以下の要件があります。

  • string は、偶数の文字で構成されなければなりません。空の文字列は許可され、空の文字列が返されます。奇数の文字を指定すると、<FUNCTION> エラーが返されます。

  • string には、マルチバイト文字を含めることができません。string$ZISWIDE を使用して、マルチバイト文字が含まれていないかを確認できます。マルチバイト文字を含む string$ZWPACK あるいは $ZWBPACK を使用すると、システムは <WIDE CHAR> エラーを生成します。

以下の例は、Caché の Unicode インストールが必要です。

以下の例は、$ZWPACK が 8 ビット文字を 2 つの 16 ビットのワイド文字にパックする方法を示します。パックした文字列のワイド文字では、バイト順序が 16 進数 4241 4443 のようにリトル・エンディアンになります。

   SET str=$CHAR(65,66,67,68)
   WRITE !,$LENGTH(str)," characters: ",str
   WRITE !,"$ZWPACK"
   SET wstr=$ZWPACK(str)
   WRITE !,$LENGTH(wstr)," packed characters: ",wstr
   ZZDUMP wstr
   WRITE !,"$ZWUNPACK"
   SET nstr=$ZWUNPACK(wstr)
   WRITE !,$LENGTH(nstr)," unpacked characters: ",nstr

以下の例は、$ZWBPACK が 8 ビット文字を 2 つの 16 ビットのワイド文字にパックする方法を示します。パックした文字列のワイド文字では、バイト順序が 16 進数 4142 4344 のようにビッグ・エンディアンになります。

   SET str=$CHAR(65,66,67,68)
   WRITE !,$LENGTH(str)," characters: ",str
   WRITE !,"$ZWBPACK"
   SET wstr=$ZWBPACK(str)
   WRITE !,$LENGTH(wstr)," packed characters: ",wstr
   ZZDUMP wstr
   WRITE !,"$ZWBUNPACK"
   SET nstr=$ZWBUNPACK(wstr)
   WRITE !,$LENGTH(nstr)," unpacked characters: ",nstr

以下の例は、string を検証してからパックします。

   SET str=$CHAR(65,66,67,68)
   IF $ZISWIDE(str) {
      WRITE !,str," contains wide characters"
      QUIT }
   ELSEIF $LENGTH(str) # 2  {
      WRITE !,str," contains an odd number of characters"
      QUIT }
   ELSE {
      WRITE !,str," passes validation" }
   WRITE !,$LENGTH(str)," characters: ",str
   SET wstr=$ZWPACK(str)
   WRITE !,$LENGTH(wstr)," packed characters: ",wstr
   ZZDUMP wstr

関連項目

FeedbackOpens in a new tab