論文読んで実行していただいた方からのご指摘で,ダイレクトにzipを読み込む際に
各レコードがzip内からのどのレコードから来たかの識別で,filenameオプションで取得できるとか書いてしまったのですが,それはzip名を取得する方法でした…
Direct Zip Readingのオプションの説明が正しくないです
それもよく使うのでごっちゃになってしまってました… 恥ずかしい
うぅ… 本当すみません.せめてスライドだけでも差し替えができないかは問い合わせてみますしかし,こういったご指摘は大変ありがたいです
とりあえず正しい方法だけ
a.csvとb.csvがあって
それをzというzipファイルに格納した場合
FILENAME indata ZIP "xxxx\z.zip" member="*";
data sample;
length fname zipname memname csvname $200.;
memname = ' ';
INFILE indata dlm="," filename=fname memvar=memname end=done ;
do while(^done);
input a b;
zipname=fname;
csvname=memname;
output;
end;
run;
ちょっとmemvarオプションがわかりにくいのですが,ブランクにするとzip内の全部の
ファイルが読み込み対象となり,読み込み開始時点でファイルの名前が入ります
zip内の全ファイルの走査が終わるまでinputを繰り返すという作業のためendとの併用で
ループになります
あぁ…,後輩には散々,見返せとか検証しろとか言っておいて,自分の論文でこれとは酷い