実行ログに含まれるエラーメッセージをプログラム的に特定したい
[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;
|