From c83ea705a2bd7d74191187bb8d187d6d8a6a1841 Mon Sep 17 00:00:00 2001 From: munja Date: Wed, 27 Apr 2022 23:04:55 +0100 Subject: [PATCH] fix: ensuring sufficient lrecl in mf_getuniquefilref --- base/mf_getuniquefileref.sas | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/base/mf_getuniquefileref.sas b/base/mf_getuniquefileref.sas index 8c11725..0c3447f 100644 --- a/base/mf_getuniquefileref.sas +++ b/base/mf_getuniquefileref.sas @@ -28,15 +28,17 @@ be 8 characters, so a 7 letter prefix would mean `maxtries` should be 10. if using zero (0) as the prefix, a native assignment is used. @param [in] maxtries= (1000) the last part of the libref. Must be an integer. + @param [in] lrecl= (32767) Provide a default lrecl with which to initialise + the generated fileref. @version 9.2 @author Allan Bowe **/ -%macro mf_getuniquefileref(prefix=_,maxtries=1000); +%macro mf_getuniquefileref(prefix=_,maxtries=1000,lrecl=32767); %local rc fname; %if &prefix=0 %then %do; - %let rc=%sysfunc(filename(fname,,temp)); + %let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl)); %if &rc %then %put %sysfunc(sysmsg()); &fname %end; @@ -47,7 +49,7 @@ %do x=0 %to &maxtries; %let fname=&prefix%substr(%sysfunc(ranuni(0)),3,&len); %if %sysfunc(fileref(&fname)) > 0 %then %do; - %let rc=%sysfunc(filename(fname,,temp)); + %let rc=%sysfunc(filename(fname,,temp,lrecl=&lrecl)); %if &rc %then %put %sysfunc(sysmsg()); &fname %return;