Veröffentlicht am :
Makro CREATION_INTERNE

Makro WHEROBS - Gezählte Beobachtungen filtern

Dieser Code ist auch verfügbar auf: English Español Français
Dieses Makro bestimmt die Anzahl der Zeilen in einer Tabelle. Wenn kein Filter angegeben ist, delegiert es das Zählen an ein anderes Makro namens '%numobs'. Wenn ein Filter bereitgestellt wird, verwendet es Systemfunktionen (OPEN, ATTRN parametriert mit 'NLOBSF', CLOSE), um die Anzahl der logischen Beobachtungen zu erhalten, die der Bedingung entsprechen, was in der Regel leistungsfähiger ist als ein DATA-Schritt oder ein SQL COUNT(*).
Datenanalyse

Type : CREATION_INTERNE


Das Skript definiert nur eine Programmierlogik (Makro), ohne beim Kompilieren auf spezifische Daten zuzugreifen.

1 Codeblock
MACRO
Erklärung :
Definition des Makros 'wherobs'. Es überprüft, ob der Parameter 'mywhere' leer ist. Wenn ja, ruft es '%numobs' auf. Andernfalls öffnet es die Tabelle über %sysfunc(open(...)) mit dem Filter, ruft die Anzahl der gefilterten Beobachtungen über %sysfunc(attrn(..., nlobsf)) ab und schließt die Tabelle.
Kopiert!
1*m204d08b;
2 
3%macro wherobs(dsn,mywhere);
4 %IF %superq(mywhere)= %THEN %DO;
5 %numobs(&dsn)
6 %return;
7 %END;
8 %local dsid rc;
9 %let dsid=%sysfunc(open(&dsn(where=(&mywhere))));
10 %IF &dsid>0 %THEN %DO;
11 %sysfunc(attrn(&dsid,nlobsf))
12 %let rc=%sysfunc(close(&dsid));
13 %END;
14 %ELSE %put ERROR: Could not open dataset %upcase(&dsn).;
15%mend wherobs;
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.