BookmarkSubscribeRSS Feed
chouchou
Calcite | Level 5

%macro pbuffparms / parmbuff;

  ods graphics on / reset=all;

  %*----Process this section when parameter values specified;

  %if &syspbuff ne %then %do;

    %let i=1;

    %let month=%scan(&syspbuff,&i);

    %do %while(&month ne);

      proc sgplot data=books.ytdsales

                    (where=(month(datesold)=&month));

        title “Section Sales Report for Month &month”;

        hbar section / response=saleprice stat=sum

                       datalabel;

        yaxis label=' ';

      run;

      %let i=%eval(&i+1);

      %let month=%scan(&syspbuff,&i);

   %end;

  %end;

  %*----Process this section when no parameter values

        specified;

  %else %do;

    proc sgplot data=books.ytdsales;

      title “Annual Section Sales by Quarter”;

      hbar section / response=saleprice stat=sum

                     group=datesold;

      yaxis label=' ';

      label datesold='Quarter';

      format datesold qtr.;

    run;

  %end;

%mend pbuffparms;

*----Analyze sales for August and November;

%pbuffparms(8,11)  It only comes out one graph titled "Section Sales Report for Month &month", obviously &syspbuff wasn't resolved. Could anyone help me out with this problem? Thank you so much.



1 REPLY 1
art297
Opal | Level 21

Your logic appears to work .. at least the following worked for me:

data test;

  set sashelp.class;

  datesold=mdy(age-10,1,2014);

run;

%macro pbuffparms / parmbuff;

  %*----Process this section when parameter values specified;

  %if &syspbuff ne %then %do;

    %let i=1;

    %let month=%scan(&syspbuff,&i);

    %do %while(&month ne);

      proc print data=test

                    (where=(month(datesold)=&month));

        title “Section Sales Report for Month &month”;

      run;

      %let i=%eval(&i+1);

      %let month=%scan(&syspbuff,&i);

   %end;

  %end;

%mend;

%pbuffparms(4,6)

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 1 reply
  • 889 views
  • 0 likes
  • 2 in conversation