たまのおもひで

好きなことに熱中し大抵すぐに生きがいになります。趣味と仕事となんでもないことも。

【SAS Base】SASにおけるSCAN関数、SBSTR関数の問題集(SAS Base Programming準拠)

SASにおけるSCAN関数、SBSTR関数についてSAS Base Programmingで問題になりそうな点だけ抜粋して問題集を作成しました。
概ねSAS Base試験の参考書『SAS Certified Specialist Prep Guide(SAS 9.4)』に準拠しています。

(問題1):次のコードを実行したとき、aとbに格納される値はそれぞれ何か。 address = "209 RADCLIFFE ROAD, CENTER CITY, NY, 92716"; a = scan(address, 3); b = scan(address, 3, ','); a) a="ROAD"、b="CENTER CITY" b) a="ROAD"、b="NY" c) a="RADCLIFFE"、b="CENTER CITY" d) a="ROAD,"、b="CENTER" (問題2):次のコードを実行したとき、lastに格納される値は何か。 text = "The quick brown fox jumps"; last = scan(text, -1); a) "The" b) "jumps" c) "fox" d) ""(空文字) (問題3):次のコードを実行したとき、gender1とgender2格納される値はそれぞれ何か。 code = "123FA"; gender1 = scan(code, 4); gender2 = substr(code,4,1); a) ""(空) / "F" b) "" / "A" c) "A" / "F" d) "F" / "F" (問題4):電話番号 Phone="919-555-1234" の "919" を "920" に書き換えるには次のどのコードが適切か。 a) substr(Phone,1,3) = '920'; b) Phone = substr('920',1,3); c) Phone = '920'x; d) substr(Phone,1,3) = '920-'; (問題5):次のコードを実行したとき、Code2に格納される値は何か。 Code = "HNL:96701-006"; Code2 = substr(Code,1,length(Code)-4); a) "HNL:96701" b) "HNL:" c) "96701-006" d) ""(空) (解答1) B:デリミタをカンマに指定すると、先頭から3番目の要素は "NY"。よってbに格納される値は"NY"。 以下実行してみたい方向けコード↓↓ data _null_; address = "209 RADCLIFFE ROAD, CENTER CITY, NY, 92716"; a = scan(address, 3); b = scan(address, 3, ','); put a= b=; run; (解答2) B:scan(text, -1)は後ろから1番目の文字列を抽出する。 以下実行してみたい方向けコード↓↓ data _null_; text = "The quick brown fox jumps"; last = scan(text, -1); put last=; run; (解答3) A:scan(code, 4)はcodeにおいて先頭から4つ目の単語を探すが、codeにはそれが存在しないため空文字を返す。 sbstrは文字の位置を検索する。4文字目から1文字を抽出するためg2は"F"になる。 以下実行してみたい方向けコード↓↓ data _null_; code = "123FA"; g1 = scan(code, 4); g2 = substr(code, 4, 1); put g1= g2=; run; (解答4) A。 (解答5) A:length(Code)は13になる。よってCode2のsbstrの中身は(Code, 1, 13-4)になる。Codeの1文字目から9文字を抽出しているAが正解。 以下実行してみたい方向けコード↓ data _null_; Code = "HNL:96701-006"; Code2 = substr(Code, 1, length(Code) - 4); put Code= Code2=; run;