Hi
I have been trying to invoke a Cobol program from C program. I was able to call Cobol from C program perfectly but my cobol source inturn does a STATIC call to external lib routine. There it actually abends, in many sites they say it as some library missing in link-edit step but am able to run the Cobol as a stand alone ( executes external lib routine also) but when i invoke the same Cobol from C it just abends with SOC1.
Find below the JCL snippet i used for compile, Prelink and Link-edit
//*---------------------------------------------------
//** COMPILE C MODULE
//*---------------------------------------------------
//CB2V EXEC EDCCLIB,
// INFILE='ABMWBG1.BITSP3.C(MVS2CSAM)',
// LIBPRFX='SYS1.LE',
// LNGPRFX='SYS1.IBMCPP',
// LIBRARY='ABMWBG1.BITSP3.OBJLIBZ',
// MEMBER='MVS2CSAM',
// CPARM='OPTFILE(DD:CCOPTS)',
// CPARM2='DEF(_XOPEN_SOURCE_EXTENDED)'
//CCOPTS DD DSN=ABMWBG1.BITSP3.JCLZ(CCOPTS1),DISP=SHR
//SYSLIB DD DSN=&LIBPRFX..SCEEH.SYS.H,DISP=SHR
// DD DSN=&LIBPRFX..SCEEH.H,DISP=SHR
// DD DSN=XMQS11.SCSQC370,DISP=SHR
// DD DSN=ABMWBG1.BITSP3.LOADLIB,DISP=SHR
//USERLIB DD DSN=XBMW01.BMWV5R0.H,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//*---------------------------------------------------
//** PRE - LINK C MODULE
//*---------------------------------------------------
//PLKED EXEC PGM=EDCPRLK,
// REGION=5000K,
// PARM='MAP, NOER,NONCAL'
//STEPLIB DD DSN=SYS1.LE.SCEERUN,DISP=SHR
// DD DSN=SYS1.LE.SCEELKED,DISP=SHR
//SYSMSGS DD DSN=SYS1.LE.SCEEMSGP(EDCPMSGE),DISP=SHR
//SYSLIB DD DSN=SYS1.LE.SCEECPP,DISP=SHR
//SYSIN DD DSN=ABMWBG1.BITSP3.OBJLIBZ(MVS2CSAM),DISP=SHR
// DD DSN=XBMW01.BMWV5R0.IMPORTS(BMWDLLB),DISP=SHR
//SYSMOD DD DSN=&&PLKSET,DISP=(,PASS),
// UNIT=SYSDA,
// SPACE=(3200,(30,30)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSDEFSD DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//*---------------------------------------------------
//** COMPILE COBOL MODULE
//*---------------------------------------------------
//STEP1 EXEC IGYWCPL,PARM='OBJECT,XREF'
//SYSIN DD DSN=ABMWBG1.BITSP3.COBOL(BITSCOB),DISP=SHR
//STEPLIB DD DSN=SYS1.IGY.COBOL.V34.SIGYCOMP,DISP=SHR
//COBOL.SYSLIB DD DISP=SHR,DSN=PEDV01.PROD.COMMON.COPYLIB
//COBOL.SYSLIN DD DSN=ABMWBG1.BITSP3.OBJLIBZ(BITSCOB),DISP=SHR
//*---------------------------------------------------
//** PRE - LINK COBOL MODULE
//*---------------------------------------------------
//PLKED.SYSIN DD DSN=ABMWBG1.BITSP3.OBJLIBZ(BITSCOB),DISP=SHR
// DD DSN=XBMW01.BMWV5R0.IMPORTS(BMWDLLB),DISP=SHR
//* DD DSN=XBMW01.BMWPROD.OBJLIB(BMWBSTUB),DISP=SHR
//*---------------------------------------------------
//** LINK - EDIT C AND COBOL OBJECT
//*---------------------------------------------------
//*KED EXEC PGM=HEWL,PARM='
//* REGION=1024K
//LKED.SYSLMOD DD DSN=ABMWBG1.BITSP3.LOADLIB(MVSC2COB),DISP=SHR
//LKED.SYSLIB DD DSN=SYS1.LE.SCEELKED,DISP=SHR
// DD DISP=SHR,DSN=SYS1.LE.SCEERUN
// DD DSN=XMQS11.SCSQLOAD,DISP=SHR
// DD DSN=XBMW01.BMWPROD.OBJLIB,DISP=SHR
// DD DSN=ABMWBG1.BITSP3.OBJLIBZ,DISP=SHR
// DD DSN=XBMW01.BMWV5R0.IMPORTS,DISP=SHR
//SYSPRINT DD SYSOUT=*
//LKED.SYSLIN DD DSN=*.PLKED.SYSMOD,DISP=(OLD,DELETE)
// DD DSN=ABMWBG1.BITSP3.OBJLIBZ(BITSCOB),DISP=SHR
// DD DDNAME=SYSIN
//LKED.SYSIN DD *
INCLUDE SYSLIB(CEEROOTB)
INCLUDE SYSLIB(CSQBSTUB)
INCLUDE SYSLIB(BMWBSTUB) --> EXTERNAL METHOD STUB
INCLUDE SYSLIB(EDCSTART)
INCLUDE SYSLIB(@@CBL2C)
INCLUDE SYSLIB(BITSCOB) --> COBOL OBJECT
INCLUDE SYSLIB(MVS2CSAM) --> C OBJECT
NAME MVSC2COB(R)
//SYSUT1 DD UNIT=SYSDA,DCB=BLKSIZE=1024,
// SPACE=(1024,(200,20))
C source :
#pragma linkage (BITSCOB,COBOL)
void BITSCOB(long,long*,long*);
void main ()
{
BITSCOB(Options, &CompCode, &Reason);
}
Cobol Module (BITSCOB) :
CBL NODYNAM,LIB,OBJECT,RENT,APOST
*
IDENTIFICATION DIVISION.
*
PROGRAM-ID. BITSCOB.
*
DATA DIVISION.
LINKAGE SECTION.
01 OPTIONS PIC 9(5) COMP-5.
01 COMPCODE PIC 9(5) COMP-5.
01 REASON PIC 9(5) COMP-5.
PROCEDURE DIVISION USING OPTIONS,COMPCODE,REASON.
DISPLAY "OPTIONS : " OPTIONS.
CALL 'EXTMETHOD' USING OPTIONS,
COMPCODE,
REASON.
Am invoking cobol from C and abends in the 'CALL' statement of Cobol.
Please advise what am missing in this whole flow.
Looking forward for all your suggestions.
Thanks
Calling COBOL from C - getting SOC1
Moderators: dbzTHEdinosauer, Moderator Group
-
- Member
- Posts: 2
- Joined: Sat Sep 20, 2008 12:55 pm
FREE TUTORIALS
Tutorials
Free tutorials from mainframegurukul
- JCL Tutorial
Covers all important JCL concepts. - Cobol Tutorial
This tutorials covers all Cobol Topics from STRING to COMP-3. - DB2 Tutorial
DB2 Tutorial focuses on DB2 COBOL Programming. - SORT Tutorial
This Tutorial covers all important aspects of DFSORT with examples - CICS Tutorial
This CICS tutorial covers CICS concepts and CICS Basics, CICS COBOL Programming.
Interview
Mainframe Interview questions
- Cobol Interview Questions
50+ Interview Questions - JCL Interview Questions
50+ Interview Questions - DB2 Interview Questions
100+ Interview Questions - CICS Interview Questions
70+ Interview Questions - VSAM Interview Questions
27 Interview Questions
Other References
Mainframe Tools and others
- XPEDITER Reference
Explains how we can debug a program - FILEAID Reference
Explains how to browse , edit and delete datasets - Change Man Reference
Quick Start tutorial on Changeman - Abend Reference
Important Abend codes explained - FaceBook Page
MainframeGurukul FaceBook Page - LinkedIn Page
MainframeGurkul Linkedin Page