mirror of
https://github.com/sasjs/core.git
synced 2025-12-10 14:04:36 +00:00
133 lines
4.5 KiB
SAS
133 lines
4.5 KiB
SAS
/**
|
|
@file
|
|
@brief Creates a dataset with all available repositories
|
|
|
|
@param [out] outds= (work.mm_getrepos)
|
|
The dataset to create that contains the list of repos
|
|
|
|
@returns outds dataset containing all repositories
|
|
|
|
@warning The following filenames are created and then de-assigned:
|
|
|
|
filename sxlemap clear;
|
|
filename response clear;
|
|
libname _XML_ clear;
|
|
|
|
@version 9.2
|
|
@author Allan Bowe
|
|
|
|
**/
|
|
|
|
%macro mm_getrepos(
|
|
outds=work.mm_getrepos
|
|
)/*/STORE SOURCE*/;
|
|
|
|
|
|
* use a temporary fileref to hold the response;
|
|
filename response temp;
|
|
/* get list of libraries */
|
|
proc metadata in=
|
|
"<GetRepositories><Repositories/><Flags>1</Flags><Options/></GetRepositories>"
|
|
out=response;
|
|
run;
|
|
|
|
/* write the response to the log for debugging */
|
|
/*
|
|
data _null_;
|
|
infile response lrecl=1048576;
|
|
input;
|
|
put _infile_;
|
|
run;
|
|
*/
|
|
|
|
/* create an XML map to read the response */
|
|
filename sxlemap temp;
|
|
data _null_;
|
|
file sxlemap;
|
|
put '<SXLEMAP version="1.2" name="SASRepos"><TABLE name="SASRepos">';
|
|
put "<TABLE-PATH syntax='XPath'>/GetRepositories/Repositories/Repository";
|
|
put "</TABLE-PATH>";
|
|
put '<COLUMN name="id">';
|
|
put "<PATH syntax='XPath'>/GetRepositories/Repositories/Repository/@Id";
|
|
put "</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="name">';
|
|
put "<PATH syntax='XPath'>/GetRepositories/Repositories/Repository/@Name";
|
|
put "</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="desc">';
|
|
put "<PATH syntax='XPath'>/GetRepositories/Repositories/Repository/@Desc";
|
|
put "</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="DefaultNS">';
|
|
put "<PATH syntax='XPath'>";
|
|
put "/GetRepositories/Repositories/Repository/@DefaultNS</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="RepositoryType">';
|
|
put "<PATH syntax='XPath'>";
|
|
put "/GetRepositories/Repositories/Repository/@RepositoryType</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>20</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="RepositoryFormat">';
|
|
put "<PATH syntax='XPath'>";
|
|
put "/GetRepositories/Repositories/Repository/@RepositoryFormat</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>10</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="Access">';
|
|
put "<PATH syntax='XPath'>";
|
|
put "/GetRepositories/Repositories/Repository/@Access</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>16</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="CurrentAccess">';
|
|
put "<PATH syntax='XPath'>";
|
|
put "/GetRepositories/Repositories/Repository/@CurrentAccess</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>16</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="PauseState">';
|
|
put "<PATH syntax='XPath'>";
|
|
put "/GetRepositories/Repositories/Repository/@PauseState</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>16</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="Path">';
|
|
put "<PATH syntax='XPath'>/GetRepositories/Repositories/Repository/@Path";
|
|
put "</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>256</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="Engine">';
|
|
put "<PATH syntax='XPath'>/GetRepositories/Repositories/Repository/@Engine";
|
|
put "</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>8</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="Options">';
|
|
put "<PATH syntax='XPath'>/GetRepositories/Repositories/Repository/@Options";
|
|
put "</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>32</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="MetadataCreated">';
|
|
put "<PATH syntax='XPath'>";
|
|
put "/GetRepositories/Repositories/Repository/@MetadataCreated</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>24</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '<COLUMN name="MetadataUpdated">';
|
|
put "<PATH syntax='XPath'>";
|
|
put "/GetRepositories/Repositories/Repository/@MetadataUpdated</PATH>";
|
|
put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>24</LENGTH>";
|
|
put '</COLUMN>';
|
|
put '</TABLE></SXLEMAP>';
|
|
run;
|
|
libname _XML_ xml xmlfileref=response xmlmap=sxlemap;
|
|
|
|
proc sort data= _XML_.SASRepos out=&outds;
|
|
by name;
|
|
run;
|
|
|
|
/* clear references */
|
|
filename sxlemap clear;
|
|
filename response clear;
|
|
libname _XML_ clear;
|
|
|
|
%mend mm_getrepos; |