Hi,
I'm trying to write a txt file with sas. The file will contain a value of a macro variable and that mcro variable could contain double quote. Example
%let myvar=ORACLE execute error: ORA-01400: cannot insert NULL into ("blabla"."blabla"."blabla");
%let bodyfile=/mydir/mytxt.txt;
data _null_;
file "&bodyfile.";
put &myvar.;
run;
It does not work. What is wrong?
Any help will be appreciate.
Thanks
The combination of these two lines:
%let myvar=ORACLE execute error: ORA-01400: cannot insert NULL into ("blabla"."blabla"."blabla");
put &myvar.;
Will be:
put ORACLE execute error: ORA-01400: cannot insert NULL into ("blabla"."blabla"."blabla");
Which is clearly not what you want as it will look for variables named ORACE, EXECUTE, CANNOT etc.
The proper syntax you want is:
put "ORACLE execute error: ORA-01400: cannot insert NULL into (""blabla"".""blabla"".""blabla"")";
To get that use the QUOTE() function.
put %sysfunc(quote(&myvar)) ;
The combination of these two lines:
%let myvar=ORACLE execute error: ORA-01400: cannot insert NULL into ("blabla"."blabla"."blabla");
put &myvar.;
Will be:
put ORACLE execute error: ORA-01400: cannot insert NULL into ("blabla"."blabla"."blabla");
Which is clearly not what you want as it will look for variables named ORACE, EXECUTE, CANNOT etc.
The proper syntax you want is:
put "ORACLE execute error: ORA-01400: cannot insert NULL into (""blabla"".""blabla"".""blabla"")";
To get that use the QUOTE() function.
put %sysfunc(quote(&myvar)) ;
Thank Tom, it worked
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.
Ready to level-up your skills? Choose your own adventure.