DSNTEJ6V

This JCL prepares and executes a sample application that demonstrates using object-oriented C++ to invoke DSNUTILS, the Db2 Utilities Stored Procedure.

//********************************************************************
//*  Name = DSNTEJ6V
//*
//*  Descriptive Name =
//*    DB2 Sample Application
//*    Phase 6 (DB2 Distributed Samples)
//*    Utility Stored Procedure (DSNUTILS) caller using C++
//*
//*    Licensed Materials - Property of IBM
//*    5650-DB2
//*    (C) COPYRIGHT 1982, 2016 IBM Corp.  All Rights Reserved.
//*
//*  STATUS = Version 12
//*
//*  Function =
//*    This JCL prepares and executes a sample application that
//*    demonstrates using object-oriented C++ to invoke DSNUTILS, the
//*    DB2 Utilities Stored Procedure.  The application consists of
//*    two sample classes and a sample client:
//*    - DSN8EE0 is an exception class for handling SQL errors
//*    - DSN8EE1 is a class with constructors and methods for creating
//*      and manipulating DSNUTILS as an object
//*    - DSN8EE2 is a client program that demonstrates using DSN8EE1
//*      to run the DB2 CHECK INDEX utility
//*
//*  Dependencies =
//*  - The following are required to run this job:
//*    - DB2 UDB for OS/390
//*    - IBM C/C++ for OS/390
//*    - DSNUTILS, the DB2 UDB for OS/390 Utilities stored procedure
//*
//*  Notice =
//*    This sample job uses DB2 Utilities. Some utility functions are
//*    elements of separately orderable products.  Successful use of
//*    a particular sample job may be dependent upon the optional
//*    product being licensed and installed in your environment.
//*
//*  Change Activity =
//*    10/16/2013 Don't use prelinker by default         PI13612 DM1812
//*    08/18/2014 Single-phase migration            s21938_inst1 s21938
//*
//**********************************************************************
//*
//JOBLIB  DD  DISP=SHR,DSN=DSN!!0.SDSNEXIT
//        DD  DISP=SHR,DSN=DSN!!0.SDSNLOAD
//        DD  DISP=SHR,DSN=CEE.V!R!M!.SCEERUN
//*
//* Step  1: Prepare DSN8EE0 (sample SQL Exception handler class)
//*
//PH06VS01 EXEC DSNHCPP,MEM=DSN8EE0,
//         PARM.PC=('HOST(CPP),CCSID(1047),MARGINS(1,72),STDSQL(NO)',
//             SOURCE,XREF),
//         PARM.CP=('/CXX SOURCE XREF OPTFILE(DD:CCOPTS)',
//             'LANGLVL(EXTENDED)'),
//         PARM.LKED='NCAL'
//PC.DBRMLIB   DD  DSN=DSN!!0.DBRMLIB.DATA(DUMMY),
//             DISP=SHR
//PC.SYSLIB    DD  DSN=DSN!!0.SRCLIB.DATA,
//             DISP=SHR
//PC.SYSIN     DD  DSN=DSN!!0.SDSNSAMP(DSN8EE0),
//             DISP=SHR
//CP.USERLIB   DD  DSN=DSN!!0.SDSNSAMP,
//             DISP=SHR
//             DD  DSN=DSN!!0.SRCLIB.DATA,
//             DISP=SHR
//CP.SYSLIN    DD  DSN=&&DSN8EE0,
//             DISP=(MOD,PASS),
//             UNIT=SYSDA,SPACE=(TRK,(1,1),RLSE),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//LKED.SYSLIN  DD  DSN=&&DSN8EE0,DISP=(OLD,PASS)
//LKED.SYSLMOD DD  DSN=DSN!!0.RUNLIB.LOAD(DUMMY),
//             DISP=SHR
//*
//* Step  2: Prepare DSN8EE1 (sample DSNUTILS handler class)
//*              and DSN8EE2 (sample client of DSN8EE1)
//*
//PH06VS02 EXEC DSNHCPP2,COND=(4,LT),
//         PARM.PC1=('HOST(CPP),CCSID(1047),MARGINS(1,72),STDSQL(NO)',
//             SOURCE,XREF),
//         PARM.CP1=('/CXX SOURCE XREF OPTFILE(DD:CCOPTS)',
//             'LANGLVL(EXTENDED)'),
//         PARM.PC2=('HOST(CPP),CCSID(1047),MARGINS(1,72),STDSQL(NO)',
//             SOURCE,XREF),
//         PARM.CP2=('/CXX SOURCE XREF OPTFILE(DD:CCOPTS)',
//             'LANGLVL(EXTENDED)'),
//         PARM.LKED=('MAP,LIST(ALL),RENT,REUS,AMODE=31,RMODE=ANY,',
//             'UPCASE')
//PC1.DBRMLIB  DD  DSN=DSN!!0.DBRMLIB.DATA(DSN8EE1),
//             DISP=SHR
//PC1.SYSLIB   DD  DSN=DSN!!0.SDSNSAMP,
//             DISP=SHR
//             DD  DSN=DSN!!0.SRCLIB.DATA,
//             DISP=SHR
//PC1.SYSIN    DD  DSN=DSN!!0.SDSNSAMP(DSN8EE1),
//             DISP=SHR
//CP1.USERLIB  DD  DSN=DSN!!0.SDSNSAMP,
//             DISP=SHR
//             DD  DSN=DSN!!0.SRCLIB.DATA,
//             DISP=SHR
//CP1.SYSLIN   DD  DSN=&&DSN8EE1,
//             DISP=(MOD,PASS),
//             UNIT=SYSDA,SPACE=(TRK,(1,1),RLSE),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//PC2.DBRMLIB  DD  DSN=DSN!!0.DBRMLIB.DATA(DSN8EE2),
//             DISP=SHR
//PC2.SYSLIB   DD  DSN=DSN!!0.SDSNSAMP,
//             DISP=SHR
//             DD  DSN=DSN!!0.SRCLIB.DATA,
//             DISP=SHR
//PC2.SYSIN    DD  DSN=DSN!!0.SDSNSAMP(DSN8EE2),
//             DISP=SHR
//CP2.USERLIB  DD  DSN=DSN!!0.SDSNSAMP,
//             DISP=SHR
//             DD  DSN=DSN!!0.SRCLIB.DATA,
//             DISP=SHR
//CP2.SYSLIN   DD  DSN=&&DSN8EE2,
//             DISP=(MOD,PASS),
//             UNIT=SYSDA,SPACE=(TRK,(1,1),RLSE),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//LKED.SYSLIN  DD  DSN=&&DSN8EE2,DISP=(OLD,DELETE)
//             DD  DSN=&&DSN8EE1,DISP=(OLD,DELETE)
//             DD  DSN=&&DSN8EE0,DISP=(OLD,DELETE)
//LKED.SYSLMOD DD  DSN=DSN!!0.RUNLIB.LOAD(DSN8EE2),
//             DISP=SHR
//LKED.SYSIN   DD  *
  INCLUDE SYSLIB(DSNELI)
  NAME DSN8EE2(R)
