Publié le :

Conversion de bibliothèque en fichiers CARDS

Ce code est également disponible en : Deutsch English Español
En attente de validation
Cette macro parcourt l'ensemble des tables d'une bibliothèque spécifiée (via le paramètre 'lib'). Pour chaque table, elle utilise la macro %mp_ds2cards pour convertir les données en code SAS© (étape DATA avec cartes). Le résultat est écrit dans un répertoire de sortie défini. L'utilisateur peut choisir de consolider tout le code dans un seul fichier ('outfile') ou de créer un fichier '.sas©' distinct pour chaque table. La macro gère également la création du répertoire de destination si nécessaire.
Analyse des données

Type : MIXTE


Le script interroge la vue système DICTIONARY.TABLES pour lister le contenu de la bibliothèque. Il lit ensuite les données de la bibliothèque passée en paramètre ('lib') pour les exporter.

1 Bloc de code
PROC SQL
Explication :
Cette étape récupère la liste des noms de tables (membres) présents dans la bibliothèque spécifiée par le paramètre &lib en interrogeant le dictionnaire SAS. La liste est stockée dans la macro-variable &memlist.
Copié !
1PROC SQL noprint;
2select distinct lowcase(memname)
3 into: memlist
4 separated BY ' '
5 from dictionary.tables
6 where upcase(LIBNAME)="%upcase(&lib)";
2 Bloc de code
Macro Call
Explication :
Nettoie le chemin du répertoire de sortie (suppression des slashs finaux) et s'assure que le répertoire existe en appelant la macro utilitaire %mf_mkdir.
Copié !
1%let outloc=%mf_trimstr(&outloc,/);
2%let outloc=%mf_trimstr(&outloc,\);
3 
4/* create the output directory */
5%mf_mkdir(&outloc)
3 Bloc de code
Macro Loop Data
Explication :
Boucle sur chaque table trouvée dans la bibliothèque. Appelle la macro %mp_ds2cards pour générer le fichier CARDS correspondant. Gère la logique d'ajout à un fichier unique (append=YES) ou de création de fichiers séparés selon la valeur du paramètre &outfile.
Copié !
1%DO x=1 %to %sysfunc(countw(&memlist));
2 %let ds=%scan(&memlist,&x);
3 %mp_ds2cards(base_ds=&lib..&ds
4 ,maxobs=&maxobs
5 ,random_sample=&random_sample
6 %IF "&outfile" ne "0" %THEN %DO;
7 ,append=YES
8 ,cards_file="&outloc/&outfile"
9 %END;
10 %ELSE %DO;
11 ,append=NO
12 ,cards_file="&outloc/&ds..sas"
13 %END;
14 )
15%END;
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 : Allan Bowe