On Wed, 22 Mar 2006 08:29:09 -0600, Andy Robertson
<[EMAIL PROTECTED]> wrote:
>On Wed, 22 Mar 2006 07:53:24 -0500, john stephens <[EMAIL PROTECTED]>
>wrote:
>>A couple of questions. What is the purpose of the pre-link steps and
Lastly, John, here's an example of making a COBOL mainline and a C
subroutine DLLs
//*
//*
//* STANDARD C COMPILE
//COMPILE EXEC PGM=CCNDRVR,
// REGION=100M,COND=(4,LT),
// PARM='/OPTF(DD:O)'
//O DD *
AGG SHOW NOSEQ
MAR(1,172)
INL(AUTO,REPORT,999,999999)
EXPMAC RENT LO SO
NOSEARCH
LIS SS ARCH(5)
OPT(1),DLL,LO
//STEPLIB DD DSNAME=SYS1.SCCNCMP,DISP=SHR
//SYSMSGS DD DUMMY,DSNAME=SYS1.SCEEMSGP(EDCMSGE),DISP=SHR
//SYSLIN DD DSNAME=&&OBJ,UNIT=VIO,
// DISP=(NEW,PASS),SPACE=(TRK,(30,30)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSCPRT DD SYSOUT=*
//SYSUT1 DD UNIT=VIO,SPACE=(32000,(90,900)),LRECL=80,RECFM=FB
//SYSUT4 DD UNIT=VIO,SPACE=(32000,(90,900)),LRECL=80,RECFM=FB
//SYSUT5 DD UNIT=VIO,SPACE=(32000,(90,900)),LRECL=3200,RECFM=FB
//SYSUT6 DD UNIT=VIO,SPACE=(32000,(90,900)),LRECL=3200,RECFM=FB
//SYSUT7 DD UNIT=VIO,SPACE=(32000,(90,900)),LRECL=3200,RECFM=FB
//SYSUT8 DD UNIT=VIO,SPACE=(32000,(90,900)),LRECL=3200,RECFM=FB
//SYSUT9 DD UNIT=VIO,SPACE=(32000,(90,900)),
// DCB=(RECFM=VB,LRECL=137,BLKSIZE=882)
//SYSUT10 DD SYSOUT=*
//SYSUT14 DD UNIT=VIO,SPACE=(32000,(90,930)),
// DCB=(RECFM=FB,LRECL=3200,BLKSIZE=12800)
//*
//SYSIN DD *
??=pragma export (DLLESUB)
??=include <stdlib.h>
??=include <stdio.h>
??=include <string.h>
extern void DLLESUB(
void* void_key_ptr
)
??<
char * key_ptr;
key_ptr = void_key_ptr;
* (key_ptr) = 'G';
return;
??>
//USERLIB DD DISP=SHR,DSN=JLP.TEST.DLLCHDR
// DD DISP=SHR,DSN=JLP.TEST.DLLCSRC
// DD DISP=SHR,DSN=JLP.TEST.CSRC
//SYSLIB DD DSN=SYS1.SCEEH.H,DISP=SHR
// DD DSN=SYS1.SCEESAMP,DISP=SHR
//*
//* PRE-LINKEDIT STEP:
//*
//PLKED EXEC PGM=EDCPRLK,COND=(4,LT),REGION=7M,
// PARM='DLLNAME(DLLESUB)'
//SYSMSGS DD DSNAME=SYS1.SCEEMSGP(EDCPMSGE),DISP=SHR
//SYSMOD DD DSNAME=&&OBJ,UNIT=VIO,DISP=(NEW,PASS),
// SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSDEFSD DD DSN=JLP.TEST.DLLIMP(DLLESUB),DISP=SHR
//SYSIN DD DSN=&&OBJ,DISP=(SHR,DELETE)
// DD *
//SYSLIB DD DISP=SHR,DSN=JLP.TEST.DLLIMP
//*
//* STANDARD LINKEDIT PROC
//*
//LINK EXEC PGM=HEWL,COND=(4,LT),
// PARM=('XREF,LIST,MAP',
// 'AMODE=31,RMODE=ANY,RENT')
//SYSUT1 DD UNIT=VIO,SPACE=(1024,(100,30))
//SYSPRINT DD SYSOUT=*
//SYSLIB DD UNIT=VIO,SPACE=(1,(1,1,1)),BLKSIZE=32760,RECFM=U
// DD DSN=SYS1.SCEELKEX,DISP=SHR
// DD DSN=SYS1.SCEELKED,DISP=SHR
// DD DSN=SYS1.SISPLOAD,DISP=SHR
//SYSDEFSD DD DUMMY
//SYSLIN DD *
// DD DSN=&&OBJ,DISP=(OLD,DELETE)
//SYSLMOD DD DSN=JLP.TEST.DLL(DLLESUB),DISP=SHR
//*
//*
//* CREATE C HEADER ON JLP.TEST.DLLCHDR
//*
//*
//HEADER EXEC PGM=IDCAMS,COND=(4,LT)
//SYSUT2 DD DSN=JLP.TEST.DLLCHDR(DLLESUB),DISP=OLD
//SYSPRINT DD DUMMY
REPRO IFILE(SYSUT1) OFILE(SYSUT2)
//SYSUT1 DD *
void
DLLESUB(
void *
);
//*
//* STANDARD COBOL COMPILE
//*
//C EXEC PGM=IGYCRCTL,COND=(4,LT),REGION=7M,
// PARM=('NOOFFSET,NOSSRANGE,RENT,LIST,NOCICS,OPT(FULL),',
// 'NODYNAM,LIB,APOST,DLL,NOEXP,PGMNAME(LM)')
//STEPLIB DD DISP=SHR,DSN=SYSPP.COBOS330.SIGYCOMP
//SYSUT1 DD UNIT=VIO,SPACE=(6233,(150,300),,,ROUND)
//SYSUT2 DD UNIT=VIO,SPACE=(6233,(150,300),,,ROUND)
//SYSUT3 DD UNIT=VIO,SPACE=(6233,(150,300),,,ROUND)
//SYSUT4 DD UNIT=VIO,SPACE=(6233,(150,300),,,ROUND)
//SYSUT5 DD UNIT=VIO,SPACE=(6233,(150,300),,,ROUND)
//SYSUT6 DD UNIT=VIO,SPACE=(6233,(150,300),,,ROUND)
//SYSUT7 DD UNIT=VIO,SPACE=(6233,(150,300),,,ROUND)
//SYSLIN DD DSN=&&OBJ,DISP=(NEW,PASS),BLKSIZE=3120,
// UNIT=VIO,SPACE=(80,(1500,7750))
//SYSPRINT DD SYSOUT=*
//SYSLIB DD DISP=SHR,DSN=JLP.TEST.DLLCOB
// DD DISP=SHR,DSN=JLP.TEST.COPYLIB
// DD DISP=SHR,DSN=JLP.TEST.COBOL
// DD DSN=SYS1.ACEESRC1,DISP=SHR
// DD DSN=SYS1.SCEESAMP,DISP=SHR
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. 'DLLCMAIN'.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000500 WORKING-STORAGE SECTION.
000600 01 W-X PIC X.
001900 PROCEDURE DIVISION.
002100
002200 MOVE 'I' TO W-X
002300 DISPLAY 'DLLCMAIN ENTERED X=' W-X
002301
002310 DISPLAY 'CALLING DLLESUB'
002400
002500 CALL 'DLLESUB' USING W-X
002510 DISPLAY 'CALLED DLLESUB X=' W-X
003400
003500 MOVE 0 TO RETURN-CODE
003600 STOP RUN .
//*
//* PRE-LINKEDIT STEP:
//*
//PLKED EXEC PGM=EDCPRLK,COND=(4,LT),REGION=7M,
// PARM=''
//SYSMSGS DD DSNAME=SYS1.SCEEMSGP(EDCPMSGE),DISP=SHR
//SYSMOD DD DSNAME=&&OBJ,UNIT=VIO,DISP=(NEW,PASS),
// SPACE=(32000,(30,30)),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSOUT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN DD DSN=&&OBJ,DISP=(SHR,DELETE)
// DD *
//SYSLIB DD DISP=SHR,DSN=JLP.TEST.DLLIMP
//*
//* STANDARD LINKEDIT PROC
//*
//LINK EXEC PGM=HEWL,COND=(4,LT),
// PARM=('XREF,LIST,MAP',
// 'AMODE=31,RMODE=ANY,RENT')
//SYSUT1 DD UNIT=VIO,SPACE=(1024,(100,30))
//SYSPRINT DD SYSOUT=*
//SYSLIB DD UNIT=VIO,SPACE=(1,(1,1,1)),BLKSIZE=32760,RECFM=U
// DD DSN=SYS1.SCEELKEX,DISP=SHR
// DD DSN=SYS1.SCEELKED,DISP=SHR
//SYSLIN DD *
// DD DSN=&&OBJ,DISP=(OLD,DELETE)
//SYSLMOD DD DSN=JLP.TEST.DLL(DLLCMAIN),
// DISP=SHR
//*
//RUNIT EXEC PGM=DLLCMAIN
//STEPLIB DD DSN=JLP.TEST.DLL,
// DISP=SHR
//SYSOUT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html