I have a sas program that is dealing with sas datasets and oracle database tables and am attempting to write a few functions to change between the two. I also wrote an oracle_intnx for using the intnx function with an oracle date that changes it to sas date, calls intnx, then converts it back to an oracle date. So the problem is it's doing the conversions fine, but then when I test it the return string is getting truncated somewhere. Anyway my code: ---------------------------------------------------------------------------------------------------------------------------------------------------------- %let start_date='01-JAN-2014'; libname output "[path removed]"; proc fcmp outlib=output.funcs.funcs; function oracledate_to_sasdate(oracledate $); stringDate = substr(oracledate,2,2)||substr(oracledate,5,3)||substr(oracledate,9,4); return (input(stringDate,date9.)); endsub; function sasdate_to_oracledate(sasdate) $; put sasdate; test="'"||put(sasdate,date11.)||"'"; put test; return (test); *return("'"||put(sasdate,date11.)||"'"); endsub; function oracle_intnx(interval $,oracledate $,num) $; sas_date=oracledate_to_sasdate(oracledate); put sas_date; new_date=intnx(interval,sas_date,num); put new_date; toReturn = sasdate_to_oracledate(new_date); put toReturn; return (toReturn); *return(sasdate_to_oracledate(new_date)); endsub; quit; options cmplib=output.funcs; data _null; a=oracle_intnx("day","&start_date",20); put a; run; endsas; ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- put outputs: 19724 19744 19744 '21-JAN-2014' '21-JAN- '21-JAN- The first 4 make sense, the 4th is the put test in sasdate_to_oracledate and is exactly what I want. But when this is returned to oracle_intnx and immediately put it shows up truncated. Can someone explain why this is? Thanks.
... View more