Type : INTERNAL_CREATION
The macro interacts directly with the file system to create directories and does not process internal or external SAS datasets. The main action is the modification of the system environment.
| 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; |