> 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 <[email protected]> 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 [email protected] with the message: INFO IBM-MAIN -- Mike A Schwab, Springfield IL USA Where do Forest Rangers go to get away from it all? ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
