SAS宏将从输入SAS数据集生成PDF / Excel / RTF报告

时间:2016-01-05 07:04:56

标签: sas sas-macro

需要GENERIC SAS宏从输入SAS数据集生成PDF / Excel / RTF报告。

以下是要使用的参数---->

1)indsn - 输入数据集 2)varlist - 要打印的变量列表。如果没有则打印数据集中的所有变量 3)report_type - PDF或Excel或RTF。您需要使用适当的ODS声明。 4)title1 - 报告的Title1 5)脚注1 - 报告脚注1 6)report_location - 报告的物理位置

请帮我构建上述问题的逻辑???

尝试做远:

CFBundleShortVersionString

1 6 4 4 5    6 5 4 5 5    3 7 9 5 9
   7 9 4 8 6     跑; ods pdf file =' /folders/myfolders/v.pdf' ;;

data test; 
input ID var1 var2 var3 var4; 
cards; 

这只是宏的一半。

1 个答案:

答案 0 :(得分:0)

首先,欢迎访问该网站!

这是一个满足您需求的宏:

*ProcessBody;
%macro reportgen(indsn=,varlist=, report_type=, title1=, footnote1=, report_location=);

    /* Windows related option */
    goptions device=actximg;

    /* Check if report path specified and abort gracefully if it isn't */
    %if "&report_location"="" %then
        %do;

            data _NULL_;
                putlog "ERROR: No destionation. Report aborted.";
            RUN;
        %GOTO done; 
        %end;

    /* If varlist present, then keep only varlist */
    %if &varlist ne %then
        %do;

            data tmp (keep= &varlist);
                set &indsn;
            run;

            %let indsn=tmp;
        %end;

    /* Close all ODS destionations before oppening the one required */
    ODS _ALL_ close;

    ODS &report_type file="&report_location";

    /* Specify Title and Footnote */ 
    %if &title1 ne %then
        %do;
            title "&title1";
        %end;

    %if &footnote1 ne %then
        %do;
            footnote "&footnote1";
        %end;

    /* Print the output */ 
    proc print data=&indsn;
    run;

    /* Completion */ 
    ODS _ALL_ close;
    %done:
%mend;

示例电话:

%reportgen(indsn=sashelp.class,varlist=name,report_type=RTF,title1=Hello World!,footnote1=Goodbye World!,report_location=/home/tmp/test.RTF);