SAS のドキュメントでは、LOWCASE を「I18N レベル 2」として分類しています。これは、1 バイト、2 バイト、またはマルチバイトのデータに使用できることを意味します。したがって、マルチバイト文字シーケンスが含まれている場合でも、UTF8 文字列を正しく小文字に変換し (セッション ENCODING が UTF8 であると仮定)、各バイトを個別に処理することによって文字列が破損しないことが期待されます。
では、KLOWCASE は何のためにあるのでしょうか。他の「K」関数はすべて、KSUBSTR、KREVERSE、および do on など、マルチバイト文字列では機能しない通常の文字列関数と同等のものを提供します。KUPCASE と KLOWCASE は、「K」以外の対応するものと変わらないように見えるという点で異なっているように見えます。おそらく、LOWCASE の I18N レベル 2 としての分類は正しくなく、LOWCASE はマルチバイト シーケンスをまったく認識していないのでしょうか?