Re: % Loop limit expression too large for loop variable type. [message #24880] |
Mon, 30 April 2001 10:41 |
Paul van Delst
Messages: 364 Registered: March 1997
|
Senior Member |
|
|
hua Guo wrote:
>
> Dear all,
> I got this error message when I tried to run a program:
>
> % Loop limit expression too large for loop variable type.
> <LONG ( 54695)>.
>
> What is wrong here? I am a beginner here. Thanks for any help.
>
> Hua
If you have
FOR i = 0, really_big_number - 1 DO BEGIN
change it to
FOR i = 0L, really_big_number - 1 DO BEGIN
--
Paul van Delst A little learning is a dangerous thing;
CIMSS @ NOAA/NCEP Drink deep, or taste not the Pierian spring;
Ph: (301)763-8000 x7274 There shallow draughts intoxicate the brain,
Fax:(301)763-8545 And drinking largely sobers us again.
paul.vandelst@noaa.gov Alexander Pope.
|
|
|
Re: % Loop limit expression too large for loop variable type. [message #24882 is a reply to message #24880] |
Mon, 30 April 2001 09:58  |
Craig Markwardt
Messages: 1869 Registered: November 1996
|
Senior Member |
|
|
"hua Guo" <gh75@usa.net> writes:
> Dear all,
> I got this error message when I tried to run a program:
>
> % Loop limit expression too large for loop variable type.
> <LONG ( 54695)>.
>
> What is wrong here? I am a beginner here. Thanks for any help.
The default type for integers in IDL is a "short" or 16-bit integer,
which can only go from -32768 to 32767. The quick fix is to put an
"L" at the end of your numeric constants to promote them to "long"
32-bit integers.
for i = 0L, NMAX-1 do begin ...
Note the "0L" instead of "0".
Craig
P.S. This is one of the secret banes of IDL programming. You have
the freedom to use any IDL type at any time. The problem is that any
IDL type can appear at any time...
--
------------------------------------------------------------ --------------
Craig B. Markwardt, Ph.D. EMAIL: craigmnet@cow.physics.wisc.edu
Astrophysics, IDL, Finance, Derivatives | Remove "net" for better response
------------------------------------------------------------ --------------
|
|
|
Re: % Loop limit expression too large for loop variable type. [message #24885 is a reply to message #24880] |
Mon, 30 April 2001 10:00  |
davidf
Messages: 2866 Registered: September 1996
|
Senior Member |
|
|
hua Guo (gh75@usa.net) writes:
> I got this error message when I tried to run a program:
>
> % Loop limit expression too large for loop variable type.
> <LONG ( 54695)>.
>
> What is wrong here? I am a beginner here.
Normally, any integer in IDL is a short (two byte)
integer, including integers in loop expressions.
You need your loop variables to be LONG (four byte)
integers. You can set this up in one of two different ways.
The most common way is to force the loop expression
to be a long integer:
FOR j=0L, n DO Whatever
The second is to make ALL integers in your program
be long integers. You do this by putting a COMPILE_OPT
statement in your program module:
PRO JUNK
Compile_Opt defint32
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting
Phone: 970-221-0438 E-Mail: davidf@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155
|
|
|