Publié le :
Utilitaire CREATION_INTERNE

Macro SAS _DATA: Extraction du nom de la table

Ce code est également disponible en : Deutsch English Español
La macro `_DATA` prend un seul argument, `arg1`, qui représente une référence de table SAS© (par exemple, 'librairie.table' ou 'table_simple'). Elle analyse cette chaîne pour déterminer si elle contient un point ('.') qui indique la présence d'un préfixe de librairie. Si un point est détecté, elle utilise la fonction `%scan` pour extraire la deuxième partie de la chaîne (le nom de la table) après le point. Si aucun point n'est trouvé, elle considère l'intégralité de la chaîne comme le nom de la table. Dans les deux cas, la fonction `%lowcase` est appliquée pour convertir le nom de la table résultant en minuscules. Les éventuelles options de table (par exemple, `(obs=1)`) sont implicitement ignorées par cette logique d'extraction.
Analyse des données

Type : CREATION_INTERNE


La macro `_DATA` est une fonction utilitaire qui manipule des chaînes de caractères passées en argument. Elle ne lit ni n'écrit directement dans des tables SAS existantes. Ses entrées sont des chaînes représentant des références de tables SAS et sa sortie est une chaîne de caractères correspondant au nom de la table extraite.

1 Bloc de code
Définition de macro `_DATA`
Explication :
Ce bloc définit la macro `_DATA`. Il utilise une instruction conditionnelle `%if` avec `%index` pour vérifier la présence d'un point ('.') dans l'argument `&arg1`. Si un point est présent, la fonction macro `%scan` extrait le deuxième élément de la chaîne (le nom de la table), en utilisant le point et le caractère parenthèse ouvrante `%str(()` comme délimiteurs pour gérer les options de table. Sinon, `%scan` extrait le premier élément en utilisant uniquement le caractère parenthèse ouvrante comme délimiteur. La fonction `%lowcase` est appliquée au résultat pour assurer que le nom de la table est retourné en minuscules. Le caractère `%str(%)` est utilisé pour échapper la parenthèse ouvrante à l'intérieur de `%scan`.
Copié !
1%macro _data(arg1);
2 
3%IF %index(&arg1, .) %THEN %lowcase(%scan(&arg1, 2, .%str(%())));
4%ELSE %lowcase(%scan(&arg1, 1, %str(%())));
5 
6%mend _data;
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.
Informations de Copyright : Copyright (c) 2001-2007 Rodney Sparapani. Ce code est un logiciel libre, redistribuable et modifiable sous les termes de la GNU General Public License, version 2 ou ultérieure.