カラムポインタコントロールの利用法

[OS] ALL
[リリース] ALL
[キーワード] Base, DATA, INPUT, PUT, column pointer contorol, @, at mark

[質問]

マニュアルに、「@'character-string' カラムポインタコントロール」というものが記載されていましたが、使用例がなく、どのような場合に利用するものなのか分かりません。
使用例を教えてください。

[回答]

「@'character-string' カラムポインタコントロール」は、たとえばWebログなど、カラムが不揃いでかつ各項目の長さも不定であるテキストデータを、インフォーマットと併用して読み込む際などに便利です。@'character-string'は、データ行内の'character-string'に指定した文字列以降の最初のカラム(ブランク以外)まで、ポインタを移動させます。

以下のサンプルプログラムは、Webログが保存されたテキストデータを読み込み、SASデータセットを作成する例です。
その際、日付の項目とGETメソッドにてリクエストしたファイルの項目のみを読み込んでいます。


  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