diff --git a/all.sas b/all.sas
index abb49dd..38ef21b 100644
--- a/all.sas
+++ b/all.sas
@@ -442,6 +442,9 @@ options noquotelenmax;
@version 9.2
@author Allan Bowe
+
Related Macros
+ @li mf_getxengine.sas
+
**/
/** @cond */
@@ -1189,6 +1192,49 @@ Usage:
/* Return variable type */
&vtype
%mend;/**
+ @file
+ @brief Returns the engine type of a SAS fileref
+ @details Queries sashelp.vextfl to get the xengine value.
+ Usage:
+
+ filename feng temp;
+ %put %mf_getxengine(feng);
+
+ returns:
+ > TEMP
+
+ @param fref The fileref to check
+
+ @returns The XENGINE value in sashelp.vextfl or 0 if not found.
+
+ @version 9.2
+ @author Allan Bowe
+
+ Related Macros
+ @li mf_getengine.sas
+
+**/
+
+%macro mf_getxengine(fref
+)/*/STORE SOURCE*/;
+ %local dsid engnum rc engine;
+
+ %let dsid=%sysfunc(
+ open(sashelp.vextfl(where=(fileref="%upcase(&fref)")),i)
+ );
+ %if (&dsid ^= 0) %then %do;
+ %let engnum=%sysfunc(varnum(&dsid,XENGINE));
+ %let rc=%sysfunc(fetch(&dsid));
+ %let engine=%sysfunc(getvarc(&dsid,&engnum));
+ %* put &fref. ENGINE is &engine.;
+ %let rc= %sysfunc(close(&dsid));
+ %end;
+ %else %let engine=0;
+
+ &engine
+
+%mend;
+/**
@file mf_isblank.sas
@brief Checks whether a macro variable is empty (blank)
@details Simply performs: