Production Ready Macros for SAS Application Developers
mm_getdirectories.sas
Go to the documentation of this file.
1 /**
2  @file
3  @brief Returns a dataset with the meta directory object for a physical path
4  @details Provide a file path to get matching directory objects, or leave
5  blank to return all directories. The Directory object is used to reference
6  a physical filepath (eg when registering a .sas program in a Stored process)
7 
8  @param path= the physical path for which to return a meta Directory object
9  @param outds= the dataset to create that contains the list of directories
10  @param mDebug= set to 1 to show debug messages in the log
11 
12  @returns outds dataset containing the following columns:
13  - directoryuri
14  - groupname
15  - groupdesc
16 
17  @version 9.2
18  @author Allan Bowe
19 
20 **/
21 
22 %macro mm_getDirectories(
23  path=
24  ,outds=work.mm_getDirectories
25  ,mDebug=0
26 )/*/STORE SOURCE*/;
27 
28 %local mD;
29 %if &mDebug=1 %then %let mD=;
30 %else %let mD=%str(*);
31 %&mD.put Executing mm_getDirectories.sas;
32 %&mD.put _local_;
33 
34 data &outds (keep=directoryuri name directoryname directorydesc );
35  length directoryuri name directoryname directorydesc $256;
36  call missing(of _all_);
37  __i+1;
38 %if %length(&path)=0 %then %do;
39  do while
40  (metadata_getnobj("omsobj:Directory?@Id contains '.'",__i,directoryuri)>0);
41 %end; %else %do;
42  do while
43  (metadata_getnobj("omsobj:Directory?@DirectoryName='&path'",__i,directoryuri)>0);
44 %end;
45  __rc1=metadata_getattr(directoryuri, "Name", name);
46  __rc2=metadata_getattr(directoryuri, "DirectoryName", directoryname);
47  __rc3=metadata_getattr(directoryuri, "Desc", directorydesc);
48  &mD.putlog (_all_) (=);
49  drop __:;
50  __i+1;
51  if sum(of __rc1-__rc3)=0 then output;
52  end;
53 run;
54 
55 %mend;