BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.

Seems a benefit of stored processes is that a single stored process could be invoked by lots of different applications (web report studio, stored process web app, EG, office-add on, information delivery portal, blah blah).

Sometimes the code executed should vary, depending on which application invoked the process.  For example, a stored process might give user option of using a prompt to set _odsdest= html | rtf | pdf.  If that stored process is invoked from SPWA, all should be fine.  But if it is invoked from office-add on and user selects PDF, the stored process should force the destination to be rtf or html, because Excel knows not of pdf.  Or maybe I am coding a javascript alert, which I guess would only work when the process is called from SPWA or IDP.

Is there a macro variable (or other environment variable) that can reliably indicate what sort of app invoked the stored process?  So I would use it the same way as in vanilla SAS, I use &SYSENV to determine if code is being run in interactive mode or batch?

Thanks,

--Q.

Check out the Boston Area SAS Users Group (BASUG) video archives: https://www.basug.org/videos.
1 ACCEPTED SOLUTION

Accepted Solutions
Cynthia_sas
SAS Super FREQ

Hi:

  One thing that I do is test the value or existence of the automatic variable &_URL -- if it has a value, then the stored process was requested by either the IDP or the SPWA. If &_URL is not in the global symbol table, then the stored process was requested by a different client app. If you are allowing the users to select a value for destination, then of course, you can test the value of &_ODSDEST -- if they were using RTF or PDF, for example, you might not use your code that inserts JavaScript.. but for JavaScript, testing &_URL is probably more reliable than &_ODSDEST.

  In some instances, &_CLIENT might give you something usable. But, if the CLIENT cannot be determined, then you get just server info. New with 9.3 is &_MSOFFICECLIENT, whose value will tell you the name of the Office client (Excel, Word, PowerPoint, or Outlook) that made a request for a stored process.

  The bottom line is that you'd have to code some tests, probably in a macro program inside your stored process. The full list of reserved macro variables differed in earlier versions of SAS. This is the list for 9.3 in the doc:

http://support.sas.com/documentation/cdl/en/stpug/62758/HTML/default/viewer.htm#p184mqqbi9w6qjn1q061...

cynthia

View solution in original post

2 REPLIES 2
Cynthia_sas
SAS Super FREQ

Hi:

  One thing that I do is test the value or existence of the automatic variable &_URL -- if it has a value, then the stored process was requested by either the IDP or the SPWA. If &_URL is not in the global symbol table, then the stored process was requested by a different client app. If you are allowing the users to select a value for destination, then of course, you can test the value of &_ODSDEST -- if they were using RTF or PDF, for example, you might not use your code that inserts JavaScript.. but for JavaScript, testing &_URL is probably more reliable than &_ODSDEST.

  In some instances, &_CLIENT might give you something usable. But, if the CLIENT cannot be determined, then you get just server info. New with 9.3 is &_MSOFFICECLIENT, whose value will tell you the name of the Office client (Excel, Word, PowerPoint, or Outlook) that made a request for a stored process.

  The bottom line is that you'd have to code some tests, probably in a macro program inside your stored process. The full list of reserved macro variables differed in earlier versions of SAS. This is the list for 9.3 in the doc:

http://support.sas.com/documentation/cdl/en/stpug/62758/HTML/default/viewer.htm#p184mqqbi9w6qjn1q061...

cynthia

Quentin
PROC Star

Thanks Cynthia,

Looks like I can get most of the way by testing &_URL and &_MSOFFICECLIENT.

--Q.

Check out the Boston Area SAS Users Group (BASUG) video archives: https://www.basug.org/videos.

SAS INNOVATE 2024

Innovate_SAS_Blue.png

Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.

If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website. 

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.

Get the $99 certification deal.jpg

 

 

Back in the Classroom!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 2 replies
  • 748 views
  • 0 likes
  • 2 in conversation