HomeContact
Macro To check if a variable exists in SAS dataset
July 22, 2020
1 min

Have you ever needed to know if a given variable exists in the SAS data set? Below is a macro that will check for the existence of a variable in a dataset and will return a value of 0 if the variable does not exist and the column number if the variable exists.

The macro has two required parameters and one optional parameter.

  • DATA parameter accepts 2-level SAS dataset name Example. SASHELP.CARS

  • VAR is the variable name. Example Model

  • INFO is for variable attributes. Example FMT

The %VAREXISTS macro uses Variable functions in a data step to check if a variable exists in SAS and returns the variable info. It will return the below attributes of the variable when appropriate parameters are passed in the INFO parameter. If no value is passed, it returns the column position of the variable by default.

  • Len - To return the length of the variable.

  • fmt - to return the Format of the variable

  • infmt - to return the informal of the variable.

  • label - to return the Label of the variable

  • type - To return the type of variable. (Character of Numeric).

Macro to check if a variable exists in a SAS dataset.

If a variable exists

%put "EXISTS": %varexist(sashelp.class,age)
  • Returns 3

If a variable does not exist

%put "EXISTS": %varexist(work.test,doesnotexist)
  • Returns 0

If a Dataset does not exist

%put "EXISTS": %varexist(doesnotexist,doesnotexist)
  • Returns 0

Variable attribute “usage”:

%put "LENGTH": %varexist(sashelp.class,age,len)
%put "FORMAT": %varexist(sashelp.class,age,fmt)
%put "INFORMAT": %varexist(sashelp.class,age,infmt)
%put "LABEL": %varexist(sashelp.class,age,label)
%put "TYPE": %varexist(sashelp.class,age,type)

The “code”:

options symbolgen mprint mlogic;
%macro varexist(data,var,info);
%local macro parmerr dsis rc varnum;
%let macro = `&sysmacroname;`
%let dsid = %sysfunc(open(&data));
%if (&dsid) %then %do;
%let varnum = %sysfunc(varnum(&dsid,&var));
%if (&varnum) %then %do;
%if (%length(&info)) %then %do;
%if (&info eq NUM) %then %do;
&varnum
%end;
%else %do;
%sysfunc(var&info(&dsid,&varnum))
%end;
%end;
%else %do;
&varnum
%end;
%end;
%else 0;
%let rc = %sysfunc(close(&dsid));
%end;
%else 0;
%mend;
/******* END OF FILE *******/
%put "EXISTS": %varexist(sashelp.class,age);
%put "VARNUM": %varexist(sashelp.class,age,num);
%put "LENGTH": %varexist(sashelp.class,age,len);
%put "FORMAT": %varexist(sashelp.air,date,fmt);
%put "INFORMAT": %varexist(sashelp.class,age,infmt);
%put "LABEL": %varexist(sashelp.class,age,label);
%put "TYPE": %varexist(sashelp.class,age,type);

SAS “Log”:

"EXISTS": 3
%put "VARNUM": %varexist(sashelp.class,age,num);
"VARNUM": 0
%put "LENGTH": %varexist(sashelp.class,age,len);
"LENGTH": 8
%put "FORMAT": %varexist(sashelp.air,date,fmt);
"FORMAT": MONYY.
%put "INFORMAT": %varexist(sashelp.class,age,infmt);
"INFORMAT":
%put "LABEL": %varexist(sashelp.class,age,label);
"LABEL":
%put "TYPE": %varexist(sashelp.class,age,type);
"TYPE": N```
[Download this program](https://github.com/subhroster/9to5sas_Codes/blob/11f1364e28bbe53a89e77efa88869fd31a4b0dfc/SAS%20programs/VarExists.sas)
export const _frontmatter = {"title":"Macro To check if a variable exists in SAS dataset","slug":"variable-exists-sas","date":"2020-07-22T10:05:52","modified":"2022-10-11T10:52:08","excerpt":"Have you ever needed to know if a given variable exists in the SAS data set? Below is a macro that will check for the existence of a variable in a dataset and will return a value of 0 if the variable does not exist and the column number if the variable exists. The macro [...]","author":"Subhro","authorSlug":"subhroster","categories":["SAS PROGRAMS"],"tags":[],"wordpressId":6473,"wordpressLink":"https://www.9to5sas.com/variable-exists-sas/","featuredImage":null,"type":"post"}

Share


© 2025 9to5sas
AboutContactPrivacyTerms