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

Reply via email to