Inhalt einer Macro-Variable sortieren
Hallo,
ich hätte gerne eine elegante Lösung, um den Inhalt einer Macro-Variable zu sortieren. Die Macro Variable enthält eine Feld-Liste und ich will damit die Variablen-Namen in einem DWH-Standard-Data-Set einheitlich in GROSS-Buchstaben (ist per %upcase gelöst) umsetzen und die Reihenfolge der Variablen in der Datenstruktur soll damit alphabetisch umsortiert werden.
Mich nervt, dass ich immer die gerade benötigte Variable im proc print-Output suchen muß.
Wenn die Variablen sortiert sind, dann brauche ich nicht mehr zu suchen.
Auch ein Edit->Find im Output-Fenster hilft meistens nicht weiter, denn wenn die linesize klein ist, schreibt SAS die Name hochkant ...
Test-Daten könnten wie folgt aussehen:
data test; z22="yyy"; abc=1; cde=2; a11="xxx"; run; %let FeldList=%upcase(%VarList(test)); %put INFO: FeldList=&FeldList.;
Die umständliche Variante ist mir klar, z.B. so:
Jetzt ist das Gerödel fertig und man kann die Feld-Liste verwerten, z.B. so:
proc print data %str(=) test; /* unsortiert und mit Mixed-Case */ run; data test; retain &FeldLiSo.; set test; run; proc print data %str(=) test; /* sortiert und mit upcase */ run;
Bin gespannt auf die Antworten ...!
Gruß
Hans Kneilmann, Schäfer Shop GmbH
P.S. Nicht über das %str(=) wundern, das stört beim Testen überhaupt nicht und es dient als Trick 17 dazu das PHP in/auf dem Redscope-Server auszutricksen. Der "echte" Text/Code würde zu Fehlern beim "Speichern" führen
