BookmarkSubscribeRSS Feed
uvaraj
Calcite | Level 5

I am trying to red the dataset in SAS and write it to a file as HTML content ,to open it in xls format.

When i try to execute the code at line "put "<TD class="xl13cAlign" x:num='&v7'>&v7</TD>";" it giving error stating " Statement is not valid or used out of proper order." if i remove the macro call or remove the proc sql which i do to read the data from dataset it is working fine. any idea what is the issue?.

Pease suggest.

%macro getOrders(dataSetName,x,Y,I);

proc sql;

create table return  as  (

select orders from

&dataSetName

where bi =%unquote(%str((%'&B%'))) and iss_yr=%unquote(%str((%'&Y%')))  and iss_no=%unquote(%str((%'&I%')))

);

run;

quit;

       

                  %let id1=%sysfunc(open(return));

                %let NObs1=%sysfunc(attrn(&id1,NOBS));

               

                %syscall set(id1);

                %do i1=1 %to &NObs1;

                                %let rc1=%sysfunc(fetchobs(&id1,&i1));

                                %let v7 = %NRBQUOTE(&orders);

                                put "<TD class="xl13cAlign" x:num='&v7'>&v7</TD>";

                              

                %end;

%mend getOrders;

                %macro excelPrintValues(dataSetName);

                data _null_;

                file "d:\twr\work\rpt207_report_&id._1.xls";

                put '<html xmlns:o="urn:schemas-microsoft-com:office:office"';

                put 'xmlns:x="urn:schemas-microsoft-com:office:excel"';

                put 'xmlns="http://www.w3.org/TR/REC-html40">';

                put '<head>';

                %let id=%sysfunc(open(&dataSetName));

                %let NObs=%sysfunc(attrn(&id,NOBS));

               

                %syscall set(id);

                %do i=1 %to &NObs;

                                %let rc=%sysfunc(fetchobs(&id,&i));

                                %let v1 = %NRBQUOTE(&B);

                                %let v2 = %NRBQUOTE(&T);

                                %let v3= %NRBQUOTE(&F);

                                 %let v13 = %NRBQUOTE(&Y);  

                                %let v4= %NRBQUOTE(&I);                                        

                                %let v5 = %NRBQUOTE(&o);                   

                                %let v6 = %NRBQUOTE(&o);

                              

                           

                          

                            put "<tr>";

                            put "<TD class="xl13cAlign" x:num='&v1'>&v1</TD>";

                            put "<TD class="xl13cAlign" >&v2</TD>";

                            put "<TD class="xl13cAlign" >&v3</TD>";

                            put "<TD class="xl13cAlign" x:num='&v13'>&v13</TD>";

                            put "<TD class="xl13cAlign" x:num='&v4'>&v4</TD>";

                            put "<TD class="xl13cAlign" x:num='&v5'>&v5</TD>";

                            put "<TD class="xl13cAlign" x:num='&v6'>&v6</TD>";

                          

                            getOrders(order_details,&B,&Y,&I);

                          

                          

                      

                            put "</tr>";

                          

             

                %end;

                %let id=sysfunc(close(&id));

%mend excelPrintValues;

2 REPLIES 2
Doc_Duke
Rhodochrosite | Level 12

The first PUT statement has to be inside a DATA step.  You put it between the end of the PROC SQL and the beginning of the DATA _NULL_.

mimi
Calcite | Level 5

I think you need %put

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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
  • 2 replies
  • 2248 views
  • 0 likes
  • 3 in conversation