04-06-2011 03:12 PM
08-02-2013 08:58 AM
is it a dynamic prompt using a dataset as input (9.2 and later)?
In that case there are undocumented requirements possible indicating a design/coding error by SAS institute.
06-30-2015 06:23 AM
The same error occured in my EG project that have a dynamic prompt using a dataset. (EG 6.1)
Where can I get the undocumented requirements that you mentioned?
Or should I ask tech support?
06-30-2015 08:28 AM
You should surely contact TS for that.
The directio I am aiming at is that conditional prompts dynamic prompts are processed before your process has been started. Not necessary sharing the same Sas session or even not necessary sharing the same app server.
When that is the real root cause that is a sas design and sas implemtation error. The common behavior of SAS TS is avoiding that kind of internal Sas trouble and going for bypasses instead.
So be sure on what you requirements are and implementation is.
06-30-2015 03:35 PM
I had a similar issue and developed a workaround.
*Make certain that your code contains the following *ProcessBody; %stpbegin; %stpend; statements in the right places.
*Make certain that your code defines all macro variables as global. This works best for me if I place the %global before the *ProcessBody;.
*Have a general understanding of the macro %_eg_WhereParam
*If your macro variable can contain many values, be sure to understand the macroname0, macroname and ¯oname_count macro variables. My macro variable is named brand. The Stored Process prompt returned the macro variables "brand", "brand0" and "brand_count". The number of brand variables I found are brand1 to brand&brand_count.
%let sp = ,;
%if %sysevalf(&brand_count) = %sysevalf(1) %then %do;
%let brandlst = "&bran.";
%let brandlst =;
%do k = 1 %to %sysevalf(&brand_count.);
%if &k. = 1 %then %let brandlst = %quote("&&brand&k.");
%else %let brandlst = %qsysfunc(catx(%quote(&sp.),&brandlst.,%QUOTE("&&brand&k.")));
%if k = %sysevalf(&brand_count.) %then %do;
%let brandlst = %quote(&brandlst.);
I used the &brandlist macro this way.
WHERE t1.BRAND NOT IS MISSING
AND t1.BRAND IN