Makro list2format

Dieser Code ist auch verfügbar auf: English Español Français
Schwierigkeitsgrad
Anfänger
Veröffentlicht am :
Dieses SAS©-Makro namens `list2format` generiert dynamisch ein numerisches SAS©-Format. Es akzeptiert zwei Parameter: `fmtname` zur Angabe des zu erstellenden Formats und `list` für eine Zeichenfolge, die eine durch Kommas getrennte Werteliste enthält und idealerweise in Klammern eingeschlossen ist (z.B. `(ALT,BILI,CREAT)`). Das Makro analysiert diese Liste, extrahiert jedes Element und ordnet es sequenziell einer ganzen Zahl in der Formatdefinition über `PROC FORMAT` zu. Jedes Listenelement wird mit Hilfe von `%sysfunc(strip())` von überflüssigen Leerzeichen bereinigt, bevor es in das Format integriert wird. Es ist ein praktisches Werkzeug, um eine Liste von Zeichenfolgen in ein numerisches Format umzuwandeln, das für kategoriale Variablen verwendet werden kann.
Datenanalyse

Type : CREATION_INTERNE


Die zur Formaterstellung verwendeten Daten stammen aus einer Werteliste, die als Parameter an das Makro übergeben und intern verarbeitet wird, ohne externe Abhängigkeiten oder SASHELP-Daten.

1 Codeblock
MACRO / PROC FORMAT Data
Erklärung :
Dieser Block definiert das Makro `list2format`. Er initialisiert die lokalen Variablen `i` (Zähler) und `item`, um über die im Parameter `&list` bereitgestellte Werteliste zu iterieren. Die Funktion `%qscan` wird zusammen mit `%nrbquote` verwendet, um jedes Element aus der Liste zu extrahieren, unter Berücksichtigung der angegebenen Trennzeichen (Komma und Klammern). Jedes extrahierte Element wird in einer dynamischen Makrovariable (`list_&i`) gespeichert. Sobald die Liste vollständig durchlaufen ist, enthält `list_n` die Gesamtzahl der Elemente. Anschließend wird ein `PROC FORMAT`-Block generiert. Eine `%do`-Schleife wird verwendet, um die Zahl=Wert-Assoziationen in der Formatdefinition zu erstellen. Für jede Iteration wird die Zahl (`&i`) dem entsprechenden Listenwert (referenziert durch `&&list_&i`) zugeordnet, nachdem dieser mit `%sysfunc(strip())` von Leerzeichen bereinigt wurde. Das abschließende `run;` führt die Formatierungsprozedur aus.
Kopiert!
1/*--------------------------------------------------------------------------------------*
2 Copyright 2017, Rho, Inc. All rights reserved.
3 
4 PROGRAM: list2format
5 
6 PURPOSE: Create a numeric format based on a list of values.
7 
8 INPUT: fmtname= format name
9 list= list of values
10 
11 DETAILS:
12 - list should be specified as comma-separated values enclosed in parentheses.
13 e.g., list=(ALT,BILI,CREAT).
14
15 PROGRAM HISTORY:
16 DATE PROGRAMMER DESCRIPTION
17 --------- --------------- ------------------------------------------------------
18 2017-12-15 Shane Rosanbalm Create.
19 
20*--------------------------------------------------------------------------------------*/
21 
22%macro list2format
23 (fmtname=
24 ,list=
25 );
26 
27 %*--- get first item ---;
28 %local i item;
29 %let i = 1;
30 %let item = %qscan(%nrbquote(&list),&i,%str((),));
31
32 %*--- continue IF more items ---;
33 %DO %while(&item ne );
34 %local list_&i;
35 %let list_&i = &item;
36 %let i = %eval(&i+1);
37 %let item = %qscan(%nrbquote(&list),&i,%str((),));
38 %END;
39
40 %*--- number of items found ---;
41 %local list_n;
42 %let list_n = %eval(&i-1);
43
44 %*--- make a FORMAT ---;
45 PROC FORMAT;
46 value &fmtname
47 %DO i = 1 %to &list_n;
48 &i = "%sysfunc(strip(&&list_&i))"
49 %END;
50 ;
51 RUN;
52 
53%mend list2format;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Copyright 2017, Rho, Inc. All rights reserved.


Zugehörige Dokumentation

Aucune documentation spécifique pour cette catégorie.