I have Excel workbooks delivered to me that I must combine and manipulate. I wanted to account for instances where the sender formats dates (specifically variable F11) in either text or number formats. To this end, I am using a macro that produces a T/F response when evaluating the appropriate variable. I have written a conditional statement that I hoped to say: if it is a number then use put statement -- if it is text, copy it over in its current form. To test the program, I used a field I knew to be text. When I run the program, an error appears in the log but the program runs seemingly correctly. The error reads: NOTE 484-185: Format $MMDDYY was not found or could not be loaded. If I test the program with a number variable, it runs without errors. Why am I receiving an error message related to a condition that is untrue? It is my expectation that SAS would not process the apodosis of condition when the protasis is untrue. Thanks for the explanation in advance. %macro isnum(str); verify(trim(left(&str)),'0123456789')=0 or /*number only*/ verify(trim(left(&str)),'0123456789.')=0 and not indexc(substr(&str,indexc(&str,'.')+1), '.') or /*allow only one '.'*/ verify(trim(left(&str)),'0123456789.+-')=0 and not indexc(substr(&str,indexc(&str,'.')+1), '.') and (indexc(&str,'+-')=1 and not indexc(substr(&str,2),'+-') /*allow only one leading '+' or '-'*/ and indexc(&str,'0123456789.') > 1 ) or /* '+-' must followed by number*/ compress(&str)='' /*'', ' ', or multiple ' ' is numeric*/ %mend; data nrcinput; set nrc.'Sheet1$'n; if F1 = '' or F1 = 'FName' then delete; if %isnum(F11) then dob=put(F11,mmddyy10.); else dob=F11; run;
... View more