Type : CREATION_INTERNE
Les données sont extraites dynamiquement du référentiel de métadonnées via les fonctions SAS (metadata_resolve, metadata_getnobj, etc.).
| 1 | options |
| 2 | metaserver='meta.demo.sas.com' |
| 3 | metaport=8561 |
| 4 | metaprotocol='bridge' |
| 5 | metauser='sasadm @saspw' |
| 6 | metapass='password' |
| 7 | metarepository='Foundation' |
| 8 | metaconnect='NONE'; |
| 1 | DATA directories; |
| 2 | |
| 3 | /* Initialize variables. */ |
| 4 | LENGTH type id dir_uri file_uri $ 50 path file_name fqn $ 255; |
| 5 | call missing(of _character_); |
| 6 | keep fqn; |
| 7 | |
| 8 | /* Define a query to find all directory objects */ |
| 9 | obj="omsobj:Directory?Directory[Files/File[ @code_sas_json/downside_frequency_test.json contains '.']"; |
| 10 | |
| 11 | /* Count the objects that match this query. */ |
| 12 | dir_count=metadata_resolve(obj,type,id); |
| 13 | |
| 14 | /* Proceed if any directories are found. */ |
| 15 | IF dir_count > 0 THEN DO i=1 to dir_count; |
| 16 | rc=metadata_getnobj(obj,i,dir_uri); |
| 17 | rc=metadata_getattr(dir_uri,"DirectoryName",path); |
| 18 | |
| 19 | /* Find the files associated with the path. */ |
| 20 | file_count=metadata_getnasn(dir_uri,"Files",1,file_uri); |
| 21 | IF file_count > 0 THEN DO j=1 to file_count; |
| 22 | rc=metadata_getnasn(dir_uri,"Files",j,file_uri); |
| 23 | rc=metadata_getattr(file_uri,"FileName",file_name); |
| 24 | fqn=catx("/",path,file_name); |
| 25 | OUTPUT; |
| 26 | END; |
| 27 | END; |
| 28 | /* Define a search query to find any "SASFileRef" object types. */ |
| 29 | obj2="omsobj:SASFileRef? @code_sas_json/downside_frequency_test.json contains '.'"; |
| 30 | fileref_count=metadata_resolve(obj2,type,id); |
| 31 | IF fileref_count > 0 THEN DO i = 1 to fileref_count; |
| 32 | rc=metadata_getnobj(obj2,i,file_uri); |
| 33 | rc=metadata_getattr(file_uri,"Name",fqn); |
| 34 | OUTPUT; |
| 35 | END; |
| 36 | |
| 37 | RUN; |