× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Thought this bug/gotcha with the %LOOKUP BIF may be of interest to the list.

I have code that is dynamically allocating memory to an array in increments.


The array starts with 50 elements and then adds 10 elements at a time.
Theoretically the array should never get near 50 elements but this code has
been included to prevent any error occurring anyway... 

The array has been declared as having 32767 elements (i.e. 32767 is a 5,0
number)

The index however has been declared as 3,0 as the number of elements is
never likely to get very high.

If a %LOOKUP is issued using the index variable to limit the number of
places in the array searched, an MCH1210 error occurs. 

If the index is declared as 5,0 then the MCH1210 does not occur. If it is
declared as any size smaller than 5,0 then it does.

However, if a numeric literal with less than 5 digits is specified then
everything works fine...

I thought that passing variables by value into a BIF meant that the declared
length shouldn't be a factor? 

I'd be especially interested to hear the views of those in the Toronto lab
as to what is happening under the covers here... 

The following code can be used to re-create the problem:

D DynamicArr@     S               *                                        
D DynamicArr      S             10A   DIM(32767) BASED(DynamicArr@)        
                                                                           
D ArrayEntry      S             10A   INZ('ABCDEF')                        

D Idx             S              3  0                                      
                                                                           
 * Initial number of entries in the array                                  
D ArraySizeLimit  S              3  0 INZ(50)                              
                                                                           
C                   EVAL      DynamicArr@ =                                
C                                %ALLOC(%SIZE(DynamicArr) * ArraySizeLimit)

 * The following line causes MCH1210


C                   IF        %LOOKUP(ArrayEntry:DynamicArr:1:Idx) = 0     
 

C                   ENDIF                                                  
                                                                           
C                   EVAL      *INLR = *ON                                  
C                   RETURN       


Regards

Stu Bramley
Senior Technical Developer
Skandia Life
Southampton
UK                                          


If you are not the intended recipient, please notify the sender by return email 
and then delete the message from your computer.  The Skandia UK Group reserves 
the right to monitor e-mail communications through its networks.  

No contract may be concluded on behalf of the Skandia UK Group by email.

Skandia Life Assurance (Holdings) Limited  Skandia Life Assurance Company 
Limited  Skandia MultiFUNDS Limited

Registered Nos: 1606702, 1363932, 1680071, England
Registered Office : Skandia House, Portland Terrace, Southampton  SO14 7EJ, 
United Kingdom

Royal Skandia Life Assurance Limited  Registered No : 24916 Isle of Man
Registered Office : Skandia House, King Edward Road, Onchan, Isle of Man  IM99 
1NU, British Isles

Skandia Life Assurance Company Limited, Skandia MultiFUNDS Limited and Royal 
Skandia Life Assurance Limited are authorised by the FSA for UK investment 
business.

Internet: www.skandia.co.uk


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.