Limited supportBMC provides limited support for this version of the product. As a result, BMC no longer accepts comments in this space. If you encounter problems with the product version or the space, contact BMC Support.BMC recommends upgrading to the latest version of the product. To see documentation for that version, see UNLOAD PLUS for DB2 13.1.

Example 13 — Using Db2 dynamic SQL (DIRECT NO) and Db2 parallelism


This example illustrates using Db2 dynamic SQL and parallelism to unload data from multiple tables.

This job unloads multiple tables from the same table space into three different SYSREC output files.

  • The first SELECT statement shows a subselect query against two tables.
  • The second SELECT statement joins two tables on the EMPL_LNAME column of the two tables.
  • The third SELECT statement shows an example of column functions against a single table.

Message 50041I indicates the status of zIIP processing. For this example, the ZIIP installation option is ENABLED, but an XBM subsystem was not specified. UNLOAD PLUS automatically located an available XBM subsystem to provide zIIP processing.

The following table describes the key command options for this job:

Command options used in JCL

Description

DIRECT NO

Tells UNLOAD PLUS to use Db2 dynamic SQL to process the SELECT statements and read the table data

Using DIRECT NO allows you to unload data by using the full range of functionality that the Db2 SQL SELECT statement provides. This example illustrates the use of several SQL functions that are not available when you specify DIRECT YES.

CNTLCARDS DB2

Writes Db2 CREATE TABLE DDL and Db2 LOAD control statements to the SYSCNTL data set

CURRENTDEGREE

Tells UNLOAD PLUS to issue the SET CURRENT DEGREE command before executing your dynamically executed SELECT statements

This option allows Db2 to take advantage of parallelism where parallel processing is possible.

UNLOADDN SYSREC ACTIVE NO

Disables dynamic allocation for the primary unload data set, overriding the default in the installation options module

SELECT

Names the columns to unload

FROM

Names the table to unload

The following figure shows the JCL for example 13:

//        JOB
//UNLOAD13 EXEC PGM=ADUUMAIN,REGION=0M,
//         PARM=(DEHJ,'ADUXM13','NEW ',,'MSGLEVEL(1)')
//*********************************************************************
//STEPLIB  DD DISP=SHR,DSN=<product.libraries>
//         DD DISP=SHR,DSN=DB2.DSNEXIT
//         DD DISP=SHR,DSN=DB2.DSNLOAD
//SYSIN    DD   *
  UNLOAD
         DIRECT NO
         CNTLCARDS DB2
         CURRENTDEGREE ANY
         UNLOADDN SYSREC ACTIVE NO  
*
    SELECT EMPL_LNAME,
           MAX(EMPL_SALARY)
           FROM BMC.SAL_EMPLS A
                GROUP BY EMPL_LNAME
           HAVING MAX(EMPL_SALARY) = (SELECT MAX(EMPL_SALARY_HRLY)
                                      FROM BMC.RET_EMPLS
                                      WHERE EMPL_LNAME= A.EMPL_LNAME);
*
    SELECT DISTINCT BMC.EMPLS.EMPL_LNAME,
                    SSN,
                    EMPL_ID
           FROM BMC.EMPLS INNER JOIN BMC.RET_EMPLS
     ON BMC.EMPLS.EMPL_LNAME = BMC.RET_EMPLS.EMPL_LNAME;
*
      SELECT EMPL_DEPT_NO,
             MAX(EMPL_HRLY_RATE),
             MIN(EMPL_HRLY_RATE)
        FROM BMC.HRLY_EMPLS
             GROUP BY EMPL_DEPT_NO;
