mirror of
https://github.com/sasjs/core.git
synced 2026-01-08 10:00:04 +00:00
feat: new mfv_getfolderpath macro
+ associated test created to support the fix for https://git.datacontroller.io/dc/dc/issues/171
This commit is contained in:
31
tests/viyaonly/mfv_getfolderpath.test.sas
Normal file
31
tests/viyaonly/mfv_getfolderpath.test.sas
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
/**
|
||||||
|
@file
|
||||||
|
@brief Testing mfv_getfolderpath macro function
|
||||||
|
|
||||||
|
<h4> SAS Macros </h4>
|
||||||
|
@li mf_uid.sas
|
||||||
|
@li mfv_getfolderpath.sas
|
||||||
|
@li mfv_getpathuri.sas
|
||||||
|
@li mp_assert.sas
|
||||||
|
@li mv_createfolder.sas
|
||||||
|
|
||||||
|
**/
|
||||||
|
|
||||||
|
options mprint sgen;
|
||||||
|
|
||||||
|
%let folder=%mf_uid();
|
||||||
|
/* create a folder */
|
||||||
|
%mv_createfolder(path=&mcTestAppLoc/&folder)
|
||||||
|
%mp_assert(
|
||||||
|
iftrue=(&syscc=0),
|
||||||
|
desc=no errs on folder creation
|
||||||
|
)
|
||||||
|
|
||||||
|
%let uri=%mfv_getpathuri(&mcTestAppLoc/&folder);
|
||||||
|
%put %mfv_getfolderpath(&uri);
|
||||||
|
|
||||||
|
%mp_assert(
|
||||||
|
iftrue=("%mfv_getfolderpath(&uri)"="&mcTestAppLoc/&folder"),
|
||||||
|
desc=Check if correct folder was returned
|
||||||
|
)
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ options mprint sgen;
|
|||||||
|
|
||||||
%let file=%mf_uid();
|
%let file=%mf_uid();
|
||||||
|
|
||||||
/* create a folder */
|
/* create a file */
|
||||||
filename somefile temp;
|
filename somefile temp;
|
||||||
data _null_;
|
data _null_;
|
||||||
file somefile;
|
file somefile;
|
||||||
|
|||||||
53
viya/mfv_getfolderpath.sas
Normal file
53
viya/mfv_getfolderpath.sas
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
/**
|
||||||
|
@file
|
||||||
|
@brief Returns the path of a folder from the URI
|
||||||
|
@details Makes use of the SYSMSG() ER8OR response, which resolves the uri,
|
||||||
|
seemingly without entering an er8or state.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
%mv_createfolder(path=/public/demo)
|
||||||
|
%let uri=%mfv_getpathuri(/public/demo);
|
||||||
|
%put %mfv_getfolderpath(&uri);
|
||||||
|
|
||||||
|
Notice above the new path has an uppercase P - the correct path.
|
||||||
|
|
||||||
|
@param [in] uri The uri of the folder -eg /folders/folders/xxxx)
|
||||||
|
|
||||||
|
<h4> SAS Macros </h4>
|
||||||
|
@li mf_getuniquefileref.sas
|
||||||
|
|
||||||
|
<h4> Related Macros </h4>
|
||||||
|
@li mfv_getpathuri.sas
|
||||||
|
|
||||||
|
@version 4
|
||||||
|
@author [Allan Bowe](https://www.linkedin.com/in/allanbowe/)
|
||||||
|
**/
|
||||||
|
%macro mfv_getfolderpath(uri
|
||||||
|
)/*/STORE SOURCE*/;
|
||||||
|
|
||||||
|
%local fref rc path msg var /* var used to avoid delete timing issue */;
|
||||||
|
%let fref=%mf_getuniquefileref();
|
||||||
|
%if %quote(%substr(%str(&uri),1,17)) ne %quote(/folders/folders/)
|
||||||
|
%then %do;
|
||||||
|
%put &sysmacroname: Invalid URI: &uri;
|
||||||
|
%end;
|
||||||
|
%else %if %sysfunc(filename(fref,,filesrvc,folderuri="&uri" ))=0
|
||||||
|
%then %do;
|
||||||
|
%let var=_FILESRVC_&fref._URI;
|
||||||
|
%local fid ;
|
||||||
|
%let fid= %sysfunc(fopen(&fref,I));
|
||||||
|
%let msg=%quote(%sysfunc(sysmsg()));
|
||||||
|
|
||||||
|
%unquote(%scan(&msg,2,%str(,.)))
|
||||||
|
|
||||||
|
%let rc=%sysfunc(fclose(&fid));
|
||||||
|
%let rc=%sysfunc(filename(fref));
|
||||||
|
%symdel &var;
|
||||||
|
%end;
|
||||||
|
%else %do;
|
||||||
|
%put &sysmacroname: Not Found: &uri;
|
||||||
|
%let syscc=0;
|
||||||
|
%end;
|
||||||
|
|
||||||
|
%mend mfv_getfolderpath ;
|
||||||
Reference in New Issue
Block a user