ODS Das Output Delivery System Eine Einführung Grischa Pfister Info Ware Gesellschaft für DV-Beratung mbh Waldhofer Straße 11/5 69123 Heidelberg Tel 06221/8228-0 Fax 06221/8228-20 www.info-ware.de Info@info-ware.de Einleitung 10 Zeitrahmen 8:30 12:00 Uhr Pause 10:00 10:15 Uhr 10 Ablauf Vortrag Anwendungsbeispiele 10 Fragen Immer und jederzeit 1
Agenda 10 Das Konzept 10 Grundlegende Beispiele 10 Output Objekte 10 Der Output Kanal 10 Seitenkontrolle bei RTF/PDF/Printer 10 HTML Ausgabe 10 ODS und Graphiken 10 ODS Styles 10 ODS und Reporting Prozeduren 10 Table & Style Templates Literaturhinweise 10 Haworth, Lauren E. (2001): Output Delivery System: The Basics, Cary, NC. [Reihe Books by users] 10 SAS OnlineDoc Im Lieferumfang enthalten Auch online verfügbar (mit Registrierung) 10 www.sas.com SAS/BASE Community 2
Das Konzept SAS-Output vor ODS 10 Zwei Formen Listing im Output-Fenster Ausgabe-Tabellen 10 Nachteile Manche Prozeduren erzeugen keine Tabellen Nicht alle Informationen in Tabellen Statisch Beschränkung auf Proportional(?)-Schriftarten Keine echte Tabellenstruktur Übernahme in Textverarbeitung, Tabellenkalkulation, Graphikprogramme schwer oder gar nicht möglich Hoher Nachbearbeitungsaufwand 3
SAS-Output mit ODS 10 WYSIWYG Alles was im OUTPUT-Fenster erscheint steht im ODS zur Verfügung Alle Informationen aller Prozeduren 10 Parallelisierung des Output Ergebnisse werden an viele Kanäle gleichzeitig geliefert 10 Gliederung des Output Prozedur-Output wird in Objekte zerlegt Zugriff auf jedes einzelne Objekt möglich ODS Ausgabe-Kanäle 10 Listing 10 Output 10 HTML 10 PDF 10 RTF 10 PRINTER 10 PS 10 Experimental LateX XML... Output-Fenster SAS-Tabelle Dokument für WWW Dokument für Acrobat Reader Dokument für Textverarbeitung Systemdrucker Postscript 4
Funktionsweise des ODS Listing Daten- Komponente Kanal Listing Output Style SAS-Tabelle HTML Dokument Table Template Output-Objekt HTML RTF PDF PRINTER... Template RTF Dokument PDF Dokument Ausdruck... ODS-Syntax 10 Globale Statements Voll batch-fähig 10 Schalterprinzip Kanal wird geöffnet Output von Prozeduren/Data Steps Kanal wird geschlossen Ergebnis ist betrachtbar 5
Öffnen und Schließen von ODS-Kanälen 10 Öffnen eines Kanals Ods Kanal; Ods Kanal file= ; Ods Kanal output-objekt=sas-tabelle; 10 Schließen eines Kanals Ods Kanal close; Ods _all_ close; 10 Grundprinzip Es muss mindestens ein Kanal geöffnet sein Ansonsten Warning im LOG-Fenster Grundlegende Beispiele 6
Ods Listing 10 Ein-/Ausschalten Ods Listing;... Ods Listing close; 10 Beispiel01.sas Ods Html 10 Ein-/Ausschalten Ods Html file=fileref pfad ;... Ods Html close; 10 Beispiel02.sas 7
Ods Pdf 10 Ein-/Ausschalten Ods Pdf file = fileref pfad ;... Ods Pdf close 10 Beispiel03.sas Ods Rtf 10 Ein-/Ausschalten Ods Rtf file = fileref pfad... Ods Rtf close; 10 Beispiel04.sas 8
Ods Printer/PS 10 Ein-/Ausschalten Ods Printer <display>; Ods PS file = fileref pfad ;... Ods Printer/PS close; 10 Beispiel05.sas Mehrere Kanäle gleichzeitig verwenden 10 Unterschiedliche Kanäle Ods Pdf file = fileref pfad ; Ods Html file = fileref pfad ;... Ods _all_ close 10 Beispiel06.sas 9
Mehrere Kanäle gleichzeitig verwenden 10 Gleiche Kanäle Ods Html (id=1) file = fileref pfad ; Ods Html (id=2) file = fileref pfad ;... Ods Html (1) close;... Ods Html (2) close 10 Beispiel07.sas Ods Grundeinstellungen 10 Tools -> Options -> Preferences 10 Tabber Results Ods Listing; Ergebnisse als HTML Style = default Web-Browser ❿ Umstellen unter Tabber Web Direkte Anzeige der Ergebnisse 10
Output Objekte 10 Ods teilt Prozedur-Output in Objekte ein Jedes Objekt ist identifizierbar Jedes Objekt ist einzeln ansprechbar 10 Anzahl der Output Objekte ist abhängig von Prozedur Prozedur-Optionen By-Gruppen 11
10 Identifizieren von Output Objekten Ods Trace on;... Ods Trace off; 10 Inhalt des Trace-Satzes Name des Output Objektes Label des Output Objektes Name des verwendeten Table Templates Pfad des Output Objekts 10 Beispiel08.sas 10 Results-Fenster zeigt Output Objekte an Auswahl von Output Objekten 10 Select-/Exclude-Liste Enthält Auswahl von Output Objekten Eine globale Liste Eine Liste für jeden aktiven Kanal 10 Anzeigen der Select-/Exclude-Liste Ods <Kanal> show; Dabei muss der Kanal muss aktiv sein 10 Beispiel09.sas 12
10 Auswahl von Output Objekten Ods <Kanal> Select ods-objekt <ods-objekt...>; Ods <Kanal> Exclude ods-objekt <ods-objekt...>; Ods <Kanal> Select Exclude all none; Dabei kann ods-objekt sein ❿ Name aus Trace-Satz ❿ Pfad aus Trace-Satz ❿ Label aus Trace-Satz ❿ Mischung aus Label und Pfad 10 Beispiel10.sas Voreinstellungen der Auswahllisten 10 Globale Select-/Exclude-Liste Select all 10 Alle Bericht-Kanäle Select all 10 Output-Kanal Exclude all 10 Beispiel11.sas 13
10 Gültigkeitsdauer der Auswahl Nachfolgende Prozedur 10 Option persist macht Auswahl eines Objektes dauerhaft muss mit neuem Statement überschrieben werden Ods <Kanal> Select Exclude ods-objekt (persist);... Ods <Kanal> Select all; 10 Beispiel12.sas Output Kanal 14
Ods Output 10 Ein-/Ausschalten Ods Output ods-objekt = SAS-Tabelle...;... Ods Output close; 10 Beispiel13.sas 10 Verarbeitung von By-Gruppen Standardverhalten: alle By-Gruppen in eine Tabelle Match_all-Option: Ods Output ods-objekt(match_all<=mvar>)= SAS-Tabelle; jede By-Gruppe in eigene Tabelle automatische Benennung mvar enthält Namen der erzeugten Tabellen 10 Beispiel14.sas 15
10 Verarbeiten mehrerer Prozeduren match_all + persist-option Ods Output ods-objekt(match_all<=mvar <persist=run proc>>) = SAS- Tabelle;... Ods Output close; Erhält Benennungsschema Seitenkontrolle bei RTF/PDF/PRINTER 16
10 Grundeinstellung Jede Prozedur beginnt neue Seite Innerhalb der Prozedur selbst keine Eingriffsmöglichkeit 10 Seitenumbrüche steuern Startpage-Anweisung Ods Kanal startpage=off; Schaltet automatischen Seitenumbruch nach Prozedur aus Ods Kanal startpage=on; Schaltet automatischen Seitenumbruch nach Prozedur ein Ods Kanal startpage=now; In Verbindung mit Ods Startpage off erzwingt Seitenumbruch an bestimmter Stelle 10 Beispiel15.sas 10 Optionen für die Seitengestaltung Title Titel Footnote Fußnoten [no]center linksbündig [no]number keine Seitenzahlen [no]date kein Datum Orientation = portrait landscape Hochformat Querformat papersize = A4 (x,y) Seitengröße [left right top bottom]margin=n Randeinstellungen Funktionieren aber nicht immer mit allen Kanälen... 10 Beispiel16.sas 17
10 Ods Statements für die Seitengestaltung notoc (Pdf) Kein Inhaltsverzeichnis bodytitle (Rtf) Titel im Text (buggy) 10 Title & Footnote Ähnlich SAS/GRAPH verwendbar ❿ Font = Schriftart ❿ Height = Schriftgröße ❿ Color = Farbe ❿ Justification = Ausrichtung 10 Beispiel17.sas HTML Ausgabe 18
10 Erstellen ganzer Web-Sites im batch Statische Reports als HTML Automatische Erzeugung von Framesets Verwendung von Cascading Style Sheets Verlinken verschiedener Seiten Interaktive Graphiken Graphiken mit Hyperlinks Aufsplitten der Ergebnisse auf mehrere Dateien 10 Was ist ein Frameset? Konzept in HTML Zeigt gleichzeitig mehrere HTML-Dateien an Unterteilt die Anzeige in verschiedene Bereiche (Frames) 10 Mit Ods möglich Inhaltsverzeichnis Seitenverzeichnis Hauptseite 19
10 Erstellen eines Frameset mit ODS Ods html path = verzeichnis (url=none) body = name.html contents = name.html page = name.html frame = name.html ; Path: Pfad unter dem alle Dateien angelegt werden (url=none): Hyperlinks werden relativ angelegt Body: Hauptseite Contents: Inhaltsverzeichnis Page: Seitenverzeichnis Frame: Html-Seite, die den Frameset enthält 10 Beispiel18.sas Unterstützung von Cascading Style Sheets 10 Hintergrund HTML: tag-gesteuerte Layoutanweisungen, ASCII Dateien sollen möglichst klein sein Wie wird Layout definiert? ❿ Für jedes Element einzeln ❿ Definition von Klassen (Cascading Style Sheet) 10 Verschiedene Möglichkeiten CSS zu verwenden Ods Html... Css; eingebettetes Stylesheet Ods Html... stylesheet = name.css ; CSS wird erstellt Ods Html... stylesheet = (url= ); vorhandenes Stylesheet wird benutzt 10 Beispiel19.sas 20
10 Aufsplitten des Output HTML-Dateien sollten möglichst klein sein Grundeinstellung: aller Prozedur-Output landet in einer Datei 10 newfile-option Ods Html... newfile = Output Page Proc; Erstellt neue Dateien für ❿ Jedes Output Objekt ❿ Jede logische Seite ❿ Jede Prozedurausgabe 10 Beispiel20.sas 10 Eingriffsmöglichkeiten in das Inhaltsverzeichnis Ods Proclabel text ; Ändert die Hauptüberschrift Option contents = text bei den Prozeduren Print, Report und Tabulate (hier auch als Option im Table-Statement) Ändert die Unterüberschrift(en) Ods nooptitle; Unterdrückt den Prozedurspezifischen Titel 10 Beispiel21.sas 21
10 HTML direkt verwenden Titel und Fußnoten dürfen HTML-Code enthalten 1. Zeichen muss < sein!! 10 Beispiel22.sas 10 Corporate Design nutzen Notop Keine HTML-Startsequenz nobot-anweisungen Keine HTML-Schlusssequenz 10 Beispiel23.sas Ods und Graphiken 22
10 Rtf Scheint momentan noch nicht korrekt zu funktionieren TTFs gehen verloren -> Graphiken getrennt erstellen Devices wmf, emf, sasemf 10 Beispiel24.sas 10 Pdf Vortrag von Heinrich Stürzel 10 HTML Pixel-Graphiken in GIF- bzw. JPEG-Format Werden als Referenz in Seite integriert (<IMG src= >) Ods Html... Gpath = verzeichnis (url=none); setzt das Verzeichnis, in dem Graphiken gespeichert werden 10 SAS/GRAPH Treiber JPEG GIF ❿ Goptions xpixels = n ypixels = n [no]transparency 10 Beispiel25.sas 23
10 Spezielle SAS/GRAPH Treiber ActiveX Java Interaktive Graphiken mit diversen Möglichkeiten wie ❿ Anzeige von Werten ❿ Rotieren ❿ Verschieben ❿ Zoomen ❿ Selektion ❿ Umstellen des Graphiktyps ❿... Strg + LMB Alt + LMB Shift + LMB Strg + Shift + LMB Kontextmenü 10 Beispiel26.sas ODS Html & SAS/GRAPH 10 Erweiterung der Graphik-Prozeduren Graphiken mit Hyperlinks versehen Option html=variable in den verschiedenen Statements 10 Schritte zum Erstellen von gelinkten Graphiken 1. Tabelle mit Drillvariable erzeugen variable = href=name.html ; 2. Graphik erzeugen 3. Die Seiten auf die verwiesen wird erzeugen 10 Beispiel27.sas 24
ODS Styles 10 Abstrakte Beschreibung von ODS-Elementen Dokument Inhaltsverzeichnis Seitenverzeichnis 10 Layoutangaben Farben Schriftarten (Größe, Gestaltung) Tabellengestaltung (Abstände, Ränder) Beschriftung (z.b. des Inhaltsverzeichnisses) 10 Werden immer verwendet HTML -> default RTF -> rtf PDF -> printer PRINTER/PS -> printer 25
10 Mitgelieferte Styles Default D3d Brick statdoc Minimal sasweb barrettsblue... Tools -> Options -> Preferences -> Results Tabber 10 Verwendung von Styles Ods Kanal style=name; 10 Beispiel28.sas ODS und Reporting Prozeduren Proc Print, Proc Report, Proc Tabulate 26
10 Neue Style-Option Style={style-anweisung...}; Style(element)={style-anweisung...}; Überschreibt Layoutanweisungen des gewählten Styles 10 Style Anweisungen (Auswahl) Background = Farbe Foreground = Farbe bordercolor = Farbe Schriftart spezifisch ❿ Font_face= Schriftart ❿ Font_size= Schriftgröße ❿ Font_weight= Schrift-Gewichtung (normal/fett) ❿ Font_style= Darstellung (italic=kursiv) Zellenlayout ❿ Cellheight= ❿ Cellwidth= ❿ Cellpadding= ❿ Cellspacing= ❿ Just= ❿ Vjust= Graphische Elemente ❿ backgroundimage= ❿ preimage= ❿ postimage= Zellenhöhe Zellenbreite Randabstand innerhalb Zelle Abstand zwischen Zellen horizontale Ausrichtung vertikale Ausrichtung Hintergrundbild Bild vor Objekt Bild nach Objekt HTML spezifisch ❿ prehtml= ❿ posthtml= ❿ url= ❿ Flyover= 27
10 Ods & Proc Print Output in Elemente unterteilt Jedes Element kann einzeln gelayoutet werden Style-Angaben für ❿ Gesamt-Tabelle ❿ Spaltenüberschriften ❿ Obs-Spalte ❿ Datenbereich ❿ Einzelne Spalte ❿ Einzelne Zelle (Ampel-Funktion) Achtung bei Formaten: ODS verarbeitet formatierte Werte!!! 10 Beispiel29.sas 10 Ods & Proc Report Globale Angaben als Optionen in Prozeduraufruf ❿ Header ❿ Column Spaltenbezogene Angaben als Optionen im Define-Block ❿ Header ❿ Column 10 Beispiel30.sas 28
10 Ods & Proc Tabulate Verwenden der Style-Option in verschiedenen Statements CLASS CLASSLEVEL VAR KEYWORD BOX-Option TABLE-Statement 10 Beispiel31.sas Table & Style Templates 29
10 Table Template Grund-Layout Aufteilung in Spalten Spaltenbeschriftung Zahlenformatierung Kann auch Style-Anweisungen enthalten 10 Style Template Layout der Elemente Abhängig vom Kanal 10 Objekt-orientierter Ansatz 10 Verwaltung von Table & Style Templates Ods Template Viewer ❿ Kommando odstemplate ❿ Results-Fenster Hierarchische Organisation in itemstore ❿ Defaults: Sashelp.tmplmst (schreibgeschützt) 10 Eigene: Sasuser.Templat Anlegen eigener itemstores mit Proc Template Ods Suchpfad ❿ Ods Path show; ❿ Ods Path libref.itemstore(modus) modus = read update write ❿ Ods Path append prepend remove libref.itemstore(modus) 30
10 Table Templates verändern Beispiel Proc Univariate: Extreme Observations Beschriftung eindeutschen Wird in sasuser.templat gespeichert 10 Beispiel32.sas 10 Style Templates anpassen Neuen Style ableiten Gewünschte Änderungen vornehmen 10 Aufbau des Styles default Definition von Schriftarten Definition von Farben Definition der einzelnen Elemente Hierarchie in OnlineDoc beschrieben Base SAS Software -> Guide to the SAS Output Delivery System -> Reference -> The TEMPLATE Procedure -> Concepts 10 Beispiel33.sas 31
10 Data Step Reporting & Table Templates Mit Table Templates Schablonen entwerfen ❿ Spaltenlayout ❿ Beschriftung ❿ Style-Anweisungen ❿ Ampelfunktion mit Hilfe von ❶ Cellstyle-Anweisung ❶ Style-Anweisung + Expression-Funktion ❶ Style-Anweisung + Format ❿ Berechnete Spalten ❿ Verändern von Werten 10 Beispiel34.sas Beispiel38.sas Noch Fragen? Sollten Sie Fragen oder Anregungen haben wäre ich für eine email dankbar. Grischa_pfister@info-ware.de 32