|
DBCS(Double Byte Character Set:2バイト文字)に対応した関数
[OS] ALL
[リリース] ALL
[キーワード] BASE, DBCS, FUNCTION
[質問]
下記のSASプログラムを実行すると、Cの値は3バイト目の「3」になります。2文字目の「2」を求めるにはどのようにすればよいでしょうか。
DATA _NULL_;
a='日本語';
b='本';
c=INDEX(a,b);
put c=;
RUN;
[回答]
INDEX関数はDBCS(Double Byte Character Set:2バイト文字)に対応していないため、上記の結果になります。
DBCSに対応したKINDEX関数をご利用ください。
DBCSに対応した関数は、同様の機能を持つSBCS(Single Byte Character Set:1バイト文字)用の関数名の先頭に「K」がついたもので、下記のような種類があります。
SAS関数:DBCS関数(SASシステムヘルプ日本語版より引用)
関数と構文 | 機能 |
KCOMPARE(source, <pos, <count,>> findstr)
|
文字列の比較結果を返す
|
KCOMPRESS(source <,characters-to-remove>)
|
文字列から特定の文字を削除する
|
KCOUNT(source)
|
文字列内の2バイト文字の数を返す
|
KINDEX(source, excerpt)
|
文字式の文字列を検索する
|
KINDEXC(source, excerpt-1<, ...excerpt-n>)
|
文字式から特定の文字を検索する
|
KLEFT(argument)
|
不要な前置DBCSブランクとSO/SIを削除して、SAS文字式を左揃えにする
|
KLENGTH(argument)
|
引数の長さを返す
|
KLOWCASE(argument)
|
引数のすべての1バイト文字を小文字に変換する
|
KREVERSE(argument)
|
文字式を反転する
|
KRIGHT(argument)
|
後置DBCSブランクとSO/SIを削除して、文字式を右揃えにする
|
KSCAN(argument, n<, delimiters>)
|
文字式から一定の語を選択する
|
KSTRCAT(argument-1, argument-2<, ...argument-n>)
|
2つ以上の文字列を連結する
|
KSUBSTR(argument, position<, n>)
|
引数から任意のDBCS部分文字列を抽出する
|
KSUBSTRB(argument, position<, n>)
|
バイト位置に基づく引数から任意のDBCS部分文字列を抽出する
|
KTRANSLATE(source, to-1, from-1<, ...to-n, from-n>)
|
文字式に含まれる特定の文字を置換する
|
KTRIM(argument)
|
後置DBCSブランクとSO/SIを文字式から削除する
|
KTRUNCATE(number, length)
|
指定した長さに数値を切り捨てる
|
KUPCASE(argument)
|
引数のすべての1バイト文字を大文字に変換する
|
KUPDATE(argument, position, n<, characters-to-replace>)
KUPDATE(argument, position<, n>, characters-to-replace)
|
文字値の内容を挿入、削除、置換する
|
KUPDATEB(argument, position, n<, characters-to-replace>)
KUPDATEB(argument, position<, n>, characters-to-replace)
|
バイト単位に基づく文字値の内容を挿入、削除、置換する
|
KVERIFY(source, excerpt-1<, ...excerpt-n>)
|
式に固有な最初の文字の位置を返す
|
|