Date: Sat, 12 Feb 2005 20:10:14 -0500
Reply-To: "Richard A. DeVenezia" <radevenz@IX.NETCOM.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: "Richard A. DeVenezia" <radevenz@IX.NETCOM.COM>
Subject: Re: Limits (or, how to gracefully detect overflow in macro?)
m n wrote:
> --- Dennis Diskin <diskin@snet.net> wrote:
>
>> Matt,
>>
>> Take a look at the CONSTANT function.
>>
>> HTH,
>> dennis Diskin
>>
>>
>
> I wasn't familiar with that function, so thank you for
> the information; however, it does not appear relevant
> to macro--for, at least on my OS and SAS version (Win
> XP, SAS v8.00), %EVAL() overflows on integers > (2**31
> - 1). This far below the bound of about 2**53
> specified by constant() for 8 byte numerics. Is there
> any SYS* macro variable, option, or macro function
> that would specify the limits of %EVAL and %SYSEVALF
> (I don't want to hardcode 2**31 - 1 if I don't have
> to).
>
%put _all_;
AUTOMATIC SYSMAXLONG 2147483647
AUTOMATIC SYSSIZEOFLONG 4
%eval is long integer math.
%sysevalf is numeric math (double precision).
I don't know if numeric can go to quad precision in 64-bit systems.
--
Richard A. DeVenezia
http://www.devenezia.com/
|