Veröffentlicht am :
Makro INTERNE_ERSTELLUNG

Generierung von WHEN-Klauseln für SELECT-Blöcke (_bwhen)

Dieser Code ist auch verfügbar auf: Français English Español
Das Makro _bwhen ersetzt ein älteres %_WHEN-Makro, das in SAS© 9.3 instabil wurde. Es verwendet die Option /PARMBUFF, um eine variable Liste von Argumenten (Einzelwerte, Wertebereiche mit Bindestrichen) zu akzeptieren. Es stützt sich auf externe Makros (%_count, %_list), um diese Liste (die Klammern und Kommas verwaltet) zu parsen und eine korrekt formatierte 'when(...)' Syntax für den Data Step zurückzugeben.
Datenanalyse

Type : INTERNE_ERSTELLUNG


Das Makro führt Code-Generierung und Zeichenkettenmanipulation durch. Es liest keine Datentabellen.

1 Codeblock
MACRO
Erklärung :
Definition des Makros. Es berechnet die Anzahl der Elemente über %_count und schleift dann, um den Inhalt der when()-Anweisung unter Verwendung von %_list und %qscan zu generieren, um jedes Element zu formatieren.
Kopiert!
1%macro _bwhen/parmbuff;
2 
3%local i j;
4 
5%*put SYSPBUFF=&syspbuff;
6 
7%let j=%_count(&syspbuff, split=%str(,()));
8 
9when(%DO i=1 %to &j;
10 %_list(%qscan(&syspbuff, &i, %str(,())), split=%str(,)) %IF &i<&j %THEN ,;
11%END;)
12 
13%mend _bwhen;
2 Codeblock
DATA STEP
Erklärung :
Testcode (derzeit auskommentiert), der die Verwendung des Makros in einem Data Step demonstriert, um zu überprüfen, ob eine Variable 'hcpcs_cd' zu einer langen Liste von Codes oder Bereichen gehört.
Kopiert!
1/* Exemple de validation (commenté dans la source) */
2DATA _null_;
3 
4 hcpcs_cd='63279';
5 
6 select(hcpcs_cd);
7 %_bwhen('22100', '22110', '22318', '22319', '22326', '22548',
8 '22590', '22595', '61343', '63180', '63182', '63194', '63196', '63198',
9 '63250', '63265'-'63285', '63300', '63304') ex15=1;
10 otherwise;
11 END;
12 
13 put ex15=;
14RUN;
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 (c) 2013 Rodney Sparapani