Publié le :
Macro CREATION_INTERNE

Macro WHEROBS - Comptage filtré d'observations

Ce code est également disponible en : Deutsch English Español
Cette macro détermine le nombre de lignes d'une table. Si aucun filtre n'est spécifié, elle délègue le comptage à une autre macro nommée '%numobs'. Si un filtre est fourni, elle utilise les fonctions système (OPEN, ATTRN paramétré avec 'NLOBSF', CLOSE) pour obtenir le nombre d'observations logiques respectant la condition, ce qui est généralement plus performant qu'une étape DATA ou un SQL COUNT(*).
Analyse des données

Type : CREATION_INTERNE


Le script définit uniquement une logique de programmation (macro) sans accéder à des données spécifiques lors de sa compilation.

1 Bloc de code
MACRO
Explication :
Définition de la macro 'wherobs'. Elle vérifie si le paramètre 'mywhere' est vide. Si oui, elle appelle '%numobs'. Sinon, elle ouvre la table via %sysfunc(open(...)) avec le filtre, récupère le nombre d'observations filtrées via %sysfunc(attrn(..., nlobsf)) et ferme la table.
Copié !
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;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.