Hi,
This is in reference to my previous question which has been resolved to use systask to execute a python script
https://communities.sas.com/t5/Base-SAS-Programming/Quoting-on-SYSTASK-command/m-p/340337#M77770
%let command = activate &python_env %nrstr(&&) python %nrquote(""%trim(&python_script_path)\load_data.py"") %nrquote(""%trim(&source)"") %nrquote(""%trim(&target)"") 2> %nrquote(""&logfile..log"");
systask command "&command" wait status=taskrc;
While the double double quote is able to successfully execute the python script, I get this note:
NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended.
49: LINE and COLUMN cannot be determined.
Data is loaded successfully but I get an error due to this problem. Strange that the SAS log says that this is an error when it's a note.
Any help or enlightenment would be greatly appreciated. Thank you!
Thanks!
I know this note for a long time and ignored it without any issues.
Anyway, if you need double-double-quotes, do not insert a blank between them.
What kind of error you got? Is there another message?
A note may result in return-code 4 instead 0.
That may be resolved as "error" in unix/linux script running.
Not really on topic, but would:
data _null_; command=catx(' ',"activate &python_env.",'&&',quote("&python_script_Path.\load_data.py"),quote("&source."),quote("&target."),'2>',quote("&logfile.")); call execute(cat('systask ',command,' wait status=taskrc;')); run;
Not be simpler?
This partially solved my problem totally not off topic and thanks for the suggestion.
As a workaround I had to put the resolving command to a batch file and let systask execute it.
data _null_;
file "&path.\&job..bat";
length command $ 1000;
command=<catx portion>;
put command;
run;
/* execute generated batch job script */
systask command "&path.\&job..bat" wait taskname=&taskname status=taskrc;
Worth a try, that's the only way to tell: Inside a quoting function, some characters (quotes included) can be preceded by a %. Wherever you have:
""
Try replacing it with:
%"%"
@milts wrote:
NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended.
Data is loaded successfully but I get an error due to this problem. Strange that the SAS log says that this is an error when it's a note.
Be very aware that was not an error is is a NOTE.
Currently SAS uses three constructs with a quote followed by a character that I am aware of currently for date, time and datetime literals such as '01JAN2017'D or "12:15:23"t. The note is warning that at some unspecified time in the future the specific string that you are creating with a value like 'sometext'q might start being interpretted in a different fashion if SAS adds a new data literal or implied function or whatever. So they are suggesting that it might be a good idea to use 'sometext' q instead (with a space before the q)
This is all conjecture, but I'd be interested if my suggestion at the end works.
I believe this note came in about the time that name literals (e.g. allowing 'gdp_growth%'n and "gdp_growthpct"n as valid varnames) were introduced.
I guess this is because SAS wanted to reserve the possibility of adding other types of "quote-literals" to the current set (i.e. '01jan1060'd for dates, '12:00:00't for times, '01jan1960:08:45'dt for datetimes, and 'xxx'n for names).
Did you try the suggestion in the note, i.e. following the double-double quotes with a blank (possibly only the "closing" double-double quotes need to be followed by a blank).
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.