最初の引数を別のエンコーディングに変換された文字列として返します。2つの引数の形式は、文字セット内の大文字小文字のエンコーディングを変更します。3つの引数の形式は、符号化方式を変更します。
$ZCONVERT() 関数の書式は次のとおりです:
$ZCO[NVERT](expr1, expr2,[expr3])
最初の式は変換する文字列です。もし式に文字セットに含まれていないコード・ポイント値が含まれている場合、$ZCONVERT() は実行時エラーを生成します。
2つの引数形式では、2番目の式は結果の形式を決定するコードを指定します。3つの引数の形式では、2番目の式は、最初の引数の文字セットの解釈を制御するコードを指定します。式が使用可能な引数の数の有効なコードに対応する定義済みコードの1つに評価されない場合、$ZCONVERT() は実行時エラーを生成します。
オプションの3番目の式は、結果の文字セットを決定するコードを指定します。式が定義されたコードの1つに評価されない場合、$ZCONVERT() は実行時の引数を生成します。3つの引数形式は、Mモードではサポートされていません。
2つの引数をとる形式の expr2 の有効な(大文字小文字を区別しない)文字コードは次のとおりです:
U は、その文字列を大文字に変換します。"UPPER-CASE「大文字」" は、すべての文字が "capital letter「大文字」" と等しい語に変換される単語を指します。$ZCONVERT() は、"UPPER-CASE「大文字」" の "capital letter「大文字」" の形式で文字をそのまま保持します。
L は文字列をlower-case (小文字) に変換します。 "lower-case「小文字」"とは、すべての文字が同等の "small letter「小文字」" に変換される単語を指します。$ZCONVERT() は、既に lower-case(小文字) または変更されていない lower-case (小文字) と同等でない文字を保持しています。
T は、その文字列を title case(先頭文字を大文字に指定) に変換します。「title case(先頭文字を大文字に指定) 」は、各単語の最初の文字を大文字で、残りの文字を小文字(lower-case)にした文字列を指します。$ZCONVERT() は、 "title case(先頭文字を大文字に指定) "にすでに準拠している文字をそのまま保持します。 "T"(title case(先頭文字を大文字に指定) )はMモードではサポートされていません。
3つの引数をとる形式の expr2 と expr3 の文字セット・エンコーディングの有効な(大文字と小文字を区別しない)コードは次のとおりです:
"UTF-8"-- Unicodeのマルチバイト可変長エンコード形式。
"UTF-16LE"-- リトル・エンディアンのUnicodeのマルチバイト16ビットエンコーディング形式。
"UTF-16BE"-- ビッグエンディアンのUnicodeのマルチバイト16ビットエンコーディング形式。
"UTF-16"-- 現在のシステムと同じエンディアン・レベルを使用するマルチバイトの16ビットエンコーディング形式。
注意 | |
---|---|
UTF-8モードが有効な場合、GT.M はICUライブラリを使用して大文字と小文字を変換します。「動作原理」セクションで説明したように、文字列の大文字と小文字の変換はUnicodeコードポイント値に従って行われます。これは、例えば、電話帳の名前のような、言語的または文化的に正しい大文字と小文字の変換ではないかもしれない。したがって、アプリケーション開発者は、実際のケース変換が言語的および文化的に特定のニーズに合っていることを保証する必要があります。Mモードの$ZCONVERT() 関数の2つの引数の形式は、ICUライブラリを使用して文字列の大文字と小文字の変換に関連する操作を実行しません。 |
例:
GTM>write $zconvert("Happy New Year","U") HAPPY NEW YEAR
例:
GTM>write $ZCHSET M GTM>Write $zconvert("HAPPY NEW YEAR","T") %GTM-E-BADCASECODE, T is not a valid case conversion code
例:
GTM>Set T8="主要雨在西班牙停留在平原"
GTM>Write $Length(T8)
12
GTM>Set T16=$zconvert(T8,"UTF-8","UTF-16LE")
GTM>Write $length(T16)
%GTM-E-BADCHAR, $ZCHAR(129,137,232,150) is not a valid character in the UTF-8 encoding form
GTM>Set T16=$ZCOnvert(T16,"UTF-16LE","UTF-8")
GTM>Write $length(T16)
9
上記の例では、$LENGTH() 関数はUTF-8エンコーディング文字列を引数としてとるため、エラーをトリガします。