//*
//* Step  3: Bind DSN8EE1 package and DSN8EE2 plan
//*
//PH06VS03 EXEC PGM=IKJEFT01,DYNAMNBR=20,COND=(4,LT)
//DBRMLIB  DD  DSN=DSN!!0.DBRMLIB.DATA,
//             DISP=SHR
//SYSTSPRT DD  SYSOUT=*
//SYSPRINT DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*
//SYSTSIN  DD  *
  DSN SYSTEM(DSN)
    BIND PACKAGE(DSN8EE!!) MEMBER(DSN8EE1) APPLCOMPAT(V!!R1) +
         ACT(REP) ISO(CS) CURRENTDATA(YES) ENCODING(EBCDIC)
    BIND PLAN(DSN8EE2) -
         PKLIST(DSN8EE!!.DSN8EE1,DSNUTILS.*) -
         ACTION(REPLACE) RETAIN +
         SQLRULES(DB2) -
         ISO(CS) CURRENTDATA(YES) ENCODING(EBCDIC)
    RUN PROGRAM(DSNTIAD) PLAN(DSNTIA!!)  -
         LIB('DSN!!0.RUNLIB.LOAD')
  END
/*
//SYSIN    DD  *
  SET CURRENT SQLID = 'SYSADM';
  GRANT BIND, EXECUTE ON PLAN DSN8EE2
    TO PUBLIC;
/*
//*
//* Step  4: Invoke DSN8EE2
//*
//PH06VS04 EXEC PGM=IKJEFT1B,DYNAMNBR=20,COND=(4,LT)
//SYSTSPRT DD  SYSOUT=*
//SYSOUT   DD  SYSOUT=*
//SYSPRINT DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*
//SYSTSIN  DD  *
  DSN SYSTEM(DSN)
  RUN  PROGRAM(DSN8EE2) PLAN(DSN8EE2) -
       LIB('DSN!!0.RUNLIB.LOAD') -
       PARMS('DSN8D!!A DSN8S!!S SAMPLOC')
  END
//CHEKINDX DD  SYSOUT=*,DCB=(RECFM=VBA,LRECL=258)
/*