mirror of
https://github.com/sasjs/core.git
synced 2025-12-10 14:04:36 +00:00
56 lines
1.4 KiB
SAS
56 lines
1.4 KiB
SAS
/**
|
|
@file
|
|
@brief Returns the length of a variable
|
|
@details Uses varlen function to identify the length of a particular variable.
|
|
Usage:
|
|
|
|
data test;
|
|
format str $1. num datetime19.;
|
|
stop;
|
|
run;
|
|
%put %mf_getVarLen(test,str);
|
|
%put %mf_getVarLen(work.test,num);
|
|
%put %mf_getVarLen(test,renegade);
|
|
|
|
returns:
|
|
|
|
1
|
|
8
|
|
NOTE: Variable renegade does not exist in test
|
|
|
|
@param [in] libds Two part dataset (or view) reference.
|
|
@param [in] var Variable name for which a length should be returned
|
|
@returns outputs length
|
|
|
|
@author Allan Bowe
|
|
@version 9.2
|
|
|
|
**/
|
|
|
|
%macro mf_getVarLen(libds /* two level ds name */
|
|
, var /* variable name from which to return the length */
|
|
)/*/STORE SOURCE*/;
|
|
%local dsid vnum vlen rc;
|
|
/* Open dataset */
|
|
%let dsid = %sysfunc(open(&libds));
|
|
%if &dsid > 0 %then %do;
|
|
/* Get variable number */
|
|
%let vnum = %sysfunc(varnum(&dsid, &var));
|
|
/* Get variable format */
|
|
%if(&vnum > 0) %then %let vlen = %sysfunc(varlen(&dsid, &vnum));
|
|
%else %do;
|
|
%put NOTE: Variable &var does not exist in &libds;
|
|
%let vlen = %str( );
|
|
%end;
|
|
%end;
|
|
%else %do;
|
|
%put &sysmacroname: dataset &libds not opened! (rc=&dsid);
|
|
%put &sysmacroname: %sysfunc(sysmsg());
|
|
%return;
|
|
%end;
|
|
|
|
/* Close dataset */
|
|
%let rc = %sysfunc(close(&dsid));
|
|
/* Return variable format */
|
|
&vlen
|
|
%mend mf_getVarLen; |