*
/*
//SYSCNTL  DD DSN=ADU.EXAMPL13.SYSCNTL,DISP=(NEW,CATLG),
//            UNIT=SYSDA,SPACE=(CYL,(3,1),RLSE)
//SYSREC01 DD DSN=ADU.EXAMPL13.SYSREC01,DISP=(NEW,CATLG),
//            UNIT=SYSDA,SPACE=(CYL,(3,1),RLSE)
//SYSREC02 DD DSN=ADU.EXAMPL13.SYSREC02,DISP=(NEW,CATLG),
//            UNIT=SYSDA,SPACE=(CYL,(3,1),RLSE)
//SYSREC03 DD DSN=ADU.EXAMPL13.SYSREC03,DISP=(NEW,CATLG),
//            UNIT=SYSDA,SPACE=(CYL,(3,1),RLSE)
//SYSPRINT DD SYSOUT=*
//UTPRINT  DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*

SYSPRINT for example 13

The following figure shows the SYSPRINT for example 13:

                                *****  B M C   U N L O A D   P L U S   F O R   D B 2    V11R1.00 *****
                                             (C) COPYRIGHT 1991 - 2013 BMC SOFTWARE, INC.
 BMC50001I UTILITY EXECUTION STARTING   10/28/2013   13:08:17 ...
 BMC50002I UTILITY ID = 'ADUXM13'.  DB2 SUBSYSTEM ID = 'DEHJ'.  OPTION MODULE = 'ADU$OPTS'.
 BMC50471I z/OS 2.1.0,PID=HBB7790,DFSMS FOR Z/OS=2.1.0,DB2=11.1.0
 BMC50471I REGION=0M,BELOW 16M=8848K,ABOVE 16M=1413172K,IEFUSI=NO,CPUS=3
 BMC50471I MEMLIMIT=17592186040320M,AVAILABLE=17592186040311M,MEMLIMIT SET BY:REGION=0

 BMC50471I UNLOAD PLUS FOR DB2--V11.01.00
 BMC50471I   NO MAINTENANCE TO REPORT
 BMC50471I DB2 UTILITIES COMMON CODE--V11.01.00
 BMC50471I   NO MAINTENANCE TO REPORT
 BMC50471I SOLUTION COMMON CODE--V11.01.00
 BMC50471I   MAINT: BPJ0661  BPJ0667  BPJ0671  BPJ0674  BPJ0675  BPJ0676  BPJ0682  BPJ0686  BPJ0689  BPJ0697
 BMC50471I BMCSORT ENGINE--V02.04.01
 BMC50471I   MAINT: BPJ0691
 BMC50471I BMC STATS API--V11.01.00
 BMC50471I   MAINT: BPU5409  BPU5534  BPU5674
 BMC50471I EXTENDED BUFFER MANAGER--V06.01.00
 BMC50471I   MAINT: BPE0401  BPE0403  BPE0405  BPE0407  BPE0410  BPE0412  BPE0416

 BMC50471I ANALYZE=(DB2STATS,NOLIMIT)              FORCE_RPT=NO                            SMAX=16
 BMC50471I CENTURY=(1950,2049)                     FORCE=NONE                              SMCORE=(0K,0K)
 BMC50471I CHANGE_CONSISTENT=NO                    HISTORY=YES                             SORTNUM=32
 BMC50471I CHANGE_QUIESCE=NO                       IBUFFS=25                               SQLDELAY=3
 BMC50471I CMAX=16                                 INLINE=NO                               SQLRETRY=100
 BMC50471I CMRATIO=50                              LOADDECP=NO                             TAPEDISP=DELETE
 BMC50471I CONSTRULES=BMC                          LOCKROW=YES                             TASKMAX=200%
 BMC50471I CURRENTDEGREE=NONE                      MAXP=5                                  UBUFFS=25
 BMC50471I DELFILES=YES                            MSGLEVEL=1                              UNLDMAX=200%
 BMC50471I DRNDELAY=1                              NULLCHAR=X'6F'                          UNLOADDN_ACTIVE=(YES,NO)
 BMC50471I DRNRETRY=255                            NULLTYPE=T1                             UNLOADDN=(SYSREC,SYSRED)
 BMC50471I DRNWAIT=NONE                            OPNDB2ID=YES                            USELRECL=NO
 BMC50471I DSPLOCKS=DRNFAIL                        PLAN=ADUQA                              UXSTATE=SUP
 BMC50471I EXCLDUMP=(X37,X22,X06)                  RECFM=AUTO                              WORKUNIT=SYSALLDA
 BMC50471I FILEREFDN=SYSREF                        ROWSETSZ=100                            ZIIP=ENABLED
 BMC50471I FILL=NO                                 SDUMP=YES                               ZONEDDECOVP=(C,D)
 BMC50471I FORCE_AT=(START,3)                      SHRLEVEL=REFERENCE


 BMC50471I TAPES=NONE

 BMC50470I OUTPUT   = SYSREC                             SYSRED                               SYSREF
 BMC50470I UNIT     = SYSALLDA                           SYSALLDA                             SYSALLDA
 BMC50470I VOLCNT   = 25                                 25                                   25
 BMC50470I GDGLIMIT = 5                                  5                                    5
 BMC50470I GDGEMPTY = NO                                 NO                                   NO
 BMC50470I GDGSCRAT = NO                                 NO                                   NO
 BMC50470I STORCLAS = NONE                               NONE                                 NONE
 BMC50470I DATACLAS = NONE                               NONE                                 NONE
 BMC50470I MGMTCLAS = NONE                               NONE                                 NONE
 BMC50470I UNITCNT  = 0                                  0                                    0
 BMC50470I SPACE    = CYL                                CYL                                  CYL
 BMC50470I PCTPRIM  = AUTO                               AUTO                                 AUTO
 BMC50470I MAXPRIM  = 0                                  0                                    0
 BMC50470I MAXSECD  = 0                                  0                                    0
 BMC50470I FILESZPCT  100                                100                                  100
 BMC50470I NBRSECD  = AUTO                               AUTO                                 AUTO
 BMC50470I DISKRETN = NONE                               NONE                                 NONE
 BMC50470I DISKEXPD = NONE                               NONE                                 NONE
 BMC50470I RETPD    = NONE                               NONE                                 NONE
 BMC50470I EXPDT    = 99000                              99000                                99000
 BMC50470I TRTCH    = NONE                               NONE                                 NONE
 BMC50470I DSNTYPE  = NONE                               NONE                                 PDS
 BMC50483I SYSREC     VOLUMES=NONE
 BMC50483I SYSRED     VOLUMES=NONE
 BMC50483I SYSREF     VOLUMES=NONE

 BMC50483I SYSREC     DSNAME=&USERID.&TYPE.S&SELNUM
 BMC50483I SYSRED     DSNAME=&USERID.&TYPE.S&SELNUM
 BMC50483I SYSREF     DSNAME=&USERID.BMC


 BMC50471I DB2 DSNHDECP MODULE SETTINGS:
 BMC50471I VERSION                 = 1110
 BMC50471I SUBSYSTEM DEFAULT       = DEHJ
 BMC50471I CHARACTER SET           = ALPHANUM
 BMC50471I DATE FORMAT             = USA
 BMC50471I TIME FORMAT             = USA
 BMC50471I LOCAL DATE LENGTH       = 0
 BMC50471I LOCAL TIME LENGTH       = 0
 BMC50471I DECIMAL POINT           = PERIOD
 BMC50471I DECIMAL ARITHMETIC      = 15
 BMC50471I DELIMITER               = DEFAULT
 BMC50471I SQL DELIMITER           = DEFAULT
 BMC50471I ENCODING SCHEME         = EBCDIC
 BMC50471I APPL. ENCODING SCHEME   = EBCDIC
 BMC50471I MIXED                   = NO
 BMC50471I EBCDIC CCSID            = (37,65534,65534)
 BMC50471I ASCII CCSID             = (819,65534,65534)
 BMC50471I UNICODE CCSID           = (367,1208,1200)
 BMC50471I IMPLICIT TIME ZONE      = CURRENT (-05:00)

 BMC50028I DB2 MODE = NFM
 BMC50471I BMC_BMCUTIL       ='BMCUTIL.CMN_BMCUTIL'
 BMC50471I BMC_BMCSYNC       ='BMCUTIL.CMN_BMCSYNC'
 BMC50471I BMC_BMCHIST       ='BMCUTIL.CMN_BMCHIST'
 BMC50471I BMC_BMCXCOPY      ='BMCUTIL.CMN_BMCXCOPY'


 BMC50102I   UNLOAD
 BMC50102I          DIRECT NO
 BMC50102I          CNTLCARDS DB2
 BMC50102I          CURRENTDEGREE ANY
 BMC50102I          UNLOADDN SYSREC ACTIVE NO
 BMC50102I *
 BMC50102I     SELECT EMPL_LNAME,
 BMC50102I            MAX(EMPL_SALARY)
 BMC50102I            FROM BMC.SAL_EMPLS A
 BMC50102I                 GROUP BY EMPL_LNAME
 BMC50102I            HAVING MAX(EMPL_SALARY) = (SELECT MAX(EMPL_SALARY_HRLY)
 BMC50102I                                       FROM BMC.RET_EMPLS
 BMC50102I                                       WHERE EMPL_LNAME= A.EMPL_LNAME);
 BMC50102I *
 BMC50102I     SELECT DISTINCT BMC.EMPLS.EMPL_LNAME,
 BMC50102I                     SSN,
 BMC50102I                     EMPL_ID
 BMC50102I            FROM BMC.EMPLS INNER JOIN BMC.RET_EMPLS
 BMC50102I      ON BMC.EMPLS.EMPL_LNAME = BMC.RET_EMPLS.EMPL_LNAME;
 BMC50102I *
 BMC50102I       SELECT EMPL_DEPT_NO,
 BMC50102I              MAX(EMPL_HRLY_RATE),
 BMC50102I              MIN(EMPL_HRLY_RATE)
 BMC50102I         FROM BMC.HRLY_EMPLS
 BMC50102I              GROUP BY EMPL_DEPT_NO;
 BMC50102I *

 BMC51654I DIRECT NO IN EFFECT

 BMC50109I 'DIRECT NO' OPTION SPECIFIED.  OPTION 'SHRLEVEL' IGNORED
 BMC51689I ESTIMATED ROWS FOR SELECT 1 IS 0
 BMC51689I ESTIMATED ROWS FOR SELECT 2 IS 0
 BMC51689I ESTIMATED ROWS FOR SELECT 3 IS 0

 BMC50004I UTILINIT PHASE COMPLETE.  ELAPSED TIME = 00:00:00

 BMC51639I FOR DDNAME 'SYSREC01' DSN=ADU.EXAMPL13.SYSREC01,DCB=(RECFM=VB,BLKSIZE=27993,LRECL=27)
 BMC51639I FOR DDNAME 'SYSREC02' DSN=ADU.EXAMPL13.SYSREC02,DCB=(RECFM=VB,BLKSIZE=27993,LRECL=33)
 BMC51639I FOR DDNAME 'SYSREC03' DSN=ADU.EXAMPL13.SYSREC03,DCB=(RECFM=FB,BLKSIZE=27984,LRECL=16)
 BMC50041I 0: ZIIP  ENABLED (0) USING XBM SUBSYSTEM XBMB
 BMC50474I BELOW 16M = 8492K, ABOVE 16M = 1405468K, CPUS = 3
 BMC51702I MAX TASKS = 3
 BMC51664I 3: SELECT STATEMENT NO. 3, ROWS = 10
 BMC51664I 2: SELECT STATEMENT NO. 2, ROWS = 20
 BMC51664I 1: SELECT STATEMENT NO. 1, ROWS = 8
 BMC50476I DDNAME = SYSREC01, I/OS = 1, I/O WAITS = 1, RDB LOCK WAITS = 0
 BMC50476I DDNAME = SYSREC02, I/OS = 1, I/O WAITS = 1, RDB LOCK WAITS = 0
 BMC50476I DDNAME = SYSREC03, I/OS = 1, I/O WAITS = 1, RDB LOCK WAITS = 0
 BMC51676I UNLOAD STATISTICS:  8 ROWS PROCESSED FOR SELECT STATEMENT NO. 1, 0 DISCARDED
 BMC51676I UNLOAD STATISTICS:  20 ROWS PROCESSED FOR SELECT STATEMENT NO. 2, 0 DISCARDED
 BMC51676I UNLOAD STATISTICS:  10 ROWS PROCESSED FOR SELECT STATEMENT NO. 3, 0 DISCARDED
 BMC51674I UNLOAD STATISTICS:  8 RECORDS WRITTEN TO DDNAME 'SYSREC01'
 BMC51674I UNLOAD STATISTICS:  20 RECORDS WRITTEN TO DDNAME 'SYSREC02'
 BMC51674I UNLOAD STATISTICS:  10 RECORDS WRITTEN TO DDNAME 'SYSREC03'
 BMC51675I UNLOAD STATISTICS:  0 RECORDS DISCARDED DUE TO ERRORS
 BMC50041I 0: ZIIP NOT ENABLED (0) USING XBM SUBSYSTEM XBMB
 BMC50004I UNLOAD PHASE COMPLETE.  ELAPSED TIME = 00:00:00


 BMC51639I FOR DDNAME 'SYSCNTL' DSN=ADU.EXAMPL13.SYSCNTL,DCB=(RECFM=FB,BLKSIZE=3120,LRECL=80)
 BMC51801I DB2 CREATE TABLE AND LOAD TABLE STATEMENTS WRITTEN TO DDNAME 'SYSCNTL'

 BMC51805I CREATE TABLE
 BMC51809I RDAMZL.$TABLE1
 BMC51807I     ( EMPL_LNAME VARCHAR(15)  NOT NULL
 BMC51808I     , $COLUMN2 DECIMAL(9 , 2)
 BMC51809I )
 BMC51809I ;
 BMC51805I CREATE TABLE
 BMC51809I RDAMZL.$TABLE2
 BMC51807I     ( EMPL_LNAME VARCHAR(15)  NOT NULL
 BMC51807I     , SSN CHARACTER(9)  NOT NULL
 BMC51808I     , EMPL_ID DECIMAL(5 , 0) NOT NULL
 BMC51809I )
 BMC51809I ;
 BMC51805I CREATE TABLE
 BMC51809I RDAMZL.$TABLE3
 BMC51807I     ( EMPL_DEPT_NO CHARACTER(4)  NOT NULL
 BMC51808I     , $COLUMN2 DECIMAL(9 , 2)
 BMC51808I     , $COLUMN3 DECIMAL(9 , 2)
 BMC51809I )
 BMC51809I ;

 BMC51810I LOAD DATA INDDN SYSREC01
 BMC51940I      EBCDIC CCSID(37,65534,65534)
 BMC51811I   INTO TABLE
 BMC51809I RDAMZL.$TABLE1
 BMC51813I (EMPL_LNAME POSITION(1:*) VARCHAR
 BMC51813I ,$COLUMN2 POSITION(*:*+4) DECIMAL
 BMC51814I       NULLIF BMC_NULL1=X'6F'
 BMC51819I     ,     BMC_NULL1 POSITION(*) CHAR(1)
 BMC51809I )
 BMC51810I LOAD DATA INDDN SYSREC02
 BMC51940I      EBCDIC CCSID(37,65534,65534)
 BMC51811I   INTO TABLE
 BMC51809I RDAMZL.$TABLE2
 BMC51813I (EMPL_LNAME POSITION(1:*) VARCHAR
 BMC51815I ,SSN POSITION(*:*+8) CHAR  (9)
 BMC51813I ,EMPL_ID POSITION(*:*+2) DECIMAL
 BMC51809I )
 BMC51810I LOAD DATA INDDN SYSREC03
 BMC51940I      EBCDIC CCSID(37,65534,65534)
 BMC51811I   INTO TABLE
 BMC51809I RDAMZL.$TABLE3
 BMC51815I (EMPL_DEPT_NO POSITION(1:4) CHAR  (4)
 BMC51813I ,$COLUMN2 POSITION(5:9) DECIMAL
 BMC51814I       NULLIF BMC_NULL1=X'6F'
 BMC51819I     ,     BMC_NULL1 POSITION(10) CHAR(1)
 BMC51813I ,$COLUMN3 POSITION(11:15) DECIMAL
 BMC51814I       NULLIF BMC_NULL2=X'6F'
 BMC51819I     ,     BMC_NULL2 POSITION(16) CHAR(1)
 BMC51809I )

 BMC50476I DDNAME = SYSCNTL, I/OS = 1, I/O WAITS = 1, RDB LOCK WAITS = 0
 BMC50006I UTILITY EXECUTION COMPLETE, RETURN CODE = 0

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*