|Date: ||Thu, 12 Apr 2012 12:16:12 -0400|
|Reply-To: ||Tom Abernathy <tom.abernathy@GMAIL.COM>|
|Sender: ||"SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>|
|From: ||Tom Abernathy <tom.abernathy@GMAIL.COM>|
|Subject: ||Re: Using a string fcmp function in a %sysfunc call gives error|
I think I found it. Automatic macro variable SYSMAXLONG.
At least on Sun OS with 32 bit SAS 8.2 and 64 bit SAS 9.2 the values agree.
Here are the value for these two systems:
2147483647 = 2**31 -1
9007199254740992 = 2**53
The first seems to be based on 2's complement 32 bit numbers. The second is
based on SAS's use of IEEE floating point format that uses the rest of the
bits for the exponent.
On Thu, 12 Apr 2012 10:00:54 -0600, Fried Egg <friedegg2012@GMAIL.COM>
>Surround the %sysfunc with %trim or set it to a macro variable with %let
>and then put that. This issue, I believe is fixed in 9.3
>On Thu, Apr 12, 2012 at 9:25 AM, Sterling Paramore
>> I'm trying to use a string fcmp function in a macro, but I'm getting a
>> strange error. Any thoughts?
>> 15 proc fcmp outlib = work.wfunc.test;
>> 16 function sayyo() $ 8;
>> 17 return('yo');
>> 18 endsub;
>> 19 quit;
>> NOTE: Function sayyo saved to work.wfunc.test.
>> NOTE: PROCEDURE FCMP used (Total process time):
>> real time 0.02 seconds
>> cpu time 0.00 seconds
>> 21 %put %sysfunc(sayyo());
>> ERROR: The text expression length (65535) exceeds maximum length
>> (65534). The text expression has been truncated to 65534