カラムポインタコントロールの利用法
[OS] ALL
[リリース] ALL
[キーワード] Base, DATA, INPUT, PUT, column pointer contorol, @, at mark
[質問]
マニュアルに、「@'character-string' カラムポインタコントロール」というものが記載されていましたが、使用例がなく、どのような場合に利用するものなのか分かりません。
[回答]「@'character-string' カラムポインタコントロール」は、たとえばWebログなど、カラムが不揃いでかつ各項目の長さも不定であるテキストデータを、インフォーマットと併用して読み込む際などに便利です。@'character-string'は、データ行内の'character-string'に指定した文字列以降の最初のカラム(ブランク以外)まで、ポインタを移動させます。
以下のサンプルプログラムは、Webログが保存されたテキストデータを読み込み、SASデータセットを作成する例です。
DATA weblogs; INPUT @'[' date date11. @'GET' file :$20.; CARDS; 10.192.70.235 - - [08/Jun/2005:23:51:32 -0700] "GET /test.jpg HTTP/1.1" 200 66820 10.0.0.0 - - [08/Jun/2005:23:51:40 -0700] "GET /index.html HTTP/1.0" 200 8471 172.30.236.8 - - [08/Jun/2005:23:51:40 -0700] "GET /data/image.gif HTTP/1.0" 200 89 172.16.236.25 - - [08/Jun/2005:23:51:40 -0700] "GET /new.gif HTTP/1.0" 200 1852 172.31.121.255 - - [08/Jun/2005:23:56:46 -0700] "GET /base.gif HTTP/1.0" 200 14079 192.168.121.37 - - [09/Jun/2005:00:57:49 -0700] "GET /logo.gif HTTP/1.0" 200 18312 192.168.255.255 - - [09/Jun/2005:00:57:49 -0700] "GET /statemnt.htm HTTP/1.0" 200 238 192.168.0.0 - - [09/Jun/2005:01:59:40 -0700] "GET /Item/old.gif HTTP/1.0" 200 98 ; RUN; PROC PRINT DATA=weblogs; FORMAT date YYMMDD10.; RUN; 上記のプログラムを実行すると、下記の結果が出力されます。 OBS date file 1 2005-06-08 /test.jpg 2 2005-06-08 /index.html 3 2005-06-08 /data/image.gif 4 2005-06-08 /new.gif 5 2005-06-08 /base.gif 6 2005-06-09 /logo.gif 7 2005-06-09 /statemnt.htm 8 2005-06-09 /Item/old.gif |