Handouts zum SAS-Forums-Vortrag "SAS Know-how im Handgepäck - SAS9 vor Augen"
Verfasst von AndreasMangold am 20 November, 2006 - 13:41
Wie vorigen Donnerstag auf dem SAS Forum in Bonn versprochen, hier nun die Vortragshandouts (auf "weiterlesen" klicken). Da die Vollversion sehr viele Screenshots enthält, habe ich die Handouts aufgeteilt. Wer die Beispielprogramme haben möchte, schicke mir bitte eine e-Mail über Redscope.
- Gesamter Vortrag einschließlich Screenshots (12 MB)
- Gesamter Vortrag ohne Screenshots, nur Hintergrundinformationen und Links
Aufgeteilt, mit Screenshots:
- Einleitung
- Schritt 1: "SAS-Know-how im Handgepäck" - Vom Makro zum Stored Process
- Schritt 2: "Makros in neuem Gewand" - SAS Stored Processes
- Schritt 3: "Stets zu Diensten" - SAS-Programme als Webservices über SOAP aufrufen
- Schritt 4: "Den Anwender bei der Hand nehmen" - Anwendungsroutinen für SAS Enterprise Guide entwickeln
- Schritt 5: "Wie sag ich’s der OMA?" - Den Metadatenserver schlau nutzen
»
- Anmelden oder Registrieren um Kommentare zu schreiben

