SAS 入力方式 $CHARw. VS $w.
入力方式 $CHARw. と $w. は文字を取り込むときに使う入力方式です(w には変数の長さが入ります)。 同じ意味の入力方式かと思いきや、少し動作が異なります。 $CHARw. は、一文字のドット . をきちんと読み込みますが、$w. は読み込まず欠損値となります。 また、頭と末に空白があった場合の動作も、若干異なります。 $CHARw. と $w. の動作の違いを確かめるテストコード data TEST ; infile cards dlm="," dsd missover ; input STR_1 : $char10. STR_2 : $10. ; LEN_1 = length(STR_1) ; LEN_2 = length(STR_2) ; cards ; ABC,DEF .,. ..,.. BC, EF "BC ","EF " " A B C "," D E F " ; run ; proc print data=TEST ; run ; OBS STR_1 STR_2 LEN_1 LEN_2 1 ABC DEF 3 3 2 . 1 1 3 .. .. 2 2 4 BC EF 3 2 5 BC EF 2 2 6 A B C D E F 6 5 一文字のドットがある場合、$CHARw. はそのまま取り込めているのがわかります。$w. は欠損値となっています。 頭と末の空白については、見た目上はわからないですが、length 関数の値が異なる場合があるのがわかります。どうやら、先頭の空白の有無で違いが現れているようで、末の空白は違いがないようです。(ただし、頭と末の空白の扱い方は、...