SAS Base Programmer 練習問題23
次のSASプログラムをサブミットする
data work.staff; JobCategory = 'FA'; JobLevel = '1'; Jobcategory = Jobcategory || JobLevel; run;
出力データセットの変数JOBCATEGORYの値は以下のどれか
A. FA
B. FA1
C. FA 1
D. '' (文字データの欠損値)
出典はこちら
答え: A (要反転)
||は文字列同士を結合する演算子だが、JobCategoryは JobCategory = 'FA'; とした時点で長さは2バイトとなる。そのため、結合しても文字列は'FA'のままとなる。
以下のようにJobCategoryの長さを大きくすれば解決するように思えるが、
data work.staff; length JobCategory $ 8; JobCategory = 'FA'; JobLevel = '1'; Jobcategory = Jobcategory || JobLevel; run;
このコードの実行結果のJobCategoryもFAとなる。
結合結果を別の変数Jobcategory2に代入してみると
data work.staff; length JobCategory $ 8; JobCategory = 'FA'; JobLevel = '1'; Jobcategory2 = Jobcategory || JobLevel; run;
Jobcategory | JobLevel | Jobcategory2 |
---|---|---|
FA | 1 | FA 1 |
FAの末尾に空白文字が6文字分入っているためであることが分かる。
FA1の結果を得るためには、以下のようにtrimを使って空白を除去する必要がある。
data work.staff; length JobCategory $ 8; JobCategory = 'FA'; JobLevel = '1'; Jobcategory = trim(Jobcategory) || JobLevel; run;