Good day everyone, New EG user here. I am working with a legacy program that looks for lab errors. The numeric errors are assigned a number that represents a letter code. Error #14 has been changed at the lab into 14A and 14B, which results in log notes stating "Invalid numeric data, "14A", at line 115 column 78. How can I edit the code to prevent this? ****import parameter files***; %macro newdata (outfile, filename,param,param_g,param_error, param_a); data first; %let _EFIERR_ = 0; /* set the ERROR detection macro variable */ infile &filename delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=1 ; informat year best32. ; informat month best32. ; informat day best32. ; informat labid best32. ; informat ¶m_g $2. ; informat ¶m best32. ; informat ¶m_error best32. ; informat ¶m_a $2. ; *informat labsignoff $3. ; format year best12. ; format month best12. ; format day best12. ; format labid best12. ; format ¶m_g $2. ; format ¶m 7.3 ; format ¶m_error best12. ; format ¶m_a $2. ; *format labsignoff $3. ; input year month day labid ¶m_g $ ¶m ¶m_error ¶m_a $ ;*labsignoff $ ; if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */ run; proc sort; by labid year month day; data &outfile; set first; if ¶m_error = 0 then do; ¶m_A = "";end; if ¶m_error = 23 then do; ¶m_A = "QQ";end; if ¶m_error = 1 then do; ¶m_A = "A"; ¶m = .; end; if ¶m_error = 22 then do; ¶m_A = "JJ";end; if ¶m_error = 18 then do; ¶m_A = "RR";end; if ¶m_error = 6 then do; ¶m_A = "RR";end; if ¶m_error = 9 then do; ¶m_A = "V";¶m = .;end; if ¶m_error = '14A' then do; ¶m_A = "FF";end; if ¶m_error = '14B' then do; ¶m_A = "V"; end; *proc print; %mend; Thanks for considering this puzzle.
... View more