einführung in die sas makro sprache - public.urz.uni ... · zkompiliertes makro in work.sasmacr...
TRANSCRIPT
![Page 1: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/1.jpg)
1
Einführung in die SAS Makro Sprache
Zur Person
Grischa PfisteriCASUS GmbHVangerowstraße 269115 [email protected]
ArbeitsfelderAnwendungsentwicklungAF, IntrNet, JavaData WarehouseBalanced ScorecardSchulungen im Bereich BASE, AF, Java
![Page 2: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/2.jpg)
2
Ablauf des Tutoriums
Zeitrahmen09:15 – 12:00 UhrPausen und Übungen auf Zuruf
AblaufVortragAnwendungsbeispiele
FragenImmer und jederzeit
UnterlagenProgramme & PPT
Agenda
EinleitungMakrovariablenMakrosMakro-StatementsMakro-FunktionenInteraktion mit dem Data StepDebuggingDeployment
![Page 3: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/3.jpg)
3
Einleitung
Warum eine Makro Sprache?Vereinfachung des Codes
Leichtere PflegeBessere Lesbarkeit
WiederverwendungDurch KollegenSAS community
StandardisierungDefinierte Analyseverfahren
Einleitung
Was sind Makros?Automatisierte Programme
ParametrisierungModularisierungKonditionelle Ausführung von Programmteilen
Fokus bei Entwicklung liegt auf Effizienz der Programmierung, nicht auf inhaltlicher Fragestellung
![Page 4: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/4.jpg)
4
Einleitung
Wie funktionieren Makros?Platzhalter-Prinzip
In einem Programm werden Platzhalter referenziertBeim Verarbeiten werden Platzhalter ersetzt
Grundprinzip ist die Textersetzung
Makros sind Code-GeneratorenErgebnis ist SAS/BASE Programm (bzw. ein Teil davon)
Einleitung
Die SAS Macro Facility besteht ausMacro Language
Programmiersprache in SAS/BASEVariablenStatementsMakro-FunktionenGlobale Optionen
Macro ProcessorInterpreter
Standards für die Bereitstellung
![Page 5: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/5.jpg)
5
Vom Programm zum Makro
Vom Programm zum Makro
Wie werden Makros entwickelt?SAS/BASE Programm schreibenAllgemein verwendbare Teile identifizieren (modularisieren)Variable Teile identifizierenProgramm in ein Makro übersetzen
![Page 6: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/6.jpg)
6
Vom Programm zum Makro
BeispielProc Print data=Sashelp.Class;Run;
Wie SAS ein Makro verarbeitet
![Page 7: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/7.jpg)
7
Wie SAS ein Makro verarbeitet
KompilierungsphaseSAS verarbeitet CodeWenn Fehler auftritt Fehlermeldung od. dummy macroKompiliertes Makro in Work.Sasmacr gespeichert
Aufruf des MakrosSAS lädt MakroMakrovariablen werden aufgelöstLogik des Makros wird verarbeitetResultierendes BASE-Programm wird von SAS abgearbeitet
Wie SAS ein Makro verarbeitet
1. Word Scanner ließt tokenaus Input Stack
2. Word Scanner erkennt Makro-Trigger [%,&]
3. Kompiliertes Makro wird geöffnet
4. Lokale Symbol-Tabellewird angelegt
5. Wert für Table wird gespeichert
6. Makro Processor ließt Tokens aus kompiliertem Makro und schreibt Ergebnis in Input Stackzurück
7. Word Scanner ließt tokenaus Input Stack
Input Stack
%PrintTable(Sashelp.Class)
Macro ProcessorCompiler
Word Scanner
Symbol Table(s)
Kompiliertes Makro
%Macro PrintTable(table);Proc Print data=&table;Run;
%Mend;
![Page 8: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/8.jpg)
8
Makro-Statements I
Makro-Statements I
Makro Definition%Macro Name;...%Mend <Name>;Positional Parameter
%Macro Name(parameter1<, parameter2, ...>)Keyword Parameter
%Macro Name(para=defaultwert<, para=defaultwert, ...>)
![Page 9: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/9.jpg)
9
Makro-Statements I
%Let-StatementLegt eine MVAR anOrdnet MVAR einen Wert zu
%Let x = 5;%Let text = Dies ist ein Text;%Let x = Variable Y hat den Wert "&text";%Let z =;
Makro-Statements I
Kommentare%* Makro-Kommentar-Text ;
Kommentar bis zum nächsten SemikolonAbschalten einer Zeile / eines Statements
/* Normaler Kommentar-Textkommentiert auch enthaltene Makro-Aufrufe und Makrovariablen */
* BASE-Kommentar-Text ;Makro-Aufrufe, -Statements sind nicht auskommentiert!Problem wenn vor %ElseVorteil: werden in LOG ausgegeben wenn Option MPRINT gesetzt ist
![Page 10: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/10.jpg)
10
Makrovariablen I
Makrovariablen I
Automatische MVARsDictionary.Macros / Sashelp.VmacroMVARs besitzen scope:
Automatic / global / local
Benutzerdefinierte MVARsAls Parameter bei Makro-AufrufDefiniert mit %Let-Statement%Let mvar = wert;Auflösung nur in „…“, nicht ‚…‘Fehlermeldung wenn nicht deklariert
![Page 11: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/11.jpg)
11
Vom Programm zum Makro
Bestehendes Programm erweiternGlobaler Schalter für Ausgabe in HTML
Überprüfung ob Variable existiertAbbruch wenn nichtWenn gesetzt ODS Statements erzeugen
Makrovariablen II
![Page 12: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/12.jpg)
12
Makrovariablen II
Definition%Let mvar = wert;
Überprüfen der Existenz%Symexist(mvar) [ab V9]Dictionary.Macros (für globale mvars)
Löschen [ab V8]%Symdel mvar <mvar ...>;[Call Symdel("mvar <mvar ...>");]
Makrovariablen II
SQLNach SQL-Step werden automatisch globale MVARsgesetzt
SQLOBS Anzahl der gefundenen SätzeSQLRC Return Code des StepsSQLOOPS Anzahl der Schleifenläufe
Nachzulesen inSQL: Dictionary.MacrosSashelp.Vmacro
ScopeAutomatic / global / local
![Page 13: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/13.jpg)
13
Makro-Statements II
Makro-Statements II
AblaufsteuerungVerzweigung mit
%If - %Then - %Else%Do ... %EndAnalog zum Data Step
Sprungmarken%Goto label;…%label: <macro statement>;
Abbruch des Makros%Return; [ab V9]%Goto%Abort (setzt Fehlercode)
![Page 14: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/14.jpg)
14
Makro-Statements II
Schleifen%Do %While ( bedingung );...
%End;%Do %Until ( bedingung );...
%End;%Do i=1 %To n <%By step>;…
%End;i wird automatisch als MVAR angelegt (!)
Impliziter Aufruf von %EvalEs gibt keine LEAVE Anweisung
vorzeitiges Verlassen der Schleife nur mit %Goto
Makro Statements II
OperatorenTeilmenge der SAS/BASE OperatorenArithmetisch
**, +, -, *, /, <, > <=, >=, =, ^=LT, LE, EQ, NE, GT, GE
Logisch^, &, |NOT, AND, OR
NichtMin, max, :
Auswertung arithmetischer AusdrückeErfolgt ganzzahlig!
![Page 15: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/15.jpg)
15
Makro-Statements II
%Put-StatementSchreibt Text in das LOG-FensterFehlersuche bei EntwicklungKontrollierte (Fehler-)Meldungen
Neues Beispiel
Für alle Tabellen einer LibraryVariablenliste ausgeben
Proc ContentsOds SelectSchleife über alle Tabellen
Woher kommen die Namen der Tabellen?Wieviele Tabellen gibt es?
![Page 16: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/16.jpg)
16
Makro-Funktionen I
Makro-Funktionen I
%Let mvar = %Funktion(para1<,para2,…>);
Alphanumerisch%Index(mvar,text)%Length(mvar)%Scan(mvar,n<,delimiter>)%Substr(mvar,start<,end>)%Upcase(mvar)…
![Page 17: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/17.jpg)
17
Makro-Funktionen I
NumerischBei Statements implizite KonvertierungGrundsätzlich ganzzahlig [-264 - 1,264 - 1]%Eval( ausdruck )%Sysevalf( ausdruck ) für Fließkommadarstellung
Ergebnis ist aber immer eine Zeichenkette!
Schnittstelle zu allen Data-Step Funktionen%Sysfunc()
Makro-Funktionen I
Eigene Makro-FunktionenMakro mit Rückgabewert
%Macro name;...&mvar
%Mend;Darf nur Makro-Statements enthaltenSAS Autocall Macros z.B. %Left
![Page 18: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/18.jpg)
18
Zurück zum Beispiel
Die elegante VarianteTabellen-Namen und -Anzahl aus Steuerdatei lesen
Per SQLMit Hilfe des Data Step
Makrovariablen III
![Page 19: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/19.jpg)
19
Makrovariablen aus SQL erstellen
Select Into :mvar Separated By „ “Erzeugt Liste aller WerteTrennzeichen frei vergebbar
Mvar SQLOBSEnthält Anzahl der gefundenen Sätze
Makro-Schleife über &sqlObs, mit %Scan den jeweiligen Wert lesen
Makrovariablen dem Data Step erstellen
End = eof setzenUm am Ende Anzahl der Sätze zu schreiben
Call Symput(„mvar“,“wert“);Für jeden gelesenen Wert wird eine Variable erstellt
Makro-Schleife über die Anzahl SätzeAuflösung der Makrovariable erfolgt von links nach rechts &&table&i
Nach erster Auflösung &table1Nach zweiter Auflösung Class
![Page 20: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/20.jpg)
20
Makrovariablen IV
Global
faktor = 5
Makrovariablen IV
Scope von VariablenIm Open Code immer GlobalSchachtel-Prinzip
Jedes Makro hat lokale Symbol-TabelleJedes Makro kann die Symbol-Tabelle der umgebenden Makros sehen (und schreiben)
Makro a
para1 = 11
para2 = 55
%Let faktor = 5;
%Macro a(para1);
%Let para2 = %Eval(¶1 * &faktor);
%b(¶2);
%Mend;
%Macro b(para1);
%Put in B: para1 = ¶1;
%Mend;
%a(11);
Makro b
para1 = 55
![Page 21: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/21.jpg)
21
Makrovariablen IV
Probleme mit nicht explizit deklarierten MVARsSAS durchsucht alle umgebenden Symbol-Tabellen
Wenn MVAR vorhanden wird dort ersetzt (z.B. Schleifenzähler &i !!)
Gleichnamige Variablen müssen mit explizit definiert werden
Als Übergabeparameter%Local-Statement
Wenn in globale MVAR geschrieben werden soll %Global-Statement
Wenn in die existierende MVAR aus einem umgebenden Makro geschrieben werden soll
Weder %Local noch %GlobalSonderfall Call Symput()
Makrovariablen IV
Bei UnsicherheitDas %Put Statement
Vordefinierte Listen von Makrovariablen_global_ alle globalen MVARs_local_ alle lokalen MVARs_user_ alle benutzerdefinierten MVARS
%Symglobl(mvar) [V9]Testet ob MVAR global ist
%Symlocal(mvar) [V9]Testet ob MVAR local ist
%Symexist(mvar) [V9]Testet ob MVAR existiert
![Page 22: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/22.jpg)
22
Neues Beispiel
Makros die ODS-Kanal öffnen und schließen%OdsOpen%OdsClose
Makrovariablen V
![Page 23: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/23.jpg)
23
Makrovariablen V
Sonderzeichen in MakrovariablenWerden als Teil der Makro-Sprache interpretiert
Alle OperatorenLeerzeichen, Komma&, %
Müssen maskiert werdenCompile time
Wenn MVAR befüllt oder übergeben wirdExecution time
Wenn MVAR in einem Makro aufgelöst wird
Makrovariablen V
%Str und %NrStr%Bquote und %NrBquote%Superq
NRBedeutet not resolved
BBy itself (für normalerweise paarweise auftretende tokens wie Anführungszeichen oder Klammern)
![Page 24: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/24.jpg)
24
Makrovariablen V
Alle Funktionen maskierenOperatorenLeerzeichenSemikolonKomma
Sonderzeichen ‘ “ ( )Alle „B“ Funktionen und %superq maskieren automatischBei den anderen muss % vor dem Sonderzeichen stehen
Debugging
![Page 25: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/25.jpg)
25
Good Programming Practice
Standards schaffen und einhaltenEin Makro je DateiDokumentations-Header und KommentareEinrückung von Blöcken (zwei Zeichen)Namenskonventionen (Variablen, Makronamen,…)Schreibweisen (Groß-/Kleinschreibung)
Modular arbeitenReduktion von KomplexitätModule einzeln testenWeiteres Makro bündelt die Aufrufe
Bad Programming Practice
Makros bei der Definition schachtelnUnperformantUnübersichtlich
MakrovariablenNicht sauber zwischen globalen und lokalen Variablen trennen
![Page 26: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/26.jpg)
26
Debugging
Das %Put StatementGibt Zeichenkette in LOG aus
%Put mvar = &mvar;%Put mvar = „&mvar“;
Vordefinierte Listen von Makrovariablen_global_ alle globalen MVARs_local_ alle lokalen MVARs_automatic_ alle automatischen MVARs_user_ alle benutzerdefinierten MVARS
Debugging
Globale SAS Optionen[No]mprint
Zeigt den von Makros generierten BASE Code[No]mlogic
Zeigt Programmfluss des Makros[No]symbolgen
Zeigt die aufgelösten Makrovariablen
[No]source und [No]source2
![Page 27: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/27.jpg)
27
Debugging
Eigene Logging-MechanismenIn externe Datei schreibenEigene Meldungen ausgebenFehlerdatenbank aufbauen
Debugging
Wenn SAS nicht mehr reagiertMakro Compiler hat %Mend nicht gelesen
Aller weiterer Input wird als zum Makro gehörig interpretiert%Mend solange absetzen bis zugehörige Fehlermeldung kommt (s.u.)
Einzelnes Anführungszeichen (o.ä.) ist durchgerutscht*‘; *“;*);*/; %Mend; run;
String solange absetzen, bis zugehörige Fehlermeldung kommt (s.u.)
FehlermeldungERROR: No matching %MACRO statement forthis %MEND statement.
Jetzt ist der Makro Compiler wieder zurückgesetzt
![Page 28: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/28.jpg)
28
Deployment
Deployment
Autocall FacilityOption sasautossasautos = (fileref <fileref ...> sasautos)Option mautosourceFilename gpMacro "d:\temp";Options sasautos=(gpMacro sasautos);
![Page 29: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/29.jpg)
29
Deployment
Stored Compiled Macro FacilityOptionen store und source bei Makro-Definition%Macro test / store source des="text";...%End;Option sasmstore = libref setzenOption mstored setzen
Literatur
Offizielle SAS-DokumentationOnline-HilfeOnline-DocDownload von support.sas.com
base_macro_6997.pdf
Online verfügbare TutorienSAS Anwender Handbuch im Netz„googeln“
![Page 30: Einführung in die SAS Makro Sprache - public.urz.uni ... · zKompiliertes Makro in Work.Sasmacr gespeichert zAufruf des Makros zSAS lädt Makro zMakrovariablen werden aufgelöst](https://reader031.vdocuments.pub/reader031/viewer/2022020115/5c771b8909d3f2cd0e8b4850/html5/thumbnails/30.jpg)
30
Literatur
Books By UsersMichele M. BurlewSAS Macro Programming Made EasyArt CarpenterCarpenter's Complete Guide to the SAS MacroLanguage, Second Edition
Fragen ?
Fragen !