実行ログに含まれるエラーメッセージをプログラム的に特定したい
[OS] Windows
[リリース] ALL
[キーワード] LOG, ERROR, DATA STEP
[質問]
SASバッチジョブの実行ログ (.log) を特定フォルダ配下に保存しています。 SASを使って実行ログに含まれるエラーメッセージを網羅的に検索することは可能でしょうか?
[回答]次の様なDATAステップを記述することで可能です。 このプログラムはc:¥logdir配下に含まれる、.logという拡張子を持つログファイルの内容を検索し、メッセージ先頭に「ERROR」が含まれる行の情報を出力します。 例)
%LET path=c:¥temp;
FILENAME subdir PIPE "DIR &path.¥*.log /B /A-D-H";
DATA _tmp;
INFILE subdir TRUNCOVER;
LENGTH fname $255 fpath $32767 linemsg $255;
INPUT fname $255.;
fpath=CATS("&path","¥",fname);
read=fpath;
INFILE dummy FILEVAR=read END=DONE TRUNCOVER DSD DLM="00"X;
linenum=0;
DO WHILE(NOT DONE);
linenum+1;
INPUT linemsg & $255.;
IF UPCASE(SUBSTR(linemsg,1,5))="ERROR" THEN OUTPUT;
END;
LABEL fpath="ログファイル" linemsg="エラーメッセージ" linenum="行番号";
DROP fname;
RUN;
PROC PRINT DATA=_tmp LABEL;
RUN;
|
|