Webservices in SAS 9.2
Zum Thema Webservices hier noch eine Zusatzinfo: ein SUGI-Artikel nimmt unter anderem zu der Frage Stellung, was sich in SAS 9.2 hier ändern wird.
In SAS 9.2 werden die SAS BI Webservices MTOM (Message Transmission Optimization Mechanism) unterstützen, so dass man auch Images und andere Dateien zurückgeben kann (ohne den Weg einzuschlagen, den ich im Schritt 3 beschrieben habe). Außerdem soll die WSDL-Unterstützung in SAS 9.2 besser werden.
STPDefineParameter-Macro
Hallo Herr Mangold,
ich habe das STPDefineParameter-Macro jetzt zum laufen gebracht. Ist ein sehr praktisches Macro wie ich finde. Einziges Problem ist, dass ich bis jetzt nur Eingaben mit Numeric-Werten analog Ihres Beispiels benutzen konnte. Bei String-Eingabewerten bekomme ich in der Management Console unter Parameter-Constraints einen xml-Formatierungsfehler.
Ist Ihnen dies schon gelungen?
Schöne Grüße
Jens Schäfer
Habe es erfolgreich mit String-Parametern ausprobiert
Tut mir leid - hat etwas gedauert.
Ich konnte folgendes Beispiel mit einem Stringparameter zum Laufen bekommen (der Stored Process hat einen String-Parameter namens parm ohne Gruppe):
DATA parmlist;
val = 'AAA'; OUTPUT;
val = 'BBB'; OUTPUT;
val = 'CCC'; OUTPUT;
RUN;
/* In den Metadaten speichern */
OPTIONS MPRINT;
%STPDefineParameter(
STP = /Samples/SAS Forum 2006/Strings
,PARM = parm
,ENUMDATA = parmlist
,VALUECOL = val
,REQUIRED = Y
,DEFAULT = AAA
,PARMVAR = parm
);
Wichtig ist, dass man alle Eigenschaften des Stored-Process-Parameters angibt, auch die, die man eigentlich nicht ändern möchte.
%stpdefineparameter übernimmt keine Formate ?
Hallo Herr Mangold,
wir haben Ihr Beispiel zum Ändern von Wertelisten mittels %stpdefineparameter ausprobiert. Das klappte auch wunderbar.
Allerdings haben wir für unsere produktiven Beispiele häufig den Fall, dass der auswählbare Wert formatiert dargestellt werden soll, weil sich Schlüsselwerte dahinter verbergen. Unsere Feststellung ist, dass die formatierten Werte nicht korrekt übernommen werden. Als Beispiel eine Modifikation Ihres Modells:
PROC SQL NOPRINT;
CREATE TABLE work.year AS
SELECT DISTINCT year FROM sashelp.orsales;
INSERT INTO work.year VALUES (2003);
INSERT INTO work.year VALUES (2004);
INSERT INTO work.year VALUES (2005);
QUIT;
data year;
set year;
yearcol= year;
format yearcol z8.;
run;
/* das sind die Parameter für das Makro, labelcol wurde für die
formatierte Variable aufgenommen */
%STPDefineParameter(
STP = //Foundation/TestVerzeichnis/orsales
,PARMGROUP = Datenauswahl
,PARM = Bitte das Jahr auswählen
,ENUMDATA = work.year
,VALUECOL = year
,LABELCOL = yearcol
,REQUIRED = Y
,DEFAULT = 2005
,PARMVAR = year
);
Das Programm lief fehlerfrei. In der Workdatei ENUMTEMP ist die Anzeige korrekt. Im Stored Process werden die Formate leider nicht übernommen. Haben Sie die gleiche Erfahrung gemacht oder können Sie uns einen Hinweis auf einen möglichen Fehler geben?
Mit freundlichem Gruß Catrin Skamira
formatierten Wert statt Wert mit Format
Ich kann das jetzt gerade nicht ausprobieren, nehme aber an, dass es funktioniert, wenn Sie das Format explizit anwenden:
set year;
yearcol= put(year, z8.);
run;
Charaktervarialen zum Anzeigen der Formate
Hallo Herr Mangold,
danke für die Reaktion. Ja, das hatten wir ausprobiert. Wenn man Charaktervariablen mit den formatierten Werten bei labelcol übergibt, geht alles soweit gut.
Freundlicher Gruß
Catrin Skamira
Problem erkannt...
Kein Problem. Ich bin jetzt auch drauf gekommen, warum es bei mir nicht funktioniert hat. Ich hatte bei meiner Eingabedatei für die Parameterliste verschiedene Namen, die auch das Sonderzeichen '&' enthielten. Dabei gab es Probleme in der MC, wobei man bei direkter Eingabe eines Parameters in der MC diese Zeichen verwenden kann.
das folgende Beispiel würde so nicht funktionieren, an der Stelle muss man aufpassen.
val = 'AAA & DDD'; OUTPUT; * <-- '&' Sonderzeichen;
val = 'BBB'; OUTPUT;
val = 'CCC'; OUTPUT;
RUN;
OPTIONS MPRINT;
%STPDefineParameter(
STP = /Test/Test Parameterliste
/* ,PARMGROUP = / */ /* Name Parametergruppe */
,PARM = GA_Name /* Name Parameter */
,ENUMDATA = parmlist /* Datei mit Parameterwerten */
,VALUECOL = val /* Spalte, die die Werte enthlt */
,REQUIRED = Y /* Der Parameter ist erforderlich */
,DEFAULT = MUSTER /* Voreinstellung angeben */
,PARMVAR = user_ga_name /* Die Makrovariable des Parameters */
);
SAS Stored Processes und Display Manager
Kann man SAS Stored Processes auch mit dem Display Manager erstellen?
MfG Moritz Duhme
ING DiBa
Displaymanager plus Management Console
Wenn man nicht den SAS Enterprise Guide verwenden möchte (was ich immer bevorzugen würde), kann man wie folgt vorgehen:
Theoretisch ist es denkbar, dass man auch durch Aufrufe des Metadaten-APIs im SAS Data Step die entsprechenden Einträge in den Metadaten erstellt. Das ist aber nicht dokumentiert und nicht zu empfehlen, so lange es von SAS nicht durch Bereitstellung entsprechender Makros oder auch einer eigenen Prozedur (PROC STP?) unterstützt wird. Warten wir ab, was die Version 9.2 bringen wird.