zoukankan      html  css  js  c++  java
  • SAS:多个LOG的批量查询

    OPTIONS PS=MAX LS=MAX NOCENTER SASMSTORE=SASUSER MSTORED MAUTOSOURCE;

    /*获取指定文件夹的指定类型的所有文件*/

    %MACRO GET_NAME(DIRNAME,TYP,OUT_TABLE)/STORE;/*参数有两个:路径,文件类型后缀*/   

    %PUT %STR(----------->DIRNAME=&DIRNAME)        ;   

    %PUT %STR(----------->TYP=&TYP)                ;   

    DATA TEMP;       

    RC=FILENAME("DIR","&DIRNAME");/*把&DIRNAME值传给文件引用符“DIR"*/      

    OPENFILE=DOPEN("DIR");/*得到路径标示符OPENFILE,DOPEN是打开directory的sas内置函数*/   

    IF OPENFILE>0 THEN DO;/*如果OPENFILE>0表示正确打开路径*/            

    NUMMEM=DNUM(OPENFILE);/*得到路径标示符OPENFILE中member的个数nummem*/            

    DO II=1 TO NUMMEM;                  

    NAME=DREAD(OPENFILE,II);/*用DREAD依次读取每个文件的名字到NAME*/                 

    filepath="&DIRNAME"||NAME;        

    fnum=compress(NAME,".xml","");        

    fnum=compress(fnum,"user_case","");                

    OUTPUT;/*依次输出*/     

    END;   

    END;   

    KEEP NAME filepath fnum;/*只保留filepath、fnum列*/

    RUN;

    PROC SORT DATA=TEMP;/*按照NAME排序*/    

    BY DESCENDING NAME;    

    %IF &TYP^=ALL %THEN %DO;/*是否过滤特定的文件类型&TYP*/        

    WHERE  INDEX(UPCASE(NAME),UPCASE(".&TYP"));/*Y,则通过检索NAME是否包含&TYP的方式过滤文件类型*/    

    %END; RUN;

    DATA &OUT_TABLE(KEEP=NAME ID);  

    SET TEMP;  

    ID=_N_;

    RUN;

    PROC PRINT DATA=&OUT_TABLE;

    RUN;

    %MEND;  

    /*查询LOG中的error与warning*/

    %MACRO CHECK_LOG0(P,LOG_PATH)/STORE;

    %IF &P=1 %THEN;

    %ELSE %DO;  

    DM 'log;"clear";';  RUN; QUIT;

    %END;

    %PUT CHECK AT &SYSDATE;

    %PUT CHECK AT &SYSTIME;

    %PUT #####################;

    DATA _NULL_;  

    INFILE "&LOG_PATH" END=LAST;

     RETAIN LINE 0;

     INPUT Key$ @@;

     line+1;  

    IF line=1 THEN PUT"================================";  

    IF Key in("ERROR:","ERROR","WARNING:") THEN DO;   

    INPUT desc & $100.;   

    PUT Key=desc;   

    OUTPUT;  END;  

    ELSE IF Key ="CHECK" THEN DO;   

    INPUT desc & $10.;  

     PUT "Above was check" desc "----------------------";   

    PUT;  END;  

    ELSE INPUT Key $; RUN;

    %MEND;

    %MACRO CHECK_LOG(INPUT_TABLE,LOG_PATH)/STORE;

    DATA _NULL_;  

    SET &INPUT_TABLE NOBS=NOBS;  

    CALL SYMPUTX('NUM',NOBS);  

    STOP; RUN;

    %DO I=1 %TO #  

    DATA _NULL_;  SET &INPUT_TABLE;  

    IF ID=&I;  

    CALL SYMPUTX('LOG_NAME',NAME);  

    STOP;

    RUN; 

    %PUT #####################; 

    %PUT CHECK &LOG_NAME;  

    %CHECK_LOG0(1,&LOG_PATH.&LOG_NAME.);

    %END;

    %MEND;

    /*调用宏*/

    OPTIONS PS=MAX LS=MAX NOCENTER SASMSTORE=SASUSER MSTORED MAUTOSOURCE;

    LIBNAME S '.DATA';

    %GET_NAME(.DATA,log,S.DIR); /*参数1:log文件所在位置 参数2:读取文件类型 参数3:log文件名存储的数据集名称*/

    %CHECK_LOG(S.DIR,.DATA); /*参数1:log文件名存储的数据集名称 参数2:log文件所在位置*/

  • 相关阅读:
    Html5结构相关元素
    html5文本元素
    html5全局属性
    元数据元素总结
    千里之行,始于足下
    换个角度思考
    java的权限修饰符
    四则运算
    测量软件使用感受
    JQuery高级
  • 原文地址:https://www.cnblogs.com/Anni-love-Ferris-wheel/p/6848982.html
Copyright © 2011-2022 走看看