15%mddl_derivedvars(libds=work.cases)
18 length var_logic $4000;
21 var_logic="dosubl(cats('data _null_',
byte(59),'data work.pwn',
byte(59)
27 set libref='WORK',dsn='CLASS',var_nm='ok_band',var_deps='AGE'
28 ,var_type='C',var_len=8,var_fmt='',var_logic="ifc(AGE>13,'TEEN','JUNIOR')"
31 set libref='WORK',dsn='CLASS',var_nm='ok_literal',var_deps='AGE'
32 ,var_type='C',var_len=8,var_fmt=''
33 ,var_logic="ifc(AGE>13,'DOSUBL(','NO')",active=1;
35 set libref='WORK',dsn='CLASS',var_nm='ok_label',var_deps='AGE'
36 ,var_type='N',var_len=8,var_fmt='best12.',var_logic='AGE*2'
37 ,var_label='Age - doubled',active=1;
41 set libref='WORK',dsn='CLASS',var_nm='ok_multiline',var_deps='AGE'
42 ,var_type='N',var_len=8,var_fmt='',var_logic='AGE*3'
43 ,var_label='line one'||
byte(10)||'line two',active=1;
45 set libref='WORK',dsn='CLASS',var_nm='bad name',var_deps='AGE'
46 ,var_type='N',var_len=8,var_fmt='',var_logic='AGE',active=1;
48 set libref='WORK',dsn='CLASS',var_nm='1st',var_deps='AGE'
49 ,var_type='N',var_len=8,var_fmt='',var_logic='AGE',active=1;
51 set libref='WORK',dsn='CLASS',var_nm='_n_',var_deps='AGE'
52 ,var_type='N',var_len=8,var_fmt='',var_logic='AGE',active=1;
54 set libref='WORK',dsn='CLASS',var_nm='reserved_nm',var_deps='AGE'
55 ,var_type='N',var_len=8,var_fmt='',var_logic='AGE',active=1;
57 set libref='WORK',dsn='CLASS',var_nm='collides',var_deps='AGE'
58 ,var_type='N',var_len=8,var_fmt='',var_logic='AGE',active=1;
60 set libref='WORK',dsn='CLASS',var_nm='bad_type',var_deps='AGE'
61 ,var_type='X',var_len=8,var_fmt='',var_logic='AGE',active=1;
63 set libref='WORK',dsn='CLASS',var_nm='bad_len',var_deps='AGE'
64 ,var_type='N',var_len=9,var_fmt='',var_logic='AGE',active=1;
66 set libref='WORK',dsn='CLASS',var_nm='bad_fmt',var_deps='AGE'
67 ,var_type='N',var_len=8,var_fmt='best12.;x',var_logic='AGE',active=1;
69 set libref='WORK',dsn='CLASS',var_nm='bad_label',var_deps='AGE'
70 ,var_type='N',var_len=8,var_fmt='',var_logic='AGE'
71 ,var_label='bell'||
byte(1)||'here',active=1;
73 set libref='WORK',dsn='CLASS',var_nm='semicolon',var_deps='AGE'
74 ,var_type='N',var_len=8,var_fmt='',var_logic='AGE;',active=1;
76 set libref='WORK',dsn='CLASS',var_nm='comment',var_deps='AGE'
77 ,var_type='N',var_len=8,var_fmt='',var_logic='AGE ',active=1;
79 (libref,dsn,var_nm,var_deps,var_type,var_len,var_fmt,var_logic,active)
80 select 'WORK','CLASS','pwn','','N',8,'',var_logic,1 from work.payload;
84 set libref='WORK',dsn='CLASS',var_nm='fs_name',var_deps='AGE'
85 ,var_type='N',var_len=8,var_fmt=''
86 ,var_logic="filename('c1','/tmp/x.txt')",active=1;
88 set libref='WORK',dsn='CLASS',var_nm='fs_del',var_deps='AGE'
89 ,var_type='N',var_len=8,var_fmt='',var_logic="fdelete('c1')",active=1;
91 set libref='WORK',dsn='CLASS',var_nm='fs_copy',var_deps='AGE'
92 ,var_type='N',var_len=8,var_fmt=''
93 ,var_logic="fcopy('c1','c2')",active=1;
96%mp_assertscope(SNAPSHOT)
100 physlist=%str(AGE SEX COLLIDES),
101 reserved=%str(RESERVED_NM),
102 denyfuncs=%str(mydeniedfunc)
106%mp_assertdsobs(work.fails,
107 desc=One row is reported per invalid definition,
109 outds=work.test_results
112%mp_assertcols(work.fails,
113 desc=The output carries NAME and REASON,
116 outds=work.test_results
121 where name in ('OK_BAND','OK_LITERAL','OK_LABEL','OK_MULTILINE');
124%mp_assertdsobs(work.chk,
125 desc=No valid definition is reported,
127 outds=work.test_results
132 where missing(reason);
135%mp_assertdsobs(work.chk2,
136 desc=Every reported row carries a reason,
138 outds=work.test_results
148%mp_assertdsobs(work.fails2,
149 desc=The optional lists change only their own rules,
151 outds=work.test_results
156%mddl_derivedvars(libds=work.cases2)
159insert into work.cases2
160 set libref='WORK',dsn='CLASS',var_nm='sitefunc',var_deps='AGE'
161 ,var_type='N',var_len=8,var_fmt='',var_logic='MYDENIEDFUNC(AGE)',active=1;
162insert into work.cases2
163 set libref='WORK',dsn='CLASS',var_nm='builtin',var_deps='AGE'
164 ,var_type='N',var_len=8,var_fmt='',var_logic='sleep(AGE)',active=1;
170 denyfuncs=%str(MYDENIEDFUNC)
173%mp_assertdsobs(work.fails4,
174 desc=denyfuncs adds a name without dropping the built-in list,
176 outds=work.test_results
184%mp_assertdsobs(work.fails5,
185 desc=Without denyfuncs only the built-in name is refused,
187 outds=work.test_results
190%mp_assertscope(COMPARE,ignorelist=_SASJS_WEBOUT_HEADERS,
191 outds=work.test_results