When you talk about "web" applications, it's useful (in my opinion) to distinguish between the differing technologies available to you.
If you have SAS/IntrNet (and the Application Broker/Application Dispatcher servers/library) set up, then as soon as you start storing programs in the Dispatcher library, you DO have a set of SAS programs that can be shared and dynamically invoked using SAS/IntrNet. Or to put it another way -- you have a set of programs that can all be executed by sending a URL request from a web browser to a web server like this:
http://www.wombat.com/cgi-bin/broker?_program=yadayada.wombat.sas&_service=default&_debug=132
SAS/IntrNet uses CGI (Common Gateway Interface) technology. A "broker" program sits on the web server and receives HTTP requests from client machines. Of course, that means that somebody has to code the HTML interfaces (forms or web pages) that will dynamically invoke the programs sitting in the Application Dispatcher library. Not many of your users are going to want to type the above URL into their web browser in order to run a SAS program from a web browser.
The programs in the Application Dispatcher library are the same as your basic SAS programs, but for example, because the programs are running on a web server, you can't do something like this:
ODS HTML FILE='c:\temp\wombat.html';
because, let's face it, if you have a UNIX or APPLE web server, you don't ever have a C drive. Instead, you code something like this in your program:
ODS HTML FILE=_webout; This means that your results follow the path or pipeline back from the web server to the machine that initiated the request. The reserved fileref for that "pipeline" for SAS/IntrNet Dispatcher programs is _webout.
But THEN, you had to move the changed program from your local machine to a special library (the Application Dispatcher Library) that was defined to the Application Dispatcher. Then, your request (via URL) would come to the "broker" program and if necessary, the "broker" program would hand off the program to the Application Dispatcher to service the request (aka run the program) and return the results to the requesting client machine.
OK, now move forward in time to now and Stored Processes. In concept, Stored Processes in the SAS Intelligence Platform architecture are very similar in concept to Application Dispatcher programs. Stored Process programs also have to live in a special place. Only, instead of living in a special Application Dispatcher library, they live in a stored process repository.
The advantage of having your stored processes in a repository, is that they can be "shared" and executed from many of the SAS Intelligence Platform client applications. What does that mean? It means that the same Stored Process can be executed from within EG, from within the SAS Add-In for Microsoft Office, from within SAS Web Report studio or from within a custom web page that executed the stored process using the Stored Process Web Application.
The technology change that makes it possible to execute a Stored Process from multiple clients is the fact that information for the stored process is defined in the METADATA server that is the "boss" of the SAS Intelligence Platform applications.
So, let's say I want to create a program that allows the end-user to select a REGION for their request. With SAS/IntrNet, I am responsible for coding an HTML form that shows the user the list of possible REGIONS. And, then my form action kicks off the Application Dispatcher program.
But, if I am using a Stored Process, I can define the "REGION" parameter in the SAS Intelligence Platform metadata. That means that each one of the client applications will use the appropriate interface to prompt the user for the REGION value when they go to run that stored process. I can even make the REGION value required in the metadata definition and THEN, the client interfaces will NOT execute the stored process until they pick a default value AND I can set a default value for the parameter.
And, even better, if I don't want the end users to use EG or Microsoft Word to surface their results, I can still use the Stored Process Web Application to kick off the stored processes via URL -- in pretty much the same fashion that I could do it with SAS/IntrNet.
This is getting to be a quite long post. Sorry 'bout that. I thought SAS/IntrNet was pretty cool -- and having a central Dispatcher library of shareable programs was cool. And I still do think that it's cool. But the metadata wins out over everything else for me...because I just have to write the program once, register the parameters once in the metadata, register what server I want the stored process to run on -- then I'm done...that stored process can run from a variety of client applications without my intervention.
cynthia