Indeed, that was the issue, so thank you.

I still do not understand why the compiler requires that qualification in the 
nested subroutine.  It doesn't need it in the main (outermost) program, so why 
in the subprogram?  If I was the compiler writer I would use the "nearest" 
definition (i.e., the one within the nested program).

The mysteries of compilers.

Oh well, my issue is resolved, so that's a big thanks.

Peter

-----Original Message-----
From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of 
Mike Schwab
Sent: Friday, October 8, 2021 8:24 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 6.2 - use of identical data name in a nested COMMON 
subprogram generates a IGYPS0037-S compiler error

>  01 RECORD-NAME.
>       05  SUBSECTION-NAME.

>      MOVE SUBSECTION-NAME TO WS-SUBSECTION-NAME.

> 25779  IGYPS0037-S   "SUBSECTION-NAME" was not a uniquely defined name.  The 
> definition to be used could not be determined from the
>                       context.  The reference to the name was discarded.

You have multiple SUBSECTION-NAME variables.  You need to qualify by coding 
MOVE SUBSECTION-NAME OF RECORD-NAME TO WS-SUBSECTION-NAME.

Applies to all versions of COBOL.

On Sat, Oct 9, 2021 at 1:02 AM Farley, Peter x23353 
<0000031df298a9da-dmarc-requ...@listserv.ua.edu> wrote:
>
> This is an Enterprise COBOL V6.2 question.  I am not sure if this is a 
> compiler issue or a programmer misunderstanding issue.
>
> I have a COBOL subroutine which has multiple nested programs within it.  The 
> general structure is as follows (it's actually far more complicated with COPY 
> members and such, but this shows the basic issue).  Note carefully that the 
> INSIDE1 subroutine is declared COMMON because other nested subroutines (not 
> shown here) may also CALL it besides the CALL from the top-level program:
>
> ID DIVISION.
> PROGRAM-ID.  SUBMAIN.
> . . . . .
> WORKING-STORAGE SECTION.
>  01 RECORD-NAME.
>       05  SUBSECTION-NAME.
>             10  SUBSECTION-VAR PIC X.
> PROCEDURE DIVISION.
> . . . . .
>        CALL "INSIDE1" USING RECORD-NAME.
> . . . . .
>
> ID DIVISION.
> PROGRAM-ID. INSIDE1 COMMON.
> . . . . .
> WORKING-STORAGE SECTION.
>  01  WS-AREA.
>        05 WS-SUBSECTION-NAME PIC X.
> LINKAGE SECTION.
>  01 RECORD-NAME.
>       05  SUBSECTION-NAME.
>            10  SUBSECTION-VAR PIC X.
> . . . . .
> PROCEDURE DIVISION USING RECORD-NAME.
> . . . . .
>      MOVE SUBSECTION-NAME TO WS-SUBSECTION-NAME.
> . . . . .
>      EXIT PROGRAM.
> END-PROGRAM INSIDE1.
>
> END-PROGRAM SUBMAIN.
>
> The MOVE statement in the nested subroutine INSIDE1 gets this COBOL error:
>
> 25779  IGYPS0037-S   "SUBSECTION-NAME" was not a uniquely defined name.  The 
> definition to be used could not be determined from the
>                       context.  The reference to the name was discarded.
>
> The V6.2 Language Reference Manual on page 60 says this about using identical 
> names in nested programs:
>
> "Identical names
> When programs are directly or indirectly contained within other 
> programs, each program can use identical user-defined words to name resources.
> A program references the resources that program describes rather than 
> the same-named resources described in another program, even if the names are 
> different types of user-defined words."
>
> Is that language in the manual telling me that I may have a compiler bug 
> here, or am I misunderstanding the language in the manual and have to code 
> the names used in the nested subroutine differently (e.g., by using a unique 
> prefix for all the common data names or at least for the top-level name)?
>
> TIA for any assistance you can provide.
>
> Peter
--

This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.


----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to