Mit der Version 8 wurde das Output Delivery System (ODS) eingeführt. Damit ist es möglich, optisch ansprechende Ausgaben für verschiedene Medien zu erzeugen. Die wichtigsten sind:
Theoretisch ist es möglich, in einem Schritt mehrere Formate gleichzeitig zu erzeugen, indem gleichzeitig mehrere Ausgabekanäle mit verschiedenen Styles geöffnet werden. Aber anspruchsvolle HTML-Ausgaben erfordern doch manuelle Eingriffe, so dass manchmal Macros mit if-then-else-Konstruktionen notwendig werden, um die verschiedenen Formate mit einem Programm zu erzeugen.
Hier sind einige Tips aus unserer Paraxis aufgelistet, die insbesondere den Nutzen von ODS für die Erstellung verschiedener Formate aufzeigen.
ods listing; proc template; source styles.default /file="styledef"; run; Data stdef_tab (index=(from)); infile "styledef" pad lrecl=200; input c $100.; if c =:"style"; style = scan(c,2); from = scan(c,4); RUN; DATA stdef_tree; Length from $32; Array f (10) $32 ; point = 1; do while(1); from = f(point); select(point); when(1) set stdef_tab key=from; when(2) set stdef_tab key=from; when(3) set stdef_tab key=from; when(4) set stdef_tab key=from; when(5) set stdef_tab key=from; when(6) set stdef_tab key=from; when(7) set stdef_tab key=from; when(8) set stdef_tab key=from; when(9) set stdef_tab key=from; when(10) set stdef_tab key=from; end; if _iorc_ = 0 then do; point +1; f(point) = style; end; else do; output; f(point) = ""; point + -1; if point LT 1 then stop; end; end; RUN; Proc print data=std_tree; var f2 - f8; run;
ods escapechar='\'; title2 '\S=foreground=redred \S=foreground=greengreen \S= und normal';Damit lassen sich auch Fonts und andere Eigenschaften direkt ansteuern. Leider funktioniert die indirekte Auswahl über Tabellen im Style nicht (immer?). Auch die Ausrichtung lässt sich besser mit den SAS/Graph-Optionen erzeugen.
title1 'Hier funktioniert weder Farb- noch Fontwahl \S=font=fonts("FixedFont") ' 'foreground=color_list("fgA2")red \S= normal'; title2 'Aber das funktioniert' ' \S=foreground=green font=("Courier",2)green Courier' ' \S=foreground=blue font=("Arial, Helvetica, Helv",8)blue Arial' ' \S= normal'; title3 '\S=just=L So funktioniert linksbündiger Text'; * und hier ein Beispiel mit SAS/Graph-Optionen; title4 j=L c=cyan 'links' j=c c=green h=4 'zentriert' j=r c=blue h=1 'rechts';
OPTIONS PAPERSIZE="ISO A4" ORIENTATION=LANDSCAPE; OPTIONS PAPERSIZE="Letter" ORIENTATION=PORTRAIT;
Ein etwas rudimentäres Beispiel wäre:
options papersize="ISO A4" orientation=LANDSCAPE; options nobyline; ods printer pdf file="~/data/test2.pdf" startpage=NEVER;* style=wstest; ods html file="~/data/test2.html" style=default; ods escapechar='\'; title 'Überschrift'; /* zusätzlicher Text am Anfang der Ausgabe */ data _null_; file print ods; *evtl. =(template='datastep.def'); length name $200; put "Erster Text ist hier"; put "Zweite Zeile kommt auch hier"; run; /* Nur bei HTML Title löschen; */ title; proc report data=work.class nowd; by age; column age name height weight; define age /id group; define name /id group; break after age/SUMMARIZE; define height /mean; define weight /mean; compute before _page_ ; ott= "Alter ist"!!put(age,2.); line ott $11.; ENDCOMP; RUN; /* Text am Ende der Ausgabe Nur bei HTML: Footnote erst hier setzen; */ Footnote "XYZ"; data _null_; file print ods; * =(template='datastep.def'); length text $200; put "\S=foreground=redDas Dicke Ende kommt bestimmt"; put "und zwar HHIIEERR"; run; ods _ALL_ close; title; footnote;
© WS Unternehmensberatung und Controlling-Systeme GmbH
Friedrich-Weinbrenner-Straße 20
69126 Heidelberg
Tel.: 06221 / 401 409
Fax: 06221 / 401 422
EMail: info @ ws-unternehmensberatung.de
Amtsgericht Mannheim, HRB 335485
Geschäftsführer: Wilfried Schollenberger