1
0
mirror of https://github.com/sasjs/core.git synced 2026-07-23 15:35:29 +00:00

fix: allow large numerics in mp_retainedkey

This commit is contained in:
allan
2026-06-25 14:23:43 +01:00
parent f484d10913
commit 3d6b9d0da5
2 changed files with 49 additions and 5 deletions
+6 -5
View File
@@ -148,7 +148,8 @@
%mp_abort(iftrue=(&iserr=1),mac=mp_retainedkey,msg=%superq(msg))
proc sql noprint;
select sum(max(&retained_key),0) into: maxkey from &base_libds;
select sum(max(&retained_key),0) format=32. into: maxkey trimmed
from &base_libds;
/**
* get base table RK and bus field values for lookup
@@ -217,19 +218,19 @@ quit;
insert into &maxkeytable
set keytable="&base_libds"
,keycolumn="&retained_key"
,max_key=%eval(&maxkey+&newkey_cnt)
,max_key=%sysevalf(&maxkey+&newkey_cnt)
,processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt;
%end;
%else %do;
update &maxkeytable
set max_key=%eval(&maxkey+&newkey_cnt)
set max_key=%sysevalf(&maxkey+&newkey_cnt)
,processed_dttm="%sysfunc(datetime(),%mf_fmtdttm())"dt
where keytable="&base_libds";
%end;
%mp_lockanytable(UNLOCK
,lib=%scan(&maxkeytable,1,.)
,ds=%scan(&maxkeytable,2,.)
,ref=Updating maxkeyvalues with maxkey=%eval(&maxkey+&newkey_cnt)
,ref=Updating maxkeyvalues with maxkey=%sysevalf(&maxkey+&newkey_cnt)
,ctl_ds=&locktable
)
%end;
@@ -237,7 +238,7 @@ quit;
/* fill in the missing retained key values */
%let tempvar=%mf_getuniquename();
data &outds(drop=&tempvar);
retain &tempvar %eval(&maxkey+1);
retain &tempvar %sysevalf(&maxkey+1);
set &tempds2;
if &retained_key =. then &retained_key=&tempvar;
&tempvar=&tempvar+1;