mirror of
https://github.com/sasjs/core.git
synced 2025-12-10 22:14:35 +00:00
37 lines
981 B
SAS
37 lines
981 B
SAS
/**
|
|
@file
|
|
@brief Assigns and returns an unused fileref
|
|
@details
|
|
Use as follows:
|
|
|
|
%let fileref1=%mf_getuniquefileref();
|
|
%let fileref2=%mf_getuniquefileref();
|
|
%put &fileref1 &fileref2;
|
|
|
|
which returns:
|
|
|
|
> mcref0 mcref1
|
|
|
|
@param prefix= first part of fileref. Remember that filerefs can only be 8
|
|
characters, so a 7 letter prefix would mean that `maxtries` should be 10.
|
|
@param maxtries= the last part of the libref. Provide an integer value.
|
|
|
|
@version 9.2
|
|
@author Allan Bowe
|
|
**/
|
|
|
|
%macro mf_getuniquefileref(prefix=mcref,maxtries=1000);
|
|
%local x fname;
|
|
%let x=0;
|
|
%do x=0 %to &maxtries;
|
|
%if %sysfunc(fileref(&prefix&x)) > 0 %then %do;
|
|
%let fname=&prefix&x;
|
|
%let rc=%sysfunc(filename(fname,,temp));
|
|
%if &rc %then %put %sysfunc(sysmsg());
|
|
&prefix&x
|
|
%*put &sysmacroname: Fileref &prefix&x was assigned and returned;
|
|
%return;
|
|
%end;
|
|
%end;
|
|
%put unable to find available fileref in range &prefix.0-&maxtries;
|
|
%mend; |