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



Barbara,

I'm still missing something.  Maybe I'm not explaining it correctly.

In your example the data structure is being passed as a parameter.  What I was 
trying to do was define the data structure inside the subprocedure.  I have 
modified your example to try and better show what I mean.

Fpf1       if   e             disk                    

D subproc         pr                                  
 
c                   callp     subproc
C                   return                            

P subproc         b                                   
D subproc         pi                                  

D ds              ds                  likerec(rec1) 

c                   eval      fld1 = 'x'              
c                   eval      ds.fld1 = 'y'           
c                   read      rec1          ds      
c     ds.fld1       dsply                   fld1      

P subproc         e


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of Barbara Morris
Sent: Friday, August 27, 2004 10:36 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: Re: Subroutines vs Subprocedures was RE: Indicators


Rick.Chevalier@xxxxxxxxxxxxxxx wrote:
> 
> I seem to remember trying to use a data structure defined using LIKEREC in a 
> subprocedure and the compiler not accepting it.  IIRC I had to move it into 
> the global definitions for the program.  If that's true how does defining a 
> data structure with LIKEREC allow I/O without accessing global variables?  
> Maybe I'm not understanding the definition of global?
> 

Rick, here's an example (that compiles on V5R2) of using a
locally-defined LIKEREC DS in a subprocedure.

The first record in my file has 'a' in fld1.  The program displays
   DSPLY  a    x

Fpf1       if   e             disk                    
D subproc         pr                                  
D   parm                              likerec(rec1)   
D ds              ds                  likerec(rec1)   
c                   eval      fld1 = 'x'              
c                   eval      ds.fld1 = 'y'           
c                   callp     subproc (ds)            
c     ds.fld1       dsply                   fld1      
C                   return                            
P subproc         b                                   
D subproc         pi                                  
D   parm                              likerec(rec1)   
c                   read      rec1          parm      
P subproc         e

--



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.