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?

$ASCII

文字を数値コードに変換します。

Synopsis

$ASCII(expression,position)
$A(expression,position)

パラメータ

expression 変換する文字
position オプション — 文字列内での文字の位置。1 から数えます。既定値は 1 です。

概要

$ASCIIexpression で指定された単一の文字に対し文字コード値を返します。この文字は 8 ビット (拡張 ASCII) 文字あるいは 16 ビット (Unicode) 文字です。返り値は正の整数です。

expression パラメータは、単一文字あるいは文字列に評価されます。expression が文字列に評価される場合、オプションの position パラメータで、変換したい文字の位置を示す必要があります。

パラメータ

expression

1 つ以上の文字を含む引用符付きの文字列として評価される式。この式には、変数名や数値、文字列リテラル、その他の有効な ObjectScript 式を指定できます。expression が複数の文字を含む文字列であるとき、position を使用して希望の文字を選択します。文字列に position が省略されると、$ASCII は先頭の文字の数値コードを返します。expression が NULL 文字列に評価される場合、$ASCII は -1 を返します。

position

0 以外の正の整数を指定します。符号付き、もしくは符号なしでもかまいません。position では整数以外の数値を使用することも可能ですが、Caché は数値の小数部分は無視し、整数部分しか考慮しません。position がない場合、$ASCIIexpression の最初の文字の数値を返します。position の整数値が expression の文字数よりも多いか、または 1 より少ない場合、$ASCII は -1 を返します。

以下の例は、文字 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 パラメータが含まれます。positionx にある文字数よりも大きい数に達したとき、$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 関数を使用します。

Caché Unicode サポートの詳細は、"Caché ObjectScript の使用法" の "Unicode" を参照してください。

サロゲート・ペア

$ASCII は、サロゲート・ペアを認識しません。サロゲート・ペアは、一部の中国語の文字を表示したり、日本語の JIS2004 標準をサポートするために使用されます。$WISWIDE 関数を使用して、文字列にサロゲート・ペアが含まれているかどうかを判断することができます。$WASCII 関数は、サロゲート・ペアを認識して、正しく解析します。$ASCII$WASCII は、それ以外は同一です。 ただし、$ASCII は通常 $WASCII より高速なため、サロゲート・ペアが出現しない場合は常に $ASCII が推奨されます。

Note:

$WASCII$ZWASCII と混同しないでください。$ZWASCII は常にペアの文字を解析します。

関連する関数

$CHAR 関数は $ASCII と逆の機能を持っています。この関数を使用して、整数コードを文字に変換することができます。

$ASCII は、単一の文字を整数に変換します。16 ビット (wide) 文字の文字列を整数に変換するには、$ZWASCII を使用します。32 ビット (long) 文字の文字列を整数に変換するには、$ZLASCII を使用します。64 ビット (quad) 文字の文字列を整数に変換するには、$ZQASCII を使用します。64 ビット文字の文字列を IEEE 浮動小数点数 ($DOUBLE データ型)に変換するには、$ZDASCII を使用します。

関連項目

FeedbackOpens in a new tab