Desktop productivity for business analysts and programmers

Variable conversion

Posts: 36

Variable conversion



I was trying to convert variables (MP_LASTNAME and MP_FIRSTNAME) to character variables in these statements? How would I go about this? I get an error that these variables are numeric and wasnt sure how besides using a put statements would do this for me.


from outlib.MCP_QUAL as a
          left join refdata.xwalk_careone_crm as b
           on UPCASE(COMPRESS(strip(a.PtFirst))) = UPCASE(COMPRESS(strip(b.MP_FIRSTNAME)))
               and UPCASE(COMPRESS(strip(a.PtLast))) = UPCASE(COMPRESS(strip(b.MP_LASTNAME)))


Thank you



Trusted Advisor
Posts: 1,163

Re: Variable conversion

You would need to use the format and put function to convert the MP_FIRSTNAME and MP_LASTNAME to character. an example would be as below
UPCASE(COMPRESS(strip(a.PtFirst))) = UPCASE(COMPRESS(strip(put(b.MP_FIRSTNAME,fmt.))))
and UPCASE(COMPRESS(strip(a.PtLast))) = UPCASE(COMPRESS(strip(put(b.MP_LASTNAME,fmt.))))
Occasional Contributor
Posts: 19

Re: Variable conversion

Posted in reply to Jagadishkatam

I am trying this but its not working still giving me an error (put(a.PtFirst,format $15.))))


MPRINT(STEP2):   create table ALL_NPART as select distinct a.* ,b.MP_FIRSTNAME as _Fname format $15. ,b.MP_LASTNAME as _Lname
format $15. ,b.indv_id ,b.MP_MANAGEDPERSONID ,b.MP_BIRTHDATE as _DOB ,b.MP_zip as _zip from outlib.MCP_QUAL as a left join
refdata.xwalk_careone_crm as b on UPCASE(COMPRESS(strip(put(a.PtFirst,format $15.)))) = UPCASE(COMPRESS(strip(b.MP_FIRSTNAME))) and
UPCASE(COMPRESS(strip(put(a.PtLast,format $15.)))) = UPCASE(COMPRESS(strip(b.MP_LASTNAME))) ;
ERROR 22-322: Syntax error, expecting one of the following: a format name, ?. 

Posts: 1,334

Re: Variable conversion

You're close. You don't use the word "format" when using a format. Also, if you're converting a numeric variable to character, don't start the format name with a "$".


Here's an example of what you're trying to do:


proc sql;

create table TestTable as

select put(a.Age, 15.) as CharAge

from sashelp.class as a;




Super User
Posts: 6,933

Re: Variable conversion

Why can't you do this without conversion:


on a.PtFirst = b.MP_FIRSTNAME

and a.PtLast = b.MP_LASTNAME;


Are you certain that the variables were created properly in the first place?  It seems unusual for variables holding first and last name to be numeric.

Ask a Question
Discussion stats
  • 4 replies
  • 5 in conversation