SASUnit Examples  Version 1.5.0
_stdpath.sas
Go to the documentation of this file.
1 
21 %MACRO _stdPath(i_root
22  ,i_path
23  );
24 
25 %IF %LENGTH(&i_root) = 0 %THEN %DO;
26  %PUT &g_error.(SASUNIT): i_root parameter must not be blank;
27  %RETURN;
28 %END;
29 
30 %LET i_root = %sysfunc(translate(&i_root,/,\));
31 
32 %IF %LENGTH( %SYSFUNC(COMPRESS(&i_root,/)) ) = 0 %THEN %DO;
33  %PUT &g_error.(SASUNIT): i_root parameter must not be blank;
34  %RETURN;
35 %END;
36 
37 %IF "%substr(&i_root,%length(&i_root),1)" NE "/"
38  %THEN %LET i_root = &i_root/;
39 %LET i_path = %sysfunc(translate(&i_path,/,\));
40 %IF "%substr(&i_path,%length(&i_path),1)" EQ "/"
41  %THEN %LET i_path = %substr(&i_path,1,%eval(%length(&i_path)-1));
42 
43 %IF %index(%upcase(&i_path)/, %upcase(&i_root)) %THEN %DO;
44  %IF %length (&i_path) > %length(&i_root) %THEN %DO;
45  %substr(&i_path,%eval(%length(&i_root)+1))
46  %END;
47 %END;
48 %ELSE %DO;
49  &i_path
50 %END;
51 %MEND _stdPath;
53 /*
54 %put %_stdPath(c:\temp,c:\temp\test\sas.log);
55 %put %_stdPath(c:\temp,c:\temp\test\);
56 %put %_stdPath(c:\temp,c:\temp\test);
57 %put %_stdPath(c:\temp,c:\temp\);
58 %put %_stdPath(c:\temp,c:\temp);
59 %put %_stdPath(c:\temp,c:\tempo);
60 %put %_stdPath(c:\temp,d:\temp);
61 %put %_stdPath(i_root=,i_path=test);
62 %put %_stdPath(i_root=/,i_path=test);
63 %put %_stdPath(i_root=\,i_path=test);
64 */