Type : CREATION_INTERNE
La macro interagit directement avec le système de fichiers pour créer des répertoires et ne traite pas de jeux de données SAS internes ou externes. L'action principale est la modification de l'environnement système.
| 1 | %macro mkdir(path,dlm=\\%); |
| 2 | |
| 3 | %let msg = The path &path was successfully created.; |
| 4 | |
| 5 | %let pos = 1; |
| 6 | %let token = %scan(&path, &pos, &dlm); |
| 7 | %let segment =; |
| 8 | %let delim =; |
| 9 | %let op =; |
| 10 | |
| 11 | |
| 12 | %DO %while (&token ne); |
| 13 | |
| 14 | %let segment = &segment.&delim.&token; |
| 15 | %let delim = \\; |
| 16 | %* put &segment; |
| 17 | |
| 18 | %let pos = %eval(&pos + 1); |
| 19 | %let token = %scan(&path, &pos, &dlm); |
| 20 | |
| 21 | %IF %sysfunc(fileexist(&segment)) eq 0 %THEN %DO; |
| 22 | %sysexec md &segment; |
| 23 | %* put ERRORCODE &sysrc; |
| 24 | %let op = 1; |
| 25 | |
| 26 | /* if the operation failed, display approptiate message |
| 27 | and abort the program */ |
| 28 | %IF %sysfunc(fileexist(&segment)) eq 0 %THEN %DO; |
| 29 | %let token =; |
| 30 | %let msg = Invalid path name, directory will not be |
| 31 | created.; %END; |
| 32 | |
| 33 | %END; |
| 34 | %END; |
| 35 | |
| 36 | %IF &op = 1 %THEN %put MKDIR: &msg; |
| 37 | /* |
| 38 | %else %put MKDIR: The path &path does already exist; |
| 39 | */ |
| 40 | %mend; |