2016年2月15日月曜日

ZIP圧縮のファイルを書く

投稿を修正して再度掲載します。

HULFT転送されてきたテキストファイルを読み込んでデータセット化するときに、元のファイルは残しておきたいことがあります。そのときに、圧縮して保存しとくと容量削減できて良いです。下のサンプルは、お馴染みCLASSのデータを使ったものです。名前と年齢をZIPファイルに出力し、後半のDATAステップでZIPファイルから読み取っています。


23   filename foo ZIP 'C:\temp\testzip.zip';
24
25   /* write to zip file */
26   data _null_;
27       file foo(class);
28       set sashelp.class;
29       put name age;
30   run;
 
NOTE: ファイルライブラリFOO :
      Directory=C:\temp\testzip.zip
 
NOTE: 出力ファイルFOO(class) :
      Filename=C:\temp\testzip.zip,
      Member Name=class
 
NOTE: 19レコードをファイルライブラリFOOに書き込みました。
      最小レコード長は9です。
      最大レコード長は15です。
NOTE: 19レコードを出力ファイルFOO(class)に書き込みました。
      最小レコード長は9です。
      最大レコード長は15です。
NOTE: データセットSASHELP.CLASSから19オブザベーションを読み込みました。
NOTE: DATAステートメント処理(合計処理時間):
      処理時間           0.01 秒
      CPU時間            0.01 秒
 
 
31
32   /* read from zip file */
33   data work.class;
34       infile foo(class);
35       input name $ age;
36   run;
 
NOTE: 入力ファイルライブラリFOO:
      Directory=C:\temp\testzip.zip
 
NOTE: 入力ファイルFOO(class) :
      Filename=C:\temp\testzip.zip,
      Member Name=class
 
NOTE: 19レコードを入力ファイルライブラリFOOから読み込みました。
      最小レコード長は9です。
      最大レコード長は15です。
NOTE: 19レコードを入力ファイルFOO(class)から読み込みました。
      最小レコード長は9です。
      最大レコード長は15です。
NOTE: データセットWORK.CLASSは19オブザベーション、2変数です。
NOTE: DATAステートメント処理(合計処理時間):
      処理時間           0.01 秒
      CPU時間            0.01 秒

便利!

1 件のコメント :

  1. ログを貼ってから気がついた。
    このログは、SAS Log Utilityで、ZIPファイルの読み書きを捕捉できない!

    返信削除