Page 1 of 1

Error while Compiling calling program

PostPosted: Thu Nov 14, 2013 9:28 am
by mohbaig
Hi, i have a program COBOL1 which is calling COBOL2 and it is calling COBOL3. I want to statically link these programs. getting error while compiling.
IEW2456E 9207 SYMBOL COBOL3 UNRESOLVED. MEMBER COULD NOT BE INCLUDED FROM THE DESIGNATED CALL LIBRARY.
My jcl:
//CL1 EXEC IGYWCL
//COBOL.SYSIN DD DSN=MATE04.COBOL.SRCLIB(COBOL3),DISP=SHR
//COBOL.SYSLIB DD DSN=MATE04.COPYLIB,DISP=SHR
//LKED.SYSLMOD DD DSN=MATE04.LOADLIB(COBOL3),DISP=OLD
//SYSPRINT DD SYSOUT=*
//CL2 EXEC IGYWCL
//COBOL.SYSIN DD DSN=MATE04.COBOL.SRCLIB(COBOL2),DISP=SHR
//COBOL.SYSLIB DD DSN=MATE04.COPYLIB,DISP=SHR
//LKED.SYSLIN DD DSN=MATE04.LOADLIB,DISP=SHR
//LKED.SYSLMOD DD DSN=MATE04.LOADLIB(COBOL2),DISP=OLD
//SYSPRINT DD SYSOUT=*
//
//CL3 EXEC IGYWCL
//COBOL.SYSIN DD DSN=MATE04.COBOL.SRCLIB(COBOL1),DISP=SHR
//COBOL.SYSLIB DD DSN=MATE04.COPYLIB,DISP=SHR
//LKED.SYSLIN DD DSN=MATE04.LOADLIB,DISP=SHR
//LKED.SYSLMOD DD DSN=MATE04.LOADLIB(COBOL1),DISP=OLD
//SYSPRINT DD SYSOUT=*

Re: Error while Compiling calling program

PostPosted: Thu Nov 14, 2013 1:05 pm
by BillyBoyo
It failed in the Linkage Editor/Binder (IEW message, not IGY).

You only need to run one Linkedit. You only need to linkedit the first time after all three are successfully compiled and are on an object library, Thereafter, you linkedit as logically the last thing before attempting to run.

If you do an internet search for IBM LookAt and then paste in the message you received, you'll get the full message description. If you can't get there with that, we'll need to see the expanded JCL, not the cards which execute the PROC.

Re: Error while Compiling calling program

