×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




Hi All,
I'm trying to figure out how to pass an arrray from
RPGLE to a CLP (just pass
 thru) and to another RPGLE, but I'm stuck now. If the
pointer guru, Scott
 Klement, or Hans & Barbara can help it would be
great.

Here's the thing:
I have a wrapper CLP, where I declared this vars:
   Dcl  &ArrWhs      *Char     1         
   Dcl  &NbrWhs      *Dec     (3 0)   0  
   Dcl  &OkFlag      *Char     1         

It will call an RPGLE pgm and it will build an array
to be passed back. Here's
 the prototype:

 *Entry parms Prototype: - Array of Authorized
Divisio(
Divspwhchkr     PR                                    
               D         
                       2  0 dim(99) 
D                                3  
Divspwhchkr     PI                                    
             
D  p1_AuthWhs                    2  0 dim(99)
D  p1_NbrWhs                     3  

Then the CL will pass that array to be used for
another RPGLE program:
d ReleaseEm       pr                  EXTPGM(
'IVSPRELSER' )   
d                                2  0 dim(99)         
   
d                                3  0                 
   
d                                1                    
        
                                                      
        
d ReleaseEm       pi                                  
        
d  p1_whsArr                     2  0 dim(99) 
d  p1_numArr                     3  0 
d  p1_exitType                   1 

In this program I get the Address of the parameter and
try to move it to be used
 for the program:
d ptr_whsArr      s               *                   
        
d whsArr          s              2  0 dim(99)
based(ptr_whsArr)
d atWhsArr        s              3  0 dim(99)
inz(*hival)      
d xx              s              3  0 inz(0)          
        

c                   if        p1_numArr > 0           
   
c                   if        %addr(p1_whsArr) <>
*null   
c                   eval      ptr_whsArr =
%addr(p1_whsArr)

c                   for       xx = 1 by 1 to p1_numArr
 
c                   eval      atWhsArr(xx) =
whsArr(xx) 
c                   endfor                            
 
 
c                   endif   
c                   endif   

But, once I assign the Address of p1_whsArr parameter,
I got a corrupted array.
 Hence, I got a decimal data error. Can someone tell
me where I got it wrong? Do
 I really need to declare the variable in CL as big as
%ELEM * %LEN? 

Thanks!

Jean Reksodiputro


__________________________________
Do you Yahoo!?
Exclusive Video Premiere - Britney Spears
http://launch.yahoo.com/promos/britneyspears/

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-2026 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.