0

マクロを使用してデータを出力するときに、いつどこで改ページが発生するかを定義する方法があるかどうか疑問に思っています。さまざまな ODS タグセット内で「Startpage=NOW」を使用できることは知っていますが、そのタグセット内でマクロを使用すると機能しないようです。したがって、基本的には、2 つのテーブルと各個人 ID コードのグラフを 1 つにまとめ、次のページに同じ要約グラフ、その個人のグラフなどを含める必要があります。現在、すべてのテーブルとグラフを独自のものにすることしかできません。長いレポートになる個々のページ!ヘルプ/提案をいただければ幸いです。

    /*************************************************************************/
    /* Create a macro variable of all the ID codes                       */
    /*                                                                  */
    /*************************************************************************/

    proc sql noprint;
        select personal_id
        into :varlist separated by ' ' /*Each identifier code in the list is sep. by a single space*/
    from provider;
    quit;

    %let cntlist = &sqlobs; /*Store a count of the number of id codes*/
    %put &varlist; /*Print the codes to the log to be sure our list is accurate*/

    ods tagsets.rtf file="C:\USER\test.doc" style=sasdocprinter;

 /*  macro for generating the output table*/        

    %macro output(x);

    proc print data=prov_&x;
    run;


    proc print data=prov_revCD_&x;
    run;

    /*Print graph to template defined earlier*/
    ods graphics on / height=500px width=500px;
    proc sgrender data=summary_&x template=corf_graphs;
    run;
    ods graphics on / reset=all;


    %mend;

    %macro loopit(mylist);
        %let else=;
       %let n = %sysfunc(countw(&mylist)); /*let n=number of codes in the list*/
        data 
       %do I=0 %to &n;
          %let val = %scan(&mylist,&I); /*Let val= the ith code in the list*/
        %end;
    /*Run a loop for each oscar code. Each code will enter the 
       %do j=0 %to &n;
          %let val = %scan(&mylist,&j); /*Let val= the jth code in the list*/
    /*Run the macro loop to generate the required tables*/
    %runtab(&val);

    %output(&val);

       %end;
       run;


    %mend;
    %loopit(&varlist)
    /*Run the macro loop over the list of significant procedure code values*/



    ods tagsets.rtf close;
4

3 に答える 3

0

マクロの使用を超えて、pagebywithを使用しproc printてページを分割することも検討できます。

PageBY については、このリンクを参照してください。

于 2015-06-09T02:01:53.743 に答える
0

マクロはソースコード生成装置に他なりません。特定のテクニックの有効性に影響を与えることはありません。

この場合、 の 1 回の繰り返し全体を 1 ページに収めたい場合は、呼び出しの前に%output()a を追加するだけです。startpage now%output(&val)

  %runtab(&val);

  ods tagsets.rtf startpage=now;

  %output(&val);

%end;

これにより、出力の直前に startpage 命令が生成されます。呼び出しの前に常に%output新しいページが必要な場合は、マクロに簡単に含めることができます。

于 2015-06-08T14:37:51.370 に答える