16%mp_assertscope(SNAPSHOT)
20 length actual expected $32;
22 %mp_rowhash(md5_col=actual)
23 expected=put(md5(
'DC HASH v2'),$hex32.);
24 call symputx(
't1_actual',actual);
25 call symputx(
't1_expected',expected);
27%mp_assertscope(COMPARE,ignorelist=T1_ACTUAL T1_EXPECTED)
29 iftrue=(
"&t1_actual"=
"&t1_expected"),
30 desc=Versioned seed is returned when no variables are supplied,
31 outds=work.test_results
36 length c1 $1 actual expected $32;
37 length state digest $16 pair $32;
40 %mp_rowhash(md5_col=actual, cvars=c1)
41 state=md5('DC HASH v2');
42 digest=md5(trimn(c1));
44 expected=put(md5(pair),$hex32.);
45 call symputx('t2_actual',actual);
46 call symputx('t2_expected',expected);
49 iftrue=(
"&t2_actual"=
"&t2_expected"),
50 desc=Single character variable hash matches reference construction,
51 outds=work.test_results
56 length actual expected $32;
57 length state digest $16 numtext $64 pair $32;
60 %mp_rowhash(md5_col=actual, nvars=n1)
61 state=md5('DC HASH v2');
64 numtext=put(normal,binary64.);
65 digest=md5(trim(numtext));
67 expected=put(md5(pair),$hex32.);
68 call symputx('t3_actual',actual);
69 call symputx('t3_expected',expected);
72 iftrue=(
"&t3_actual"=
"&t3_expected"),
73 desc=Single numeric variable hash matches reference construction,
74 outds=work.test_results
79 length c1 c2 $1 h1 h2 $32;
83 %mp_rowhash(md5_col=h1, cvars=c1 c2)
85 %mp_rowhash(md5_col=h2, cvars=c2 c1)
86 call symputx('t4_h1',h1);
87 call symputx('t4_h2',h2);
90 iftrue=(
"&t4_h1" ne
"&t4_h2"),
91 desc=Order of cvars changes the resulting hash,
92 outds=work.test_results
101 %mp_rowhash(md5_col=h1, nvars=n1 n2)
103 %mp_rowhash(md5_col=h2, nvars=n2 n1)
104 call symputx('t5_h1',h1);
105 call symputx('t5_h2',h2);
108 iftrue=(
"&t5_h1" ne
"&t5_h2"),
109 desc=Order of nvars changes the resulting hash,
110 outds=work.test_results
122data work.test6_hashed;
125 %mp_rowhash(md5_col=hash, cvars=c, nvars=n)
129 select count(distinct hash) into: t6_distinct trimmed
130 from work.test6_hashed;
134 iftrue=(&t6_distinct=1),
135 desc=Identical rows produce identical hashes,
136 outds=work.test_results
150data work.test7_hashed;
153 %mp_rowhash(md5_col=hash, cvars=c, nvars=n)
157 select count(distinct hash) into: t7_distinct trimmed
158 from work.test7_hashed;
162 iftrue=(&t7_distinct=2),
163 desc=Different rows produce different hashes,
164 outds=work.test_results
176data work.test8_hashed;
179 %mp_rowhash(md5_col=hash, cvars=c)
183 select count(distinct hash) into: t8_distinct trimmed
184 from work.test8_hashed;
188 iftrue=(&t8_distinct=2),
189 desc=Leading blanks are retained in character hashes,
190 outds=work.test_results