Macros for SAS Application Developers
No Matches File Reference

Assigns and returns an unused fileref. More...

Go to the source code of this file.

Detailed Description

Using the native approach for assigning filerefs fails as some procedures (such as proc http) do not recognise the temporary names (starting with a hash), returning a message such as:

‍ERROR 22-322: Expecting a name.

This macro works by attempting a random fileref (with a prefix), seeing if it is already assigned, and if not - returning the fileref.

If your process can accept filerefs with the hash (#) prefix, then set prefix=0 to revert to the native approach - which is significantly faster when there are a lot of filerefs in a session.

Use as follows:

%let fileref1=%mf_getuniquefileref();
%let fileref2=%mf_getuniquefileref(prefix=0);
%put &fileref1 &fileref2;

which returns filerefs similar to:

‍_7432233 #LN00070

[in]prefix=(_) first part of fileref. Remember that filerefs can only 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.
[in]maxtries=(1000) the last part of the libref. Must be an integer.
[in]lrecl=(32767) Provide a default lrecl with which to initialise the generated fileref.
Allan Bowe

Definition in file