Macros for SAS Application Developers
https://github.com/sasjs/core
Loading...
Searching...
No Matches
mf_existvarlist.test.sas
Go to the documentation of this file.
1/**
2 @file
3 @brief Testing mf_existvarlist macro
4
5 <h4> SAS Macros </h4>
6 @li mf_existvarlist.sas
7 @li mp_assert.sas
8 @li mp_assertscope.sas
9
10**/
11
12data work.existvarlist_test;
13 length alpha $4 beta 8;
14 alpha='a';
15 beta=1;
16 output;
17run;
18
19%mp_assertscope(SNAPSHOT)
20%put scope check:%mf_existvarlist(work.existvarlist_test,alpha beta);
21%mp_assertscope(COMPARE,
22 desc=Checking that mf_existvarlist does not leak scope,
23 outds=work.test_results
24)
25
26%mp_assert(
27 iftrue=(%mf_existvarlist(work.existvarlist_test,alpha beta)=1),
28 desc=Checking that a list of existing variables returns 1,
29 outds=work.test_results
30)
31
32%mp_assert(
33 iftrue=(%mf_existvarlist(work.existvarlist_test,alpha nosuchvar)=0),
34 desc=Checking that a list with one missing variable returns 0,
35 outds=work.test_results
36)
37
38%mp_assert(
39 iftrue=(%mf_existvarlist(work.existvarlist_test,ALPHA)=1),
40 desc=Checking that variable matching is case insensitive,
41 outds=work.test_results
42)
43
44/* a member that exists but holds no variables */
45data work.existvarlist_empty;
46run;
47
48%mp_assert(
49 iftrue=(%mf_existvarlist(work.existvarlist_empty,alpha)=0),
50 desc=Checking that a dataset with no variables returns 0,
51 outds=work.test_results
52)
53
54/* a missing member answers 0 without dirtying the caller's status codes */
55%let existvarlist_missing=%mf_existvarlist(work.no_such_dataset,alpha);
56%let existvarlist_syserr=&syserr;
57%let existvarlist_syscc=&syscc;
58
59%mp_assert(
60 iftrue=(&existvarlist_missing=0),
61 desc=Checking that a dataset that does not exist returns 0,
62 outds=work.test_results
63)
64
65%mp_assert(
66 iftrue=(&existvarlist_syserr=0),
67 desc=Checking that a missing member leaves SYSERR untouched,
68 outds=work.test_results
69)
70
71%mp_assert(
72 iftrue=(&existvarlist_syscc=0),
73 desc=Checking that a missing member leaves SYSCC untouched,
74 outds=work.test_results
75)
76
77/* blank input answers 0 - the caller decides what to do about it */
78%mp_assert(
79 iftrue=(%mf_existvarlist(work.existvarlist_test,)=0),
80 desc=Checking that a blank varlist returns 0,
81 outds=work.test_results
82)
83
84%mp_assert(
85 iftrue=(%mf_existvarlist(,alpha)=0),
86 desc=Checking that a blank libds returns 0,
87 outds=work.test_results
88)