PostPosted: Thu Nov 14, 2013 2:35 pm
by NicC
Your CL3 step will not execute as it comes after the end-of-job "marker" (//)

Re: Error while Compiling calling program

PostPosted: Fri Nov 15, 2013 12:07 am
by mohbaig
this job ran succesful with maxcc=0 but when i executed the program COBOL1 its only showing the display data from COBOL3. i have displays in COBOL1 and COBOL2 before the call.

//MATE04D JOB MSGLEVEL=(1,1),NOTIFY=&SYSUID
//CL1 EXEC IGYWCL
//COBOL.SYSIN DD DSN=MATE04.COBOL.SRCLIB(COBOL3),DISP=SHR
//COBOL.SYSLIB DD DSN=MATE04.COPYLIB,DISP=SHR
//LKED.SYSLMOD DD DSN=MATE04.LOADLIB(COBOL3),DISP=OLD
//SYSPRINT DD SYSOUT=*
//CL2 EXEC IGYWCL
//STEPLIB DD DSN=MATE04.LOADLIB,DISP=SHR
//COBOL.SYSIN DD DSN=MATE04.COBOL.SRCLIB(COBOL2),DISP=SHR
//COBOL.SYSLIB DD DSN=MATE04.COPYLIB,DISP=SHR
//LKED.SYSLIN DD DSN=MATE04.LOADLIB(COBOL3),DISP=SHR
//LKED.SYSLMOD DD DSN=MATE04.LOADLIB(COBOL2),DISP=OLD
//SYSPRINT DD SYSOUT=*
//CL3 EXEC IGYWCL
//STEPLIB DD DSN=MATE04.LOADLIB,DISP=SHR
//COBOL.SYSIN DD DSN=MATE04.COBOL.SRCLIB(COBOL1),DISP=SHR
//COBOL.SYSLIB DD DSN=MATE04.COPYLIB,DISP=SHR
//LKED.SYSLIN DD DSN=MATE04.LOADLIB(COBOL2),DISP=SHR
//LKED.SYSLMOD DD DSN=MATE04.LOADLIB(COBOL1),DISP=OLD
//SYSPRINT DD SYSOUT=*




1 //MATE04D JOB MSGLEVEL=(1,1),NOTIFY=&SYSUID
//*
//* COMPILE A COBOL PROGRAM
//*
//*
IEFC653I SUBSTITUTION JCL - MSGLEVEL=(1,1),NOTIFY=MATE04
2 //CL1 EXEC IGYWCL
3 XXIGYWCL PROC LNGPRFX='IGY410',SYSLBLK=3200,
XX LIBPRFX='CEE',
XX PGMLIB='&&GOSET',GOPGM=GO
XX*
XX*******************************************************************
XX*
XX* Enterprise COBOL for z/OS
XX* Version 4 Release 1 Modification 0
XX*
XX* LICENSED MATERIALS - PROPERTY OF IBM.
XX*
XX* 5655-S71 © COPYRIGHT IBM CORP. 1991, 2007
XX* ALL RIGHTS RESERVED
XX*
XX* US GOVERNMENT USERS RESTRICTED RIGHTS - USE,
XX* DUPLICATION OR DISCLOSURE RESTRICTED BY GSA
XX* ADP SCHEDULE CONTRACT WITH IBM CORP.
XX*
XX*******************************************************************
XX*
XX* COMPILE AND LINK EDIT A COBOL PROGRAM
XX*
XX* PARAMETER DEFAULT VALUE USAGE
XX* LNGPRFX IGY.V4R1M0 PREFIX FOR LANGUAGE DATA SET NAMES
XX* SYSLBLK 3200 BLOCKSIZE FOR OBJECT DATA SET
XX* LIBPRFX CEE PREFIX FOR LIBRARY DATA SET NAMES
XX* PGMLIB &&GOSET DATA SET NAME FOR LOAD MODULE
XX* GOPGM GO MEMBER NAME FOR LOAD MODULE
XX*
XX* CALLER MUST SUPPLY //COBOL.SYSIN DD ...
XX*
XX* CALLER MUST ALSO SUPPLY //COBOL.SYSLIB DD ... for COPY statement
XX*
4 XXCOBOL EXEC PGM=IGYCRCTL,REGION=0M,PARM=('LIB')
5 XXSTEPLIB DD DSNAME=&LNGPRFX..SIGYCOMP,
XX DISP=SHR
IEFC653I SUBSTITUTION JCL - DSNAME=IGY410.SIGYCOMP,DISP=SHR
6 XXSYSPRINT DD SYSOUT=*
7 XXSYSLIN DD DSNAME=&&LOADSET,UNIT=SYSALLDA,
XX DISP=(MOD,PASS),SPACE=(TRK,(3,3)),
XX DCB=(BLKSIZE=&SYSLBLK)
IEFC653I SUBSTITUTION JCL - DSNAME=&&LOADSET,UNIT=SYSALLDA,DISP=(MOD,
DCB=(BLKSIZE=3200)
8 XXSYSUT1 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
9 XXSYSUT2 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
10 XXSYSUT3 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
11 XXSYSUT4 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
12 XXSYSUT5 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
13 XXSYSUT6 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
14 XXSYSUT7 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
15 //COBOL.SYSIN DD DSN=MATE04.COBOL.SRCLIB(COBOL3),DISP=SHR
16 //COBOL.SYSLIB DD DSN=MATE04.COPYLIB,DISP=SHR
17 XXLKED EXEC PGM=HEWL,COND=(8,LT,COBOL),REGION=0M
18 XXSYSLIB DD DSNAME=&LIBPRFX..SCEELKED,
XX DISP=SHR
IEFC653I SUBSTITUTION JCL - DSNAME=CEE.SCEELKED,DISP=SHR
19 //SYSPRINT DD SYSOUT=*
X/SYSPRINT DD SYSOUT=*
20 XXSYSLIN DD DSNAME=&&LOADSET,DISP=(OLD,DELETE)
21 XX DD DDNAME=SYSIN
22 //LKED.SYSLMOD DD DSN=MATE04.LOADLIB(COBOL3),DISP=OLD
X/SYSLMOD DD DSNAME=&PGMLIB(&GOPGM),
X/ SPACE=(TRK,(10,10,1)),
X/ UNIT=SYSALLDA,DISP=(MOD,PASS)
IEFC653I SUBSTITUTION JCL - DSNAME=&&GOSET(GO),SPACE=(TRK,(10,10,1)),
23 XXSYSUT1 DD UNIT=SYSALLDA,SPACE=(TRK,(10,10))
24 //CL2 EXEC IGYWCL
25 XXIGYWCL PROC LNGPRFX='IGY410',SYSLBLK=3200,
XX LIBPRFX='CEE',
XX PGMLIB='&&GOSET',GOPGM=GO
XX*
XX*******************************************************************
XX*
XX* Enterprise COBOL for z/OS
XX* Version 4 Release 1 Modification 0
XX*
XX* LICENSED MATERIALS - PROPERTY OF IBM.
XX*
XX* 5655-S71 © COPYRIGHT IBM CORP. 1991, 2007
XX* ALL RIGHTS RESERVED
XX*
XX* US GOVERNMENT USERS RESTRICTED RIGHTS - USE,
XX* DUPLICATION OR DISCLOSURE RESTRICTED BY GSA
XX* ADP SCHEDULE CONTRACT WITH IBM CORP.
XX*
XX*******************************************************************
XX*
XX* COMPILE AND LINK EDIT A COBOL PROGRAM
XX*
XX* PARAMETER DEFAULT VALUE USAGE
XX* LNGPRFX IGY.V4R1M0 PREFIX FOR LANGUAGE DATA SET NAMES
XX* SYSLBLK 3200 BLOCKSIZE FOR OBJECT DATA SET
XX* LIBPRFX CEE PREFIX FOR LIBRARY DATA SET NAMES
XX* PGMLIB &&GOSET DATA SET NAME FOR LOAD MODULE
XX* GOPGM GO MEMBER NAME FOR LOAD MODULE
XX*
XX* CALLER MUST SUPPLY //COBOL.SYSIN DD ...
XX*
XX* CALLER MUST ALSO SUPPLY //COBOL.SYSLIB DD ... for COPY statement
XX*
26 XXCOBOL EXEC PGM=IGYCRCTL,REGION=0M,PARM=('LIB')
27 //STEPLIB DD DSN=MATE04.LOADLIB,DISP=SHR
X/STEPLIB DD DSNAME=&LNGPRFX..SIGYCOMP,
X/ DISP=SHR
IEFC653I SUBSTITUTION JCL - DSNAME=IGY410.SIGYCOMP,DISP=SHR
28 XXSYSPRINT DD SYSOUT=*
29 XXSYSLIN DD DSNAME=&&LOADSET,UNIT=SYSALLDA,
XX DISP=(MOD,PASS),SPACE=(TRK,(3,3)),
XX DCB=(BLKSIZE=&SYSLBLK)
IEFC653I SUBSTITUTION JCL - DSNAME=&&LOADSET,UNIT=SYSALLDA,DISP=(MOD,
DCB=(BLKSIZE=3200)
30 XXSYSUT1 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
31 XXSYSUT2 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
32 XXSYSUT3 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
33 XXSYSUT4 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
34 XXSYSUT5 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
35 XXSYSUT6 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
36 XXSYSUT7 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
37 //COBOL.SYSIN DD DSN=MATE04.COBOL.SRCLIB(COBOL2),DISP=SHR
38 //COBOL.SYSLIB DD DSN=MATE04.COPYLIB,DISP=SHR
39 XXLKED EXEC PGM=HEWL,COND=(8,LT,COBOL),REGION=0M
40 XXSYSLIB DD DSNAME=&LIBPRFX..SCEELKED,
XX DISP=SHR
IEFC653I SUBSTITUTION JCL - DSNAME=CEE.SCEELKED,DISP=SHR
41 //SYSPRINT DD SYSOUT=*
X/SYSPRINT DD SYSOUT=*
42 //LKED.SYSLIN DD DSN=MATE04.LOADLIB(COBOL3),DISP=SHR
X/SYSLIN DD DSNAME=&&LOADSET,DISP=(OLD,DELETE)
43 XX DD DDNAME=SYSIN
44 //LKED.SYSLMOD DD DSN=MATE04.LOADLIB(COBOL2),DISP=OLD
X/SYSLMOD DD DSNAME=&PGMLIB(&GOPGM),
X/ SPACE=(TRK,(10,10,1)),
X/ UNIT=SYSALLDA,DISP=(MOD,PASS)
IEFC653I SUBSTITUTION JCL - DSNAME=&&GOSET(GO),SPACE=(TRK,(10,10,1)),
45 XXSYSUT1 DD UNIT=SYSALLDA,SPACE=(TRK,(10,10))
46 //CL3 EXEC IGYWCL
47 XXIGYWCL PROC LNGPRFX='IGY410',SYSLBLK=3200,
XX LIBPRFX='CEE',
XX PGMLIB='&&GOSET',GOPGM=GO
XX*
XX*******************************************************************
XX*
XX* Enterprise COBOL for z/OS
XX* Version 4 Release 1 Modification 0
XX*
XX* LICENSED MATERIALS - PROPERTY OF IBM.
XX*
XX* 5655-S71 © COPYRIGHT IBM CORP. 1991, 2007
XX* ALL RIGHTS RESERVED
XX*
XX* US GOVERNMENT USERS RESTRICTED RIGHTS - USE,
XX* DUPLICATION OR DISCLOSURE RESTRICTED BY GSA
XX* ADP SCHEDULE CONTRACT WITH IBM CORP.
XX*
XX*******************************************************************
XX*
XX* COMPILE AND LINK EDIT A COBOL PROGRAM
XX*
XX* PARAMETER DEFAULT VALUE USAGE
XX* LNGPRFX IGY.V4R1M0 PREFIX FOR LANGUAGE DATA SET NAMES
XX* SYSLBLK 3200 BLOCKSIZE FOR OBJECT DATA SET
XX* LIBPRFX CEE PREFIX FOR LIBRARY DATA SET NAMES
XX* PGMLIB &&GOSET DATA SET NAME FOR LOAD MODULE
XX* GOPGM GO MEMBER NAME FOR LOAD MODULE
XX*
XX* CALLER MUST SUPPLY //COBOL.SYSIN DD ...
XX*
XX* CALLER MUST ALSO SUPPLY //COBOL.SYSLIB DD ... for COPY statement
XX*
48 XXCOBOL EXEC PGM=IGYCRCTL,REGION=0M,PARM=('LIB')
49 //STEPLIB DD DSN=MATE04.LOADLIB,DISP=SHR
X/STEPLIB DD DSNAME=&LNGPRFX..SIGYCOMP,
X/ DISP=SHR
IEFC653I SUBSTITUTION JCL - DSNAME=IGY410.SIGYCOMP,DISP=SHR
50 XXSYSPRINT DD SYSOUT=*
51 XXSYSLIN DD DSNAME=&&LOADSET,UNIT=SYSALLDA,
XX DISP=(MOD,PASS),SPACE=(TRK,(3,3)),
XX DCB=(BLKSIZE=&SYSLBLK)
IEFC653I SUBSTITUTION JCL - DSNAME=&&LOADSET,UNIT=SYSALLDA,DISP=(MOD,
DCB=(BLKSIZE=3200)
52 XXSYSUT1 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
53 XXSYSUT2 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
54 XXSYSUT3 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
55 XXSYSUT4 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
56 XXSYSUT5 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
57 XXSYSUT6 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
58 XXSYSUT7 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
59 //COBOL.SYSIN DD DSN=MATE04.COBOL.SRCLIB(COBOL1),DISP=SHR
60 //COBOL.SYSLIB DD DSN=MATE04.COPYLIB,DISP=SHR
61 XXLKED EXEC PGM=HEWL,COND=(8,LT,COBOL),REGION=0M
62 XXSYSLIB DD DSNAME=&LIBPRFX..SCEELKED,
XX DISP=SHR
IEFC653I SUBSTITUTION JCL - DSNAME=CEE.SCEELKED,DISP=SHR
63 //SYSPRINT DD SYSOUT=*
X/SYSPRINT DD SYSOUT=*
64 //LKED.SYSLIN DD DSN=MATE04.LOADLIB(COBOL2),DISP=SHR
X/SYSLIN DD DSNAME=&&LOADSET,DISP=(OLD,DELETE)
65 XX DD DDNAME=SYSIN
66 //LKED.SYSLMOD DD DSN=MATE04.LOADLIB(COBOL1),DISP=OLD
X/SYSLMOD DD DSNAME=&PGMLIB(&GOPGM),
X/ SPACE=(TRK,(10,10,1)),
X/ UNIT=SYSALLDA,DISP=(MOD,PASS)
IEFC653I SUBSTITUTION JCL - DSNAME=&&GOSET(GO),SPACE=(TRK,(10,10,1)),
67 XXSYSUT1 DD UNIT=SYSALLDA,SPACE=(TRK,(10,10))

Re: Error while Compiling calling program

PostPosted: Fri Nov 15, 2013 1:05 am
by Robert Sample
//MATE04D JOB MSGLEVEL=(1,1),NOTIFY=&SYSUID
//CL1 EXEC IGYWCL
//COBOL.SYSIN DD DSN=MATE04.COBOL.SRCLIB(COBOL3),DISP=SHR
//COBOL.SYSLIB DD DSN=MATE04.COPYLIB,DISP=SHR
//LKED.SYSLMOD DD DSN=MATE04.LOADLIB(COBOL3),DISP=OLD
//SYSPRINT DD SYSOUT=*
//CL2 EXEC IGYWCL
//STEPLIB DD DSN=MATE04.LOADLIB,DISP=SHR
//COBOL.SYSIN DD DSN=MATE04.COBOL.SRCLIB(COBOL2),DISP=SHR
//COBOL.SYSLIB DD DSN=MATE04.COPYLIB,DISP=SHR
//LKED.SYSLIN DD DSN=MATE04.LOADLIB(COBOL3),DISP=SHR
//LKED.SYSLMOD DD DSN=MATE04.LOADLIB(COBOL2),DISP=OLD
//SYSPRINT DD SYSOUT=*
//CL3 EXEC IGYWCL
//STEPLIB DD DSN=MATE04.LOADLIB,DISP=SHR
//COBOL.SYSIN DD DSN=MATE04.COBOL.SRCLIB(COBOL1),DISP=SHR
//COBOL.SYSLIB DD DSN=MATE04.COPYLIB,DISP=SHR
//LKED.SYSLIN DD DSN=MATE04.LOADLIB(COBOL2),DISP=SHR
//LKED.SYSLMOD DD DSN=MATE04.LOADLIB(COBOL1),DISP=OLD
//SYSPRINT DD SYSOUT=*
You compile COBOL3 successfully. You then compile COBOL2, but your input to the linkage editor is the COBOL3 compiler output, so you now have a load module for COBOL3 that is COBOL3 and a load module for COBOL2 that is COBOL3. You repeat the same error with COBOL1 -- so you wind up with three load modules, ALL of which are nothing but COBOL3.

If you are wanting to statically link them together, compile COBOL3, compile COBOL2 (taking out the //LKED.SYSLIN DD statement), then compile COBOL1 (taking out the //LKED.SYSLIN DD statement) with added statements:
//LKED.SYSIN DD *
  INCLUDE SYSLMOD(COBOL3)
  INCLUDE SYSLMOD(COBOL2)
  ENTRY COBOL1
  NAME COBOL1(R)
/*

Re: Error while Compiling calling program

PostPosted: Fri Nov 15, 2013 9:22 am
by mohbaig
Thank u so much Robert,you made my day.Now they are statically linked and displays are showing up. :) :) :)

Re: Error while Compiling calling program

PostPosted: Fri Nov 15, 2013 9:52 am
by Robert Sample
Glad to hear it is working.

Re: Error while Compiling calling program

PostPosted: Wed May 29, 2019 5:25 pm
by Dietmar
Robert Sample wrote:
//MATE04D JOB MSGLEVEL=(1,1),NOTIFY=&SYSUID
//CL1 EXEC IGYWCL

...

//SYSPRINT DD SYSOUT=*
 
You compile COBOL3 successfully. You then compile COBOL2, but your input to the linkage editor is the COBOL3 compiler output, so you now have a load module for COBOL3 that is COBOL3 and a load module for COBOL2 that is COBOL3. You repeat the same error with COBOL1 -- so you wind up with three load modules, ALL of which are nothing but COBOL3.

If you are wanting to statically link them together, compile COBOL3, compile COBOL2 (taking out the //LKED.SYSLIN DD statement), then compile COBOL1 (taking out the //LKED.SYSLIN DD statement) with added statements:
//LKED.SYSIN DD *
  INCLUDE SYSLMOD(COBOL3)
  INCLUDE SYSLMOD(COBOL2)
  ENTRY COBOL1
  NAME COBOL1(R)
/*


That just saved also my day :-)