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