例
以下の例は、文字 W の ASCII 数値 87 を返します。
WRITE $ASCII("W")
以下の例は、Unicode 文字 "pi" と同等の数値 960 を返します。
WRITE $ASCII($CHAR(959+1))
以下の例は、変数 Z の先頭にある文字の ASCII の数値と同等の 84 を返します。
SET Z="TEST"
WRITE $ASCII(Z)
以下の例は、変数 Z の 3 番目にある文字の ASCII の数値と同等の 83 を返します。
SET Z="TEST"
WRITE $ASCII(Z,3)
以下の例は、2 番目の引数が文字列にある文字数よりも大きい位置を指定したので、-1 を返します。
SET Z="TEST"
WRITE $ASCII(Z,5)
以下の例では、FOR ループ内で $ASCII を使用して、変数 x にあるすべての文字を ASCII の 数値の同等値に変換します。$ASCII リファレンスには、ループが実行されるたびに更新される position 引数が含まれます。position が x にある文字数よりも大きい数に達したとき、$ASCII はループを終了する値 -1 を返します。
SET x="abcdefghijklmnopqrstuvwxyz"
FOR i=1:1 {
QUIT:$ASCII(x,i)=-1
WRITE !,$ASCII(x,i)
}
QUIT
以下の例は、文字列 X の簡単なチェックサムを生成します。$CHAR(CS) をこの文字列に連結すると、新しい文字列のチェックサムは常に 0 です。これにより、妥当性検証が簡単になります。
CXSUM
SET x="Now is the time for all good men to come to the aid of their party"
SET CS=0
FOR i=1:1:$LENGTH(x) {
SET CS=CS+$ASCII(x,i)
WRITE !,"Checksum is:",CS
}
SET CS=128-CS#128
WRITE !,"Final checksum is:",CS
以下の例は、小文字、または大文字と小文字を組み合わせたものをすべて大文字に変換します。
ST
SET String="ThIs Is a MiXeDCAse stRiNg"
WRITE !,"Input: ",String
SET Len=$LENGTH(String),Nstring=" "
FOR i=1:1:Len { DO CNVT }
QUIT
CNVT
SET Char=$EXTRACT(String,i),Asc=$ASCII(Char)
IF Asc>96,Asc<123 {
SET Char=$CHAR(Asc-32)
SET Nstring=Nstring_Char
}
ELSE {
SET Nstring=Nstring_Char
}
WRITE !,"Output: ",Nstring
QUIT
Unicode サポート
$ASCII 関数は、8 ビット文字と 16 ビット文字の両方をサポートします。8 ビット文字は 0 から 255 の数値を返します。16 ビット (Unicode) 文字は 65535 までの数値コードを返します。
文字の Unicode 値は通常、0 ~ 9 と A ~ F (それぞれ 10 ~ 15) の 16 進数の 4 桁の数字で表されます。しかし、ObjectScript 言語の基本関数は、通常 16 進数ではなく、10 進法の 10 進数値の ASCII 数値による文字を識別します。
したがって、Unicode 標準が推奨する 16 進数値の代わりに、$ASCII 関数は入力文字の 10 進数の Unicode 値を返すことによって、Unicode コード化をサポートします。この方法で、関数は Unicode をサポートしている間でも、後方互換性のままになります。10 進数から 16 進数への変換には、$ZHEX 関数を使用します。
InterSystems IRIS Unicode サポートの詳細は、"ObjectScript の使用法" の "Unicode" を参照してください。