31 tree=/User Folders/sasdemo/somestp
40%
if &mDebug=1 %then %let mD=;
42%&mD.put Executing &sysmacroname..sas;
45%
if %length(&name)>0 %then %let name=/&name;
49%let tsuri=stopifempty ;
52 format type uri tsuri value $200.;
53 call missing (of _all_);
54 path=
"&tree&name(StoredProcess)";
56 if metadata_pathobj(
"",path,
"StoredProcess",type,uri)>0 then
do;
59 do while (metadata_getnasn(uri,
"Notes",cnt,tsuri)>0);
60 rc=metadata_getattr(tsuri,
"Name",value);
61 &mD.put tsuri= value=;
62 if value=
"SourceCode" then
do;
64 rc=metadata_getattr(tsuri,
"Id",value);
65 call symputx(
'tsuri',value,
'l');
74%mp_abort(iftrue= (&tsuri=stopifempty)
76 ,msg=%str(&tree&name.(StoredProcess) not found!)
82filename __getdoc temp lrecl=10000000;
84 in=
"<GetMetadata><Reposid>$METAREPOSITORY</Reposid>
85 <Metadata><TextStore Id='&tsuri'/></Metadata>
86 <Ns>SAS</Ns><Flags>1</Flags><Options/></GetMetadata>"
93 infile __getdoc lrecl=10000;
95 start=index(_infile_,
'StoredText="');
97 call symputx(
"start",start+11);
98 *putlog
'"' _infile_
'"';
103%
if "&outloc"=
"0" %then %let outeng=TEMP;
104%
else %let outeng=
"&outloc";
106%
if &outref=0 %then %let fref=%mf_getuniquefileref();
107%
else %let fref=&outref;
110filename &fref &outeng lrecl=100000;
112 length filein 8 fileid 8;
113 filein = fopen(
"__getdoc",
"I",1,
"B");
114 fileid = fopen(
"&fref",
"O",1,
"B");
117 do while(fread(filein)=0);
120 rc = fget(filein,rec,1);
121 if rec=
'"' then leave;
122 else if rec=
"&" then
do;
125 if fread(filein) ne 0 then
goto getout;
126 rc = fget(filein,rec,1);
127 entity=cats(entity,rec);
130 when (
'&' ) rec='&' ;
131 when ('<' ) rec='<' ;
132 when ('>' ) rec='>' ;
133 when (''') rec="'" ;
134 when ('"') rec='"' ;
135 when ('&
#x0a;') rec='0A'x;
136 when (
'
') rec='0D'x;
137 when ('&
#36;' ) rec='$' ;
138 when (
'	') rec='09'x;
139 otherwise putlog "%str(WARN)ING: missing value for " entity=;
141 rc =fput(fileid, substr(rec,1,1));
145 rc =fput(fileid,rec);
155%if &showlog=YES %then %do;
157 infile &fref lrecl=32767 end=last;
159 if _n_=1 then putlog '>>stpcodeBEGIN<<';
161 if last then putlog '>>stpcodeEND<<';
165filename __getdoc clear;
166%if &outref=0 %then %do;
167 filename &fref clear;