Calling COBOL from C - getting SOC1

This is a Mainframe COBOL forum - you can post your queries on Mainframe COBOL, VS COBOL II, COBOL/370 , Enterprise COBOL

Moderators: dbzTHEdinosauer, Moderator Group

Post Reply
balajiiinx
Member
Posts: 2
Joined: Sat Sep 20, 2008 12:55 pm

Calling COBOL from C - getting SOC1

Post by balajiiinx » Tue Sep 23, 2008 10:25 am

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

academyindia4

Topic deleted by Admin

Post by academyindia4 » Wed Jan 27, 2016 8:16 pm

<< Content deleted By Admin >>

academyindia4

Topic deleted by Admin

Post by academyindia4 » Mon Feb 01, 2016 1:26 am

<< Content deleted By Admin >>

Post Reply

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



Other References
Mainframe Tools and others