前のページ|次のページ

COLLATE関数

ASCII照合順序またはEBCDIC照合順序の文字列を返します。

カテゴリ: 文字
制限事項: この関数は、I18Nレベル0準拠しており、SBCSデータ向けに設計されています。この関数をDBCSまたはMBCSデータの処理に使用しないでください。
UNIX固有: ASCII照合順序を使用します。
Windows固有: ASCII照合順序を使用します。

構文

必須引数

start-position

照合順序で返される最初の文字の位置を数値で指定します。

操作 start-positionのみを指定すると、COLLATEは、その位置から照合順序の最後までの連続する文字または255文字(先に到達した方)を返します。

オプション引数

end-position

照合順序で返される最後の文字の位置を数値で指定します。

EBCDIC照合順序では、end-positionの最大値は255です。ASCII照合順序では、0から127までのend-positionの値に対応する文字が標準文字セットを表します。128から255までのend-positionの値に対応するその他のASCII文字は、特定のASCII動作環境で使用できますが、それらの文字が表す情報は動作環境によって異なります。
ヒント end-positionは、start-positionよりも大きくする必要があります。
end-positionを省略してlengthを使用する場合、end-positionの位置にカンマを付けます。

length

照合順序内の文字数を指定します。

end-positionlengthの両方を指定すると、COLLATEはlengthを無視します。
デフォルト 200
ヒント end-positionを省略する場合、lengthを使用して結果の長さを明示的に指定します。

詳細

照合順序は、文字セットを並べ替える順序です。たとえば、SORTプロシジャを実行すると、照合順序により、他の文字に対する特定の文字の並べ替え順序(上位、下位、同位)が決まります。照合順序は、セッションエンコーディングに基づいて決定されます。
COLLATE関数により、ASCII文字の文字列が返されます。ASCII照合順序には、0から255の位置番号で参照される、256の位置が含まれます。127より上位の文字は、ISO 8859文字セットで定義され、欧州言語で使用される文字に対応しています。
COLLATE関数により返される文字列は、start-position引数で指定されているASCII文字で始まります。end-position引数を指定すると、COLLATE関数により、start-position引数とend-position引数の間のすべてのASCII文字を含む文字列(両引数で指定されている文字を含む)が返されます。end-position引数の代わりにlength引数を指定すると、COLLATE関数により、start-positionで始まり、指定された数の文字を含む文字列が返されます。
DATAステップで、まだ長さが割り当てられていない変数にCOLLATE関数から値が返される場合、その変数には200バイトの長さが設定されます。照合順序の残りの文字列よりも長い文字列を要求すると、COLLATEは照合順序の最後までの文字列を返し、文字列の末尾をスペース(空白文字)でパディング(穴埋め)します。完全なASCII照合順序は200文字より長いため、デフォルトの戻り文字列は200文字に切り捨てられます。長さが201~256文字のASCII文字の文字列を返すには、DATAステップで次のいずれかのメソッドを使用します。
  • 戻り文字列の変数で$256.などの形式を使用します。
  • LENGTHステートメントを使用して戻り文字列の変数の長さを定義します。

例1

SASステートメントとその結果を次に示します。
SASステートメント
結果
ASCII
----+----1----+-—-2--
x=collate(48, , 10);
y=collate(48, 57);
put @1 x @14 y;
 
0123456789   0123456789
EBCDIC
x=collate(240, , 10);
y=collate(240, 249);
put @1 x @14 y;
 
0123456789   0123456789

例2: 戻り変数のデフォルトの文字列の長さを使用してASCII文字列を返す

この例では、リターンコードの変数xで、デフォルトの戻り文字列の長さである200を使用します。したがって、COLLATE関数により、xに対して200文字の照合順序が返されます。この長さを、yで256文字に設定します。出力を見ると、長さyにはより多くの文字が含まれていることがわかります。
data order;
   length y $256;
   x = collate(0,255);
   put x;
   y = collate(0,255);
   put y;
run;

proc contents data=order;
run;
COLLATE関数からのログへの出力
1番目の文字列がデフォルトの200文字に切り捨てられたCOLLATE関数の出力2番目の文字列には、256文字の明示的な長さが割り当てられました。
CONTENTSプロシジャからの部分出力
xに200文字、yに256文字が含まれることを示すCONTENTSプロシジャからの部分出力

例3: 特定の長さのASCII文字列を返す

この例では、yで、56という戻り文字列の長さを使用しています。これにより、COLLATE関数によりASCII照合順序の最初の56文字が返されます。残りの200文字の文字列は、スペースでパディングされます。
data _null_;
   y = collate(,,56);
   put y;
run;
COLLATE関数からの特定の長さの文字列の出力
COLLATE関数によって出力された照合順序の最初の56文字の文字列です。

関連項目:

前のページ|次のページ|ページの先頭へ