Concurrently processing multiple data sets


The following figure shows the asynchronous processing of multiple data sets.

Asynchronous hash checking

//PTRCHECK JOB (1410),'PCP HASH',CLASS=A,MSGCLASS=A
//STEP1   EXEC PGM=PCPCHECK,REGION=0M
//STEPLIB   DD DSN=bmc.xxx.load,DISP=SHR
//          DD DSN=IMS.RESLIB,DISP=SHR
//DFSRESLB  DD DSN=IMS.RESLIB,DISP=SHR
//IMS       DD DSN=IMS.DBDLIB,DISP=SHR
//SYSPRINT  DD SYSOUT=*
//PLUSLIST  DD SYSOUT=*
//PCPSYSIN  DD *
  GLBL  TYPE(HASH) ASYNC(Y)
  CHECK DBD(HISAMDB) WORKDDN(WORK01)
  CHECK DBD(HDAMDB) DSG(HDAMDD1) WORKDDN(WORK02)
  CHECK DBD(HDAMDB) DSG(HDAMDD2) WORKDDN(WORK03)
  CHECK DBD(SINDXDB) WORKDDN(WORK01)
  CHECK DBD(HIDAMDB) WORKDDN(WORK02)
  CHECK DBD(PINDXDB) WORKDDN(WORK03)
/*
//HISAMPRI  DD DSN=PCP.HISAMDB.HISAMPRI,DISP=SHR
//HISAMOVF  DD DSN=PCP.HISAMDB.HISAMOVF,DISP=SHR
//HDAMDD1   DD DSN=PCP.HDAMDB.HDAMDD1,DISP=SHR
//HDAMDD2   DD DSN=PCP.HDAMDB.HDAMDD2,DISP=SHR
//SINDXPRI  DD DSN=PCP.SINDXDB.SINDXPRI,DISP=SHR
//HIDAMDD1  DD DSN=PCP.HIDAMDB.HIDAMDD1,DISP=SHR
//PINDXPRI  DD DSN=PCP.PINDXDB.PINDXPRI,DISP=SHR

The figure Asynchronous hash checking shows the asynchronous processing of multiple data sets as follows:

  • No data sets are dynamically allocated.
  • The database data sets are used for input.
  • PCP processes some data sets concurrently:
WORK01 -HISAMPRI-->HISAMOVF--> --SINDXPRI----->
WORK02 -HDAMDD1----------->HIDAMDD1------->
WORK03 -HDAMDD2-------->PINDXPRI------->

This diagram means PCP begins concurrently reading HISAMPRI, HDAMDD1, and HDAMDD2. When it finishes reading HISAMPRI, it begins reading HISAMOVF. When it finishes reading HISAMOVF, it begins reading SINDXPRI. When it finishes reading HDAMDD1, it begins reading HIDAMDD1. When it finishes reading HDAMDD2, it begins reading PINDXPRI.

You must set the ASYNC option to Y to indicate that you want asynchronous processing. This example uses the DSG and WORKDDN options solely to control asynchronous processing. In this case, the DSG option does not imply a partial scan; the Hash Checking technique does not support partial checking. PCP uses the WORKDDN values to label the concurrent asynchronous scanning tasks and assign the indicated data sets to the asynchronous scanning tasks; no WORKnn files are actually used.

 

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