53%macro mcf_getfmttype(wrap=NO
54 ,insert_cmplib=DEPRECATED
59%local i var cmpval found;
61%
if %mcf_init(mcf_getfmttype)=1 %then %
return;
63%
if &wrap=YES %then %
do;
64 proc fcmp outlib=&lib..&cat..&pkg;
67function mcf_getfmttype(fmtnm $) $8;
68 if substr(fmtnm,1,1)=
'$' then
return(
'CHAR');
72 fmt=scan(fmtnm,1,
'.');
74 substr(fmt,length(fmt),1) in (
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'0')
76 if length(fmt)=1 then fmt=
'W';
77 else fmt=substr(fmt,1,length(fmt)-1);
81 if cats(fmt) in (
'DATETIME',
'B8601DN',
'B8601DN',
'B8601DT',
'B8601DT'
82 ,
'B8601DZ',
'B8601DZ',
'DATEAMPM',
'DTDATE',
'DTMONYY',
'DTWKDATX',
'DTYEAR'
83 ,
'DTYYQC',
'E8601DN',
'E8601DN',
'E8601DT',
'E8601DT',
'E8601DZ',
'E8601DZ'
84 ,
'NLDATM') then return('DATETIME');
85 else if fmt in ('DATE','YYMMDD','B8601DA','B8601DA','DAY','DDMMYY'
86 ,'DDMMYYB','DDMMYYC','DDMMYYD','DDMMYYN','DDMMYYP','DDMMYYS','DDMMYYx'
87 ,'DOWNAME','E8601DA','E8601DA','JULDAY','JULIAN','MMDDYY','MMDDYYB'
88 ,'MMDDYYC','MMDDYYD','MMDDYYN','MMDDYYP','MMDDYYS','MMDDYYx','MMYY'
89 ,'MMYYC','MMYYD','MMYYN','MMYYP','MMYYS','MMYYx','MONNAME','MONTH'
90 ,'MONYY','PDJULG','PDJULI','QTR','QTRR','WEEKDATE','WEEKDATX','WEEKDAY'
91 ,'WEEKU','WEEKV','WEEKW','WORDDATE','WORDDATX','YEAR','YYMM','YYMMC'
92 ,'YYMMD','YYMMDDB','YYMMDDC','YYMMDDD','YYMMDDN','YYMMDDP','YYMMDDS'
93 ,'YYMMDDx','YYMMN','YYMMP','YYMMS','YYMMx','YYMON','YYQ','YYQC','YYQD'
94 ,'YYQN','YYQP','YYQR','YYQRC','YYQRD','YYQRN','YYQRP','YYQRS','YYQRx'
95 ,'YYQS','YYQx','YYQZ','NLDATE') then return('DATE');
96 else if fmt in ('TIME','B8601LZ','B8601LZ','B8601TM','B8601TM','B8601TZ'
97 ,'B8601TZ','E8601LZ','E8601LZ','E8601TM','E8601TM','E8601TZ','E8601TZ'
98 ,'HHMM','HOUR','MMSS','TIMEAMPM','TOD') then return('TIME');
103%if &wrap=YES %then %do;
108%let cmpval=%sysfunc(getoption(cmplib));
110%do i=1 %to %sysfunc(countw(&cmpval,%str( %(%))));
111 %let var=%scan(&cmpval,&i,%str( %(%)));
112 %if &var=&lib..&cat %then %let found=1;
114%if &found=0 %then %do;
115 options insert=(CMPLIB=(&lib..&cat));