Publié le :
Macro CREATION_INTERNE

Macro AHGsetallvarnil - Initialisation des variables à manquant

Ce code est également disponible en : Deutsch English Español
La macro `AHGsetallvarnil` est conçue pour être appelée au sein d'un DATA STEP. Elle identifie toutes les variables caractères et numériques disponibles dans l'étape de données courante à l'aide des tableaux implicites `_character_` et `_numeric_`. Pour chaque variable, elle vérifie si son nom correspond à la liste des exceptions fournie via le paramètre `except`. Si le nom de la variable n'est PAS dans la liste des exceptions (la vérification étant effectuée par la macro `%AHGequaltext`), la variable est mise à manquant (chaîne vide pour les caractères, point pour les numériques). Il est important de noter une erreur potentielle dans le code fourni : lors du traitement des variables numériques, la condition `if not %AHGequaltext(vname(ahuigeallchar),&except)` utilise `vname(ahuigeallchar)` au lieu de `vname(ahuigeallnum)`. Cela signifie que l'exclusion des variables numériques se basera sur le nom des variables caractères, ce qui pourrait empêcher l'exclusion correcte des variables numériques souhaitées.
Analyse des données

Type : CREATION_INTERNE


La macro opère sur les variables existantes dans l'étape de données où elle est invoquée, en les initialisant à des valeurs manquantes selon leur type. Elle ne fait pas directement appel à des sources de données externes ou à SASHELP.

1 Bloc de code
MACRO DEFINITION
Explication :
Ce bloc définit la macro `AHGsetallvarnil` avec un paramètre `except` optionnel. Elle déclare deux tableaux implicites : `ahuigeallchar` pour toutes les variables caractères et `ahuigeallnum` pour toutes les variables numériques. Deux boucles `DO OVER` sont utilisées pour itérer sur ces tableaux. Pour les variables caractères, si le nom de la variable (obtenu par `vname`) n'est pas dans la liste `except` (vérifié par `%AHGequaltext`), la variable est définie à une chaîne vide `''`. Pour les variables numériques, si le nom d'une variable caractère (erreur potentielle ici, car `vname(ahuigeallchar)` est utilisé au lieu de `vname(ahuigeallnum)`) n'est pas dans la liste `except`, la variable numérique est définie à la valeur manquante `.`.
Copié !
1%macro AHGsetallvarnil(except=);
2 DO;
3 array ahuigeallchar _character_;
4 array ahuigeallnum _numeric_ ;
5 DO over ahuigeallchar ;
6 IF not %AHGequaltext(vname(ahuigeallchar),&except) THEN ahuigeallchar='';
7 END;
8 DO over ahuigeallnum ;
9 IF not %AHGequaltext(vname(ahuigeallchar),&except) THEN ahuigeallnum=.;
10 END;
11 DO;
12 %mend;
13 
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.