Macro de récupération des métadonnées de colonne

Niveau de difficulté
Débutant
Publié le :
Cette macro interroge la vue système `sashelp.vcolumn` pour extraire les métadonnées d'une variable définie par les paramètres `lib` (bibliothèque), `dsn` (table) et `col` (colonne). Les informations récupérées (nom, type, longueur, position, numéro de variable, étiquette, format, informat) sont stockées dans des variables macro globales préfixées par un underscore (ex: `_type`, `_length`, `_label`). La méthode utilise les fonctions SCL (`open`, `fetchobs`, `syscall set`) via `%sysfunc` pour éviter l'usage d'une étape DATA explicite.
Analyse des données

Type : SASHELP


Les informations proviennent exclusivement de la vue système `sashelp.vcolumn` qui contient les métadonnées de toutes les tables accessibles dans la session.

1 Bloc de code
MACRO
Explication :
Définition de la macro. Elle déclare les variables globales de sortie, ouvre `sashelp.vcolumn` avec une clause `where` pour cibler la colonne demandée, utilise `%syscall set` pour lier les colonnes de la vue aux variables macro locales, récupère la première observation, puis transfère les valeurs nettoyées (`%qtrim`) vers les variables globales.
Copié !
1%macro utl_getcolumn(lib,dsn,col)
2 /des="get variable attributes meta data";
3/*--- ---*/
4/*--- OUTPUT MACRO ---*/
5/*--- VARIABLES ---*/
6/*--- ---*/
7/*--- _name ---*/
8/*--- _type ---*/
9/*--- _length ---*/
10/*--- _npos ---*/
11/*--- _varnum ---*/
12/*--- _label ---*/
13/*--- _format ---*/
14/*--- _informat ---*/
15/*--- ---*/
16 /*---
17 %let lib=sashelp;
18 %let dsn=class;
19 %let col=sex;
20 ---*/
21 %global
22 _memname
23 _name
24 _type
25 _length
26 _npos
27 _varnum
28 _label
29 _format
30 _informat ;
31 %local
32 memname
33 name
34 type
35 LENGTH
36 npos
37 varnum
38 label
39 FORMAT
40 informat /nowarn;
41 %let dsid=%sysfunc(open(sashelp.vcolumn
42 (where=(
43 upcase("&lib") = upcase(LIBNAME)
44 and upcase("&dsn") = upcase(memname)
45 and upcase(name) = upcase("&col")
46 ))
47 ,i)) ;
48 %syscall SET(dsid);
49 %let rc=%sysfunc(fetchobs(&dsid,1));
50 %let rc=%sysfunc(close(&dsid));
51 %let _memname = %qtrim(&memname );
52 %let _name = %qtrim(&name );
53 %let _type = %qtrim(&type );
54 %let _length = %qtrim(&LENGTH );
55 %let _npos = %qtrim(&npos );
56 %let _varnum = %qtrim(&varnum );
57 %let _label = %qtrim(&label );
58 %let _format = %qtrim(&FORMAT );
59 %let _informat = %qtrim(&informat );
60 %put ---- inside &=_memname ;
61 %put ---- inside &=_name ;
62 %put ---- inside &=_type ;
63 %put ---- inside &=_length ;
64 %put ---- inside &=_npos ;
65 %put ---- inside &=_varnum ;
66 %put ---- inside &=_label ;
67 %put ---- inside &=_format ;
68 %put ---- inside &=_informat;
69%mend utl_getcolumn;
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.