mirror of
https://github.com/sasjs/core.git
synced 2026-04-03 16:03:13 +00:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a54b9c796 | ||
|
|
e66ef31e26 | ||
|
|
186ea1cfba |
16
all.sas
16
all.sas
@@ -14541,7 +14541,7 @@ alter table &libds modify &var char(&len);
|
||||
%mend mp_updatevarlength;
|
||||
/**
|
||||
@file
|
||||
@brief Used to validate variables in a dataset
|
||||
@brief Used to validate values in a data step
|
||||
@details Useful when sanitising inputs, to ensure that they arrive with a
|
||||
certain pattern.
|
||||
Usage:
|
||||
@@ -14568,6 +14568,7 @@ alter table &libds modify &var char(&len);
|
||||
@param [in] incol The column to be validated
|
||||
@param [in] rule The rule to apply. Current rules:
|
||||
@li ISINT - checks if the variable is an integer
|
||||
@li ISLIB - checks if the value is a valid libref (NOT whether it exists)
|
||||
@li ISNUM - checks if the variable is numeric
|
||||
@li LIBDS - matches LIBREF.DATASET format
|
||||
@li FORMAT - checks if the provided format is syntactically valid
|
||||
@@ -14606,6 +14607,19 @@ alter table &libds modify &var char(&len);
|
||||
else &outcol=1;
|
||||
drop &tempcol;
|
||||
%end;
|
||||
%else %if &rule=ISLIB %then %do;
|
||||
if _n_=1 then do;
|
||||
retain &tempcol;
|
||||
&tempcol=prxparse('/^[_a-z]\w{0,7}$/i');
|
||||
if missing(&tempcol) then do;
|
||||
putlog 'ERR' +(-1) "OR: Invalid expression for ISLIB";
|
||||
stop;
|
||||
end;
|
||||
drop &tempcol;
|
||||
end;
|
||||
if prxmatch(&tempcol, trim(&incol)) then &outcol=1;
|
||||
else &outcol=0;
|
||||
%end;
|
||||
%else %if &rule=LIBDS %then %do;
|
||||
/* match libref.dataset */
|
||||
if _n_=1 then do;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
@file
|
||||
@brief Used to validate variables in a dataset
|
||||
@brief Used to validate values in a data step
|
||||
@details Useful when sanitising inputs, to ensure that they arrive with a
|
||||
certain pattern.
|
||||
Usage:
|
||||
@@ -27,6 +27,7 @@
|
||||
@param [in] incol The column to be validated
|
||||
@param [in] rule The rule to apply. Current rules:
|
||||
@li ISINT - checks if the variable is an integer
|
||||
@li ISLIB - checks if the value is a valid libref (NOT whether it exists)
|
||||
@li ISNUM - checks if the variable is numeric
|
||||
@li LIBDS - matches LIBREF.DATASET format
|
||||
@li FORMAT - checks if the provided format is syntactically valid
|
||||
@@ -65,6 +66,19 @@
|
||||
else &outcol=1;
|
||||
drop &tempcol;
|
||||
%end;
|
||||
%else %if &rule=ISLIB %then %do;
|
||||
if _n_=1 then do;
|
||||
retain &tempcol;
|
||||
&tempcol=prxparse('/^[_a-z]\w{0,7}$/i');
|
||||
if missing(&tempcol) then do;
|
||||
putlog 'ERR' +(-1) "OR: Invalid expression for ISLIB";
|
||||
stop;
|
||||
end;
|
||||
drop &tempcol;
|
||||
end;
|
||||
if prxmatch(&tempcol, trim(&incol)) then &outcol=1;
|
||||
else &outcol=0;
|
||||
%end;
|
||||
%else %if &rule=LIBDS %then %do;
|
||||
/* match libref.dataset */
|
||||
if _n_=1 then do;
|
||||
|
||||
@@ -129,4 +129,30 @@ run;
|
||||
desc=Test4 - ISFORMAT,
|
||||
test=EQUALS 6,
|
||||
outds=work.test_results
|
||||
)
|
||||
|
||||
/**
|
||||
* Test 5 - ISLIB
|
||||
*/
|
||||
data test5;
|
||||
infile datalines4 dsd;
|
||||
input;
|
||||
inf=_infile_;
|
||||
%mp_validatecol(inf,ISLIB,islib)
|
||||
if islib=1;
|
||||
datalines4;
|
||||
some
|
||||
!lib
|
||||
%abort
|
||||
definite
|
||||
2fail
|
||||
nineletrs
|
||||
.failalso
|
||||
_valid
|
||||
;;;;
|
||||
run;
|
||||
%mp_assertdsobs(work.test5,
|
||||
desc=Testing ISLIB,
|
||||
test=EQUALS 3,
|
||||
outds=work.test_results
|
||||
)
|
||||
Reference in New Issue
Block a user