Publié le :

Création de Dossier et Copie de Données

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Le script comprend une macro nommée `create_newfolder` qui prend un chemin de dossier en paramètre. Cette macro vérifie l'existence du dossier ; si elle n'existe pas, elle détermine le système d'exploitation (Windows ou Linux) via `&sysscp` et exécute la commande système appropriée (`md` ou `mkdir -p`) pour créer le dossier récursivement. Après la définition de la macro, le script crée un dossier `D:\SAS©\mactest`, y assigne une bibliothèque SAS© nommée `mylib`, puis copie le jeu de données `CLASS` de la bibliothèque `SASHELP` vers `mylib.class`.
Analyse des données

Type : SASHELP


Le script utilise le jeu de données `CLASS` provenant de la bibliothèque interne `SASHELP`.

1 Bloc de code
MACRO DEFINITION
Explication :
Ce bloc définit la macro `create_newfolder`. Elle prend un argument `newfld` (le chemin du dossier à créer). Elle utilise `%sysfunc(fileexist())` pour vérifier si le dossier existe déjà. Si non, elle utilise `%sysexec` avec `md` (pour Windows) ou `mkdir -p` (pour Linux) pour créer le dossier. L'utilisation de `%sysexec` est une fonction administrative permettant l'exécution de commandes système et nécessite des privilèges appropriés.
Copié !
1%macro create_newfolder(newfld);
2
3%*---------------------------------------------------------;
4%*check for the existence of the folder;
5%*---------------------------------------------------------;
6
7%IF %sysfunc(fileexist(&newfld)) %THEN %put NOTE:The directory "&newfld" already EXISTS.;
8
9%*---------------------------------------------------------;
10%*create the folder(s) recursively IF absent;
11%*---------------------------------------------------------;
12%ELSE %DO;
13 %*---------------------------------------------------------;
14 %*check the operating system and use the OS specific command;
15 %*---------------------------------------------------------;
16 %IF "%bquote(%substr(&sysscp,1,3))"="WIN" %THEN %sysexec md "&newfld";
17 %ELSE %IF "%bquote(%substr(&sysscp,1,3))"="LIN" %THEN %sysexec mkdir -p "&newfld";
18
19 %put NOTE:The directory "&newfld" has been CREATED.;
20%END;
21
22
23%mend csg_create_newfolder_001;
2 Bloc de code
MACRO CALL / LIBNAME
Explication :
Ce bloc appelle la macro `create_newfolder` pour créer le dossier `D:\SAS\mactest`. Ensuite, il attribue le nom de bibliothèque `mylib` à ce nouveau dossier, le rendant accessible pour les opérations SAS.
Copié !
1%create_newfolder(D:\SAS\mactest);
2 
3LIBNAME mylib "D:\SAS\mactest";
4 
3 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA STEP copie le jeu de données `CLASS` de la bibliothèque SASHELP (implicitement, car `set class;` sans libname qualifié référence `SASHELP.CLASS` si `WORK.CLASS` n'existe pas) vers la nouvelle bibliothèque `mylib`, créant ainsi `mylib.class` dans le dossier `D:\SAS\mactest`.
Copié !
1DATA mylib.class;
2 SET class;
3RUN;
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.