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)
/*