//COBOLDYN JOBCARD INFORMATION
//*------------------------------------------------------------------
//*                 COPYRIGHT (C) 1995, SAS INSTITUTE INC.
//*                   UNPUBLISHED - ALL RIGHTS RESERVED
//*                      S A S / C   S A M P L E
//*
//*         NAME: COBOLDYN
//*     LANGUAGE: JCL
//*      PURPOSE: THIS EXAMPLE DEMONSTRATES CALLING A C FUNCTION
//*               FROM COBOL, WHICH DYNAMICALLY LOADS ANOTHER LOAD
//*               MODULE. IT CONSISTS OF SAMPLE LIBRARY MEMBERS
//*               COBDYNC1, COBDYNC2, COBDYNCO, AND COBOLDYN.
//*               THIS JCL COMPILES, LINKS, AND EXECUTES THESE MODULES.
//* MISC NOTES: THE FOLLOWING LSCL102 MESSAGE CAN BE IGNORED:
//*           CAN'T OPEN FILE DURING AUTOCALL: DDN:SYSLIB(IGZEBST)
//********************************************************************
//*
//*****************************************************************
//*  NOTE: Verify the statements indicated by the "<== CHECK"
//*   have been customized for the local environment.
//*****************************************************************
//**  COMPILE THE COBOL PROGRAM   **
//**********************************
//*
//CCOB        EXEC COB2UC,          <== CHECK: PROC FOR COMPILING COBOL2
//            PARM.COB2='APOST RESIDENT'
//COB2.SYSLIN DD DSN=your.object.library(COBDYNCO),DISP=OLD <== CHECK
//COB2.SYSIN  DD DSN=sasc.SAMPLE.ILC(COBDYNCO),DISP=SHR <== CHECK
//*
//**********************************
//**  COMPILE THE CSTUB           **
//**********************************
//*
//COMPILE EXEC PROC=LC370C,           <== CHECK: PROC FOR COMPILING C
//        PARM.C='INDEP SNAME(CSTUB)' <== MUST COMPILE WITH INDEP
//C.SYSLIN   DD DSN=your.object.library(COBDYNC1),DISP=OLD <== CHECK
//C.SYSIN    DD DSN=sasc.SAMPLE.ILC(COBDYNC1),DISP=SHR     <== CHECK
//*
//*******************************************
//**  COMPILE AND LINK THE C PROGRAM       **
//*******************************************
//*
//COMPILE EXEC PROC=LC370CL,         <== CHECK: PROC FOR COMPILE & LINK
//   PARM.C='SNAME(CPROG)',ENTRY=DYNNR   <== LINK WITH ENTRY=DYNNR
//*                     FOR NON-REENTRANT, AND ENTRY=DYN FOR REENTRANT
//C.SYSLIN   DD DSN=your.object.library(COBDYNC2),DISP=OLD <== CHECK
//C.SYSIN    DD DSN=sasc.SAMPLE.ILC(COBDYNC2),DISP=SHR     <== CHECK
//LKED.SYSLMOD DD DSN=your.load.library(COBDYNC2),DISP=SHR <== CHECK
//*
//************************************
//**  LINK COBOL PROGRAM AND CSTUB  **
//************************************
//*
//ILCLINK EXEC ILCLINK,              <== CHECK: ILC LINK PROC
//        PARM.LKED='NOTERM ECHO'
//LKED.SYSLMOD DD DSN=your.load.library,DISP=OLD           <== CHECK
//LKED.COBJ    DD DSN=your.object.library,DISP=SHR         <== CHECK
//LKED.COBOBJ  DD DSN=your.object.library,DISP=SHR         <== CHECK
//LKED.CLIBS   DD DSN=prefix.BASEOBJ,DISP=SHR              <== CHECK
//             DD DSN=prefix.STDOBJ,DISP=SHR               <== CHECK
//* CHANGE THIS TO THE NON-COBOL2 LIBRARY IF NOT COBOL2
//LKED.COBLKD  DD DSN=local.cobol.COB2LIB,DISP=SHR         <== CHECK
//*
//* CHANGE "COBOL2" TO "COBOL" FOR NON-COBOL2 IN THE
//*         FIRST AND LANGUAGE STATEMENT BELOW
//LKED.ILCIN DD *
   FIRST COBMAIN(COBOL2)
   LANGUAGE COBOL2,C
   PROCESS CLINK
   AUTOCALL CLIBS
   INCLUDE COBJ(COBDYNC1)
   PROCESS LKED LIST,MAP,XREF
   AUTOCALL COBLKD
   INCLUDE COBOBJ(COBDYNCO)
   ENTRY COBMAIN
   NAME COBOLDYN(R)
/*
//*
//**********************************
//**  RUN PROGRAM                 **
//**********************************
//*
//GO EXEC PGM=COBOLDYN
//STEPLIB DD DSN=your.load.library,DISP=SHR               <== CHECK
//        DD DSN=prefix.LINKLIB,DISP=SHR                  <== CHECK
//*
//* CHANGE THIS TO THE NON-COBOL2 LIBRARY IF NOT COBOL2
//        DD DSN=local.cobol.COB2LIB,DISP=SHR             <== CHECK
//SYSPRINT DD SYSOUT=*
//SYSTERM  DD SYSOUT=*
//*
//