Publié le :
Macro MIXTE

Macro get_append_base pour génération de structure

Ce code est également disponible en : Deutsch English Español
Cette macro utilise PROC CONTENTS pour extraire les métadonnées de la table spécifiée en paramètre. Elle génère ensuite dynamiquement, via un étape DATA _NULL_, des instructions SAS© (DATA step avec instructions FORMAT) qu'elle écrit dans la log. Ce code généré peut être copié-collé pour initialiser une table vide ayant la même structure, facilitant les opérations d'ajout (PROC APPEND). Elle tente également de nettoyer la table temporaire via un appel à une macro externe %delete_dataset.
Analyse des données

Type : MIXTE


La macro attend un nom de table existante en paramètre (&base_dataset). Elle crée une table temporaire 'local_temp' à partir des métadonnées.

1 Bloc de code
MACRO
Explication :
Définition de la macro qui extrait les métadonnées, les trie par ordre de variable, et écrit dans la log le code SAS de définition des formats. Note : elle appelle une macro utilitaire '%delete_dataset' qui n'est pas définie dans ce script.
Copié !
1%macro get_append_base(base_dataset);
2 PROC CONTENTS noprint DATA= &base_dataset. out= local_temp; RUN;
3
4 PROC SORT DATA= local_temp; BY varnum; RUN;
5 
6 DATA _null_;
7 SET local_temp END= last;
8 BY varnum;
9 obs = _N_;
10 ;
11 IF obs = 1 THEN DO;
12 put "***************************************************************************************;";
13 put;
14 put " data stuff;";
15 put " set _null_;";
16 put " format";
17 END;
18 
19 formatted = compress(name) || ' ' || compress(cat(FORMAT,FORMATL,"."));
20 put " " formatted;
21 
22 IF last THEN DO;
23 put " ;";
24 put " run;";
25 put;
26 put "***************************************************************************************;";
27 END;
28 RUN;
29 %delete_dataset(work,local_temp);
30%mend get_append_base;
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.