LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous (more recent) messageNext (less recent) messagePrevious (more recent) in topicNext (less recent) in topicPrevious (more recent) by same authorNext (less recent) by same authorPrevious page (February 2005, week 2)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
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/


Back to: Top of message | Previous page | Main SAS-L page