Please enable JavaScript to view this site.

Navigation: Apply Engine > Use Case Scenarios

IMS to RDBMS Replication

Scroll

Replicate IMS changed data (CDC) for the IVP EMPLOYEE and ANNULREV segments in the HREMPLDB IMS database into an Oracle RDBMS.  The example also includes a filter for the EMPLOYEE segment. Only updates to employees with a bonus over $5,000 will cause the record to be written to Oracle.  All changes to the ANNULREV segment are Replicated with no filter applied.

Notes:

1.The user friendly AS <alias> names specified in the source DESCRIPTION statements which will be used in the Oracler.

2.Replication of IMS requires that the Target Tables full parent key structure as foreign key references. This must be considered when normalizing the IMS hierarchical structure into a relational database model.

----------------------------------------------------------------------

-- Name: IMSTOORA:  Z/OS IMS To Oracle on Linux

-- Client/Project: client/project

----------------------------------------------------------------------

--  SUBSTITUTION PARMS USED IN THIS SCRIPT:

--    %(ENGINE) - ENGINE Name

--    %(SHOST) - Source HOST of the Capture/Publisher

--    %(SPORT) - Source HOST SQDaemon PORT

--    %(PUBNM) - Source Capture/Publisher Agent Name

--    %(SSID) - Target Database

----------------------------------------------------------------------

--       Change Log:

----------------------------------------------------------------------

-- 2019-02-01 INITIAL RELEASE using AVRO

----------------------------------------------------------------------

JOBNAME IMSTOORA;

RDBMS NATIVEORA %(SSID) SQD addison;

 

OPTIONS

   CDCOP('I','U','D')                  -- Set CHANGE OP Constants

;

 

----------------------------------------------------------------------

--       Data Definition Section

----------------------------------------------------------------------

----------------------------------------------------------------------

--       Source Descriptions

----------------------------------------------------------------------

BEGIN GROUP IMS_DBD;

DESCRIPTION IMSDBD ./IMSDBD/HREMPLDB.dbd AS HREMPLDB;

END GROUP;

 

BEGIN GROUP IMS_SEG;

DESCRIPTION COBOL ./IMSSEG/HREMPLDB/EMPLOYEE.cob AS EMPLOYEE   -- User friendly alias

                FOR SEGMENT EMPLOYEE

                IN DATABASE HREMPLDB

;

DESCRIPTION COBOL ./IMSSEG/HREMPLDB/ANNULREV.cob AS ANNULREV    -- User friendly alias

                FOR SEGMENT ANNULREV

                IN DATABASE HREMPLDB

;

END GROUP;

 

----------------------------------------------------------------------

--       Target Descriptions

----------------------------------------------------------------------

BEGIN GROUP ORA_DDL;

 

DESCRIPTION COBOL ./IMSSEG/HREMPLDB/EMPLOYEE.cob AS EMPLOYEE   -- User friendly alias

                FOR SEGMENT EMPLOYEE

                IN DATABASE HREMPLDB

;

DESCRIPTION COBOL ./IMSSEG/HREMPLDB/ANNULREV.cob AS ANNULREV    -- User friendly alias

                FOR SEGMENT ANNULREV

                IN DATABASE HREMPLDB

;

END GROUP;

 

----------------------------------------------------------------------

--       Datastore Section

----------------------------------------------------------------------

----------------------------------------------------------------------

--       Source Datastore

----------------------------------------------------------------------

DATASTORE cdc://%(SHOST):%(SPORT)/%(PUBNM)/%(ENGINE)

        OF IMSCDC

        AS CDCIN

        DESCRIBED BY GROUP IMS_SEG

;

----------------------------------------------------------------------

--       Target Datastore(s)

----------------------------------------------------------------------

DATASTORE RDBMS

        OF RELATIONAL

              FORCE QUALIFIER %(COUNTRY)

        AS TARGET

        DESCRIBED BY GROUP ORA_DDL

;

----------------------------------------------------------------------

--       Field Specification Section

----------------------------------------------------------------------

DATEFORMAT 'ISOIBM';

 

----------------------------------------------------------------------

--       Procedure Section

----------------------------------------------------------------------

CREATE PROC P_EMPLOYEE AS SELECT

{

  IF EMPLOYEE.BONUS > '5000'

  {

REPLICATE(TARGET, EMPLOYEE)

  }

}

FROM CDCIN;

 

----------------------------------------------------------------------

--       Main Section

----------------------------------------------------------------------

PROCESS INTO TARGET

SELECT

{

 

CASE IMSSEGNAME(CDCIN)

WHEN 'EMPLOYEE' CALLPROC(P_EMPLOYEE)

WHEN 'ANNULREV' REPLICATE(TARGET, ANNULREV)

}

FROM CDCIN;