SASUnit Examples  Version 1.3.0
_loadenvironment.sas
Go to the documentation of this file.
1 
20 %MACRO _loadEnvironment(i_withlibrefs = 1
21  );
22 
23  %LOCAL l_macname; %LET l_macname=&sysmacroname;
24 
25  %GLOBAL g_target g_project g_root g_sasunit g_sasunit_os g_autoexec g_sascfg g_sasuser
26  g_sasautos g_sasautos0 g_sasautos1 g_sasautos2 g_sasautos3 g_sasautos4
27  g_sasautos5 g_sasautos6 g_sasautos7 g_sasautos8 g_sasautos9
28  g_testdata g_refdata g_doc g_error g_warning g_note
29  g_work g_testout g_log
30  g_logfile g_printfile
31  g_testcoverage
32  g_verbose
33  g_sasunitroot
34  ;
35  %LOCAL i;
36 
37  %LET g_target = %sysfunc(pathname(target));
38 
39  %*** Both macvars are dependent on scenario and testcase, values can only be assigned later ***;
40  %LET g_logfile = ;
41  %LET g_printfile = ;
42 
43  %IF %_handleError(&l_macname.
44  ,InvalidTsu
45  ,%_nobs(target.tsu) NE 1
46  ,invalid test database: target.tsu
47  )
48  %THEN %GOTO errexit;
49 
50  %IF %_handleError(&l_macname.
51  ,MissingCas
52  ,NOT %sysfunc(exist(target.cas))
53  ,invalid test database: target.cas
54  )
55  %THEN %GOTO errexit;
56 
57  %IF %_handleError(&l_macname.
58  ,MissingScn
59  ,NOT %sysfunc(exist(target.scn))
60  ,invalid test database: target.scn
61  )
62  %THEN %GOTO errexit;
63 
64  %IF %_handleError(&l_macname.
65  ,MissingTst
66  ,NOT %sysfunc(exist(target.tst))
67  ,invalid test database: target.tst
68  )
69  %THEN %GOTO errexit;
70 
71  DATA _null_;
72  SET target.tsu;
73  call symput ('g_project' , tsu_project);
74  call symput ('g_root' , tsu_root);
75  call symput ('g_sasunitroot' , tsu_sasunitroot);
76  call symput ('g_sasunit' , tsu_sasunit);
77  call symput ('g_sasunit_os' , tsu_sasunit_os);
78  call symput ('g_sasautos' , tsu_sasautos);
79  call symput ('g_sasautos0' , tsu_sasautos);
80  %DO i=1 %TO 9;
81  call symput ("g_sasautos&i" , tsu_sasautos&i);
82  %END;
83  call symput ('g_autoexec' , tsu_autoexec);
84  call symput ('g_sascfg' , tsu_sascfg);
85  call symput ('g_sasuser' , tsu_sasuser);
86  call symput ('g_testdata' , tsu_testdata);
87  call symput ('g_refdata' , tsu_refdata);
88  call symput ('g_doc' , tsu_doc);
89  call symput ('g_testcoverage', put (tsu_testcoverage, z1.));
90  call symput ('g_verbose' , put (tsu_verbose, z1.));
91  RUN;
92 
93  %LET g_project = &g_project;
94  %LET g_root = &g_root;
95  %LET g_sasunitroot = %_abspath(&g_root,&g_sasunitroot);
96  %LET g_sasunit = %_abspath(&g_root,&g_sasunit);
97  %LET g_sasunit_os = %_abspath(&g_root,&g_sasunit_os);
98  %LET g_sasautos = %_abspath(&g_root,&g_sasautos);
99  %DO i=0 %TO 9;
100  %LET g_sasautos&i = %_abspath(&g_root,&&g_sasautos&i);
101  %END;
102  %LET g_autoexec = %_abspath(&g_root,&g_autoexec);
103  %LET g_sascfg = %_abspath(&g_root,&g_sascfg);
104  %LET g_sasuser = %_abspath(&g_root,&g_sasuser);
105  %LET g_testdata = %_abspath(&g_root,&g_testdata);
106  %LET g_refdata = %_abspath(&g_root,&g_refdata);
107  %LET g_doc = %_abspath(&g_root,&g_doc);
108  %LET g_testcoverage = &g_testcoverage.;
109 
110  %LET g_work = %sysfunc(pathname(work));
111  %LET g_testout = &g_target/tst;
112  %LET g_log = &g_target/log;
113 
114  %_detectSymbols(r_error_symbol=g_error, r_warning_symbol=g_warning, r_note_symbol=g_note)
115 
116  %IF &i_withlibrefs %THEN %DO;
117  LIBNAME testout "&g_testout";
118  FILENAME testout "&g_testout";
119  %IF %length(&g_testdata) %THEN %DO;
120  LIBNAME testdata "&g_testdata";
121  FILENAME testdata "&g_testdata";
122  %LET g_testdata = %sysfunc(pathname(testdata));
123  %END;
124  %IF %length(&g_refdata) %THEN %DO;
125  LIBNAME refdata "&g_refdata";
126  FILENAME refdata "&g_refdata";
127  %LET g_refdata = %sysfunc(pathname(refdata));
128  %END;
129  %IF %length(&g_doc) %THEN %DO;
130  FILENAME doc "&g_doc";
131  %END;
132  %END;
133 
134  %put _global_;
135 
136  OPTIONS MAUTOSOURCE SASAUTOS=(SASAUTOS "&g_sasunit" "&g_sasunit_os"
137  %DO i=0 %TO 9;
138  %IF "&&g_sasautos&i" NE "" %THEN "&&g_sasautos&i";
139  %END; );
140 
141 
142  %GOTO exit;
143 %errexit:
144  LIBNAME target;
145  %exit:
146 %MEND _loadEnvironment;