Macros for SAS Application Developers
https://github.com/sasjs/core
Loading...
Searching...
No Matches
mp_getcols.test.sas
Go to the documentation of this file.
1/**
2 @file
3 @brief Testing mp_getcols macro
4
5 <h4> SAS Macros </h4>
6 @li mp_getcols.sas
7 @li mp_assert.sas
8 @li mp_assertcols.sas
9 @li mp_assertcolvals.sas
10 @li mp_assertdsobs.sas
11 @li mp_assertscope.sas
12
13**/
14
15
16/* make some data. SOME_DATE2 / SOME_TIME2 carry formats the old prefix test
17 did not know about */
18proc sql;
19create table work.src(
20 SOME_DATETIME float format=datetime19.,
21 SOME_CHAR char(16),
22 SOME_NUM num,
23 SOME_TIME num format=time8.,
24 SOME_DATE num format=date9.,
25 SOME_DATE2 num format=ddmmyyb10.,
26 SOME_TIME2 num format=hhmm8.
27);
28
29/* run macro, checking for scope leakage */
30%mp_assertscope(SNAPSHOT)
31%mp_getcols(work.src,outds=work.info)
32%mp_assertscope(COMPARE)
33
34%mp_assertdsobs(work.info,
35 desc=Has 7 records,
36 test=EQUALS 7,
37 outds=work.test_results
38)
39
40data work.check;
41 length val $10;
42 do val='NUMERIC','DATE','CHARACTER','DATETIME','TIME';
43 output;
44 end;
45run;
46%mp_assertcolvals(work.info.ddtype,
47 checkvals=work.check.val,
48 desc=All values have a match,
49 test=ALLVALS
50)
51
52%mp_assertcols(work.info,
53 cols=name type length varnum format label ddtype fmtname,
54 test=ALL,
55 desc=check all columns exist
56)
57
58/* DDMMYYB and HHMM are in the format lists but are not DATE / TIME prefixed,
59 so a prefix test would leave them as NUMERIC */
60%let dttmcols=0;
61proc sql noprint;
62select count(*) into: dttmcols from work.info
63 where (name='SOME_DATE2' and ddtype='DATE')
64 or (name='SOME_TIME2' and ddtype='TIME');
65quit;
66%mp_assert(
67 iftrue=(&dttmcols=2),
68 desc=Formats a prefix test would miss are still classified,
69 outds=work.test_results
70)