CDPzを利用したz/OS-ELK連携 - (1)セットアップ編 (CDPz V2.1)

# はじめに
以前、z/OSのシステム管理系の情報をOSSであるELKスタックに取り込んで管理できるといいんじゃないかということで、スクリプト作ってSYSLOGを取り込んだりしてみました。
この辺↓
- [z/OSの新しい管理方法を探る - (1)DAパネル情報のElasticsearchへの取り込み](https://qiita.com/tomotagwork/items/362b0db5d4479eecebac)
- [z/OSの新しい管理方法を探る - (2)SYSLOGのElasticsearchへの取り込み](https://qiita.com/tomotagwork/items/867dd353cf8c985eab76)
- [z/OSの新しい管理方法を探る - (3)CICSヒストリカルデータのElasticsearchへの取り込み](https://qiita.com/tomotagwork/items/c7cd4b9e5ffcb8ede0f1)

これは、なるべく追加の製品機能を使わずにz/OS上のログ系の情報をElasticsearchに情報を取り込んでみるという試みでした。

実は、z/OS上の管理情報を分析系のプラットフォームに流し込むのをサポートしてくれる、CDPz(Common Data Provider for System z)という有償製品があります。今回は、上の記事の発展形ということで、このCDPzなるものを使ってどういったことができるのかを試していこうと思います。

※色々試している最中にCDPzの新しいバージョン(V2.1)が出てしまったので、CDPz V2.1をインストールし直して記事も新しいエントリー作成し直しました。
CDPz V1.1レベルの古い記事はこちら => [CDPzを利用したz/OS-ELK連携: セットアップ編 (CDPz V1.1)](https://qiita.com/tomotagwork/items/9fb6a7ec95e9baf34841)

## 関連記事
[CDPzを利用したz/OS-ELK連携 - (1)セットアップ編](https://qiita.com/tomotagwork/private/f4fbb6d3e8b6ad084b34)
[CDPzを利用したz/OS-ELK連携 - (2)SYSLOG取得編](https://qiita.com/tomotagwork/private/5cd1d97dadaaf999c9cb)
[CDPzを利用したz/OS-ELK連携 - (3)SMF-バッチ編](https://qiita.com/tomotagwork/private/629c8bbbc95f9733e297)
[CDPzを利用したz/OS-ELK連携 - (4)SMF-リアルタイム編](https://qiita.com/tomotagwork/private/b339779769f7a5092b5a)
[CDPzを利用したz/OS-ELK連携 - (5)カスタマイズ-共通](https://qiita.com/tomotagwork/private/fe76619e8880956aa0e0)
[CDPzを利用したz/OS-ELK連携 - (6)カスタマイズ-SYSLOG](https://qiita.com/tomotagwork/private/b8e9fad37730703ef1a7)
[CDPzを利用したz/OS-ELK連携 - (7)カスタマイズ-CICS](https://qiita.com/tomotagwork/private/38091c17da9b13a4ee45)
[CDPzを利用したz/OS-ELK連携 - (8)カスタマイズ-RMF Monitor III](https://qiita.com/tomotagwork/private/7be3c192e5e1c1d7e3bc)
[CDPzを利用したz/OS-ELK連携 - (9)カスタマイズ-fluentdの利用](https://qiita.com/tomotagwork/private/241369db2958fdb0fcf4)

# やりたいこと
z/OSのSYSLOGや、SMFの情報をElasticsearchに取り込んで、Kibanaで楽に可視化したい！
CDPzは、SYSLOGやJOBLOG, SMFのデータなどを、データ分析基盤(SplunkやELK)に連携する機能が提供されているらしいです！
ミドルウェアのパフォーマンステスト結果なんかを分析/レポーティングするのが楽になったらうれしいな。



# 全体像

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/b76e4a32-360e-c9b1-01fc-a116020bcee9.png)
(箱の下の数字は各コンポーネントがListenするポート番号)
※今回テストで使用する環境はHost=>ELKサーバー(Linux)へのTCPコネクションが張れない環境なので、テスト時に一時的にsshポートフォワードをする想定にしています。

CDPzは、上の全体像に図示した通り、主に4つのコンポーネントから成ります。
(1) Configuration Tool: 構成ツール
(2) Data Streamer: 収集したデータを別の分析基盤に送る
(3) Log Forwder: データ収集機能の1つ。主にSyslogやJobLogなどのデータを収集。
(4) System Data Engine: データ収集機能の1つ。SMSのデータを収集。

# CDPz導入

CDPz V2.1を導入します。
参考: [ProgramDirectory](https://www.ibm.com/support/knowledgecenter/SSGE3R_2.1.0/GI13-5204-00.pdf?view=kc)

FMID: 
HHBO210 - Z Common Data Provider V2 Base
HHBO21L - Z Common Data Provider V2 Liberty

※CDPzではGUIのConfig Toolが提供されていますが、そのツールはz/OSMFのプラグインとして動作させるものと、Liberty上のアプリケーションとして動作させるものの、2パターン用意されているようです。"HHBO21L"というのは後者Liberty用のモジュールを提供するFMIDのようです。
今回はz/OSMFを使う想定なので、HHBO210の方をインストールすればよさそうです。

この辺の手順は基本的にSMP/Eを使う一般的な製品導入手順とあまり変わらないのですが一応ログを残しておきます。

## 下準備
使用するVolはZSPK01というボリュームを使用し、CDPZ02というHLQ以下に各種データセットを作成することにします。

### UCAT作成

```
//DEFUCAT  JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//*-----------------------------------------------------
//STEP    EXEC PGM=IDCAMS
//SYSPRINT DD  SYSOUT=*
//SYSIN DD *
 DEFINE USERCATALOG (      +
              NAME(UCAT.CDPZ02)   +
              VOL(ZSPK01)         +
              BUFSP(8192)        +
              CYL(20 10)         +
              ICFCATALOG         +
              )
/*
```

### Alias作成

```
//DEFALIAS JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//*-----------------------------------------------------
//STEP    EXEC PGM=IDCAMS
//SYSPRINT DD  SYSOUT=*
//SYSIN DD *
 DEF ALIAS(NAME(CDPZ02) RELATE(UCAT.CDPZ02))
/*
```

### zFS準備

インストーラーそのものを配置したり、インストールの結果としてUSS上にファイルが作成されたりするので、その配置先としてのzFSを用意し、マウントしておきます。

参考: [Installing Z Common Data Provider](https://www.ibm.com/support/knowledgecenter/en/SSGE3R_2.1.0/cdp_install.html)
上の情報によると、```/usr/lpp/IBM/zcdp/v2r1m0/```が使われるようなので、このディレクトリ下を別ファイルシステムとして作成し、マウントすることにします。

USS上に```/usr/lpp/IBM/zcdp/v2r1m0/```ディレクトリを作成します。

```
[CICS004@EPLEX1:/V1R11/usr/lpp/IBM/zcdp/v2r1m0] pwd
/V1R11/usr/lpp/IBM/zcdp/v2r1m0
```

CDPZ02.ZFSという名前で1200シリンダー(=18000トラック≒1GB)のzFSを作成し、マウント

```
//ZFSCRE   JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//*-----------------------------------------------------
//*********************************************************************
//ALLOCZ   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD  *
   DEFINE CLUSTER(NAME(CDPZ02.ZFS) -
   LINEAR CYLINDERS(1200 120) SHAREOPTIONS(3) VOLUMES(ZSPK01))
//*********************************************************************
//*        CHECK FOR CONDITION CODE 0 - JOB ENDS IF RC IS NOT 0       *
//*********************************************************************
//RCCHCK   IF ALLOCZ.RC=0 THEN
//*********************************************************************
//* FORMAT THIS STEP FORMATS YOUR NEWLY CREATED ZFS DATA SET.         *
//*        THIS STEP SHOULD COMPLETE WITH A RETURN CODE OF 0.         *
//*********************************************************************
//FORMAT EXEC   PGM=IOEAGFMT,REGION=0M,
//       PARM=('-aggregate CDPZ02.ZFS -compat')
//*  STEPLIB  DD DSN=IOE.SIOELMOD,DISP=SHR
//SYSPRINT DD     SYSOUT=*
//*********************************************************************
//*  MOUNT THIS STEP MOUNTS YOUR NEWLY CREATED ZFS FILE SYSTEM        *
//*  USING THE AGGRGROW PARAMETER.                                    *
//*********************************************************************
//MOUNT    EXEC PGM=IKJEFT01
//SYSTSPRT DD   SYSOUT=*
//SYSPRINT DD   SYSOUT=*
//SYSTSIN  DD   *
  MOUNT FILESYSTEM('CDPZ02.ZFS') +
     TYPE(ZFS) MODE(RDWR) PARM('AGGRGROW') +
     MOUNTPOINT('/usr/lpp/IBM/zcdp/v2r1m0')
//RCCHCK   ENDIF
```

確認

```
[CICS004@EPLEX1:/u/cics004/JCL/CDPZ21] df | grep zcdp
/V1R11/usr/lpp/IBM/zcdp/v2r1m0 (CDPZ02.ZFS)              1710318/1728000 4294967292 Available
```

IPL後の自動マウント用に、BPXPRMxxにMOUNT定義を追加しておく。

```xxx:BPXPRMFS
MOUNT FILESYSTEM('CDPZ02.ZFS')                
      MOUNTPOINT('/usr/lpp/IBM/zcdp/v2r1m0')  
      TYPE(ZFS) MODE(RDWR)                    
```

## インストール作業

インストーラーはテープなどのメディアではなく圧縮形式のファイルをダウンロードする方式で入手している前提です(Windows PC上に入手している状態)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/5848305a-ea7d-c1d0-41d3-9cdde34de8ad.png)

### FTP
インストーラーをファイルで入手しているので、それをUSS上にアップします。
USS上にインストーラーを配置するディレクトリ```/usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802```を作成します(上で作成したzFS配下)。
<font color="red">※本来であれば、インストーラーを配置する先は製品が導入されるディレクトリとは分けて別zFSで用意するのがよいですが、テスト環境だしファイルシステム分けるのが面倒だったので、ここでは同じzFS上にのせちゃってます。あまりよろしくない構成ですので注意！</font>

WindowsからFTPでターゲットとなるz/OSのUSSに各ファイルを転送します。

```
C:\y\Inst_Image\CDPz\CDPz21\CBPDO_Material>ftp eplexa
eplexa に接続しました。
220-FTP Server (user 'xxx')
220
500-Syntax error -- unknown command
500
ユーザー (eplexa:(none)): CICS004
331-Password:
331
パスワード:
230-220-FTPD1 IBM FTP CS V2R3 at EPLEX1, 02:42:26 on 2020-01-06.
230-CICS004 is logged on.  Working directory is "CICS004.".
230
ftp> cd /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802
250 HFS directory /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802 is the current working directory
ftp> bin
200 Representation type is Image
ftp> prompt off
対話モード オフ。
ftp> mput *.*
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/GIMPAF.XML
250 Transfer completed successfully.
ftp: 16640 バイトが送信されました 0.01秒 1664.00KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/GIMPAF.XSL
250 Transfer completed successfully.
ftp: 5040 バイトが送信されました 0.00秒 5040000.00KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/S0001.CSP.STP54802.DOCLIB.pax.Z
250 Transfer completed successfully.
ftp: 32256 バイトが送信されました 0.00秒 32256000.00KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/S0002.CSP.STP54802.RIMLIB.pax.Z
250 Transfer completed successfully.
ftp: 32256 バイトが送信されました 0.00秒 32256000.00KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/S0003.CSP.STP54802.PGMDIR.pax.Z
250 Transfer completed successfully.
ftp: 290304 バイトが送信されました 0.04秒 7257.60KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/S0004.CSP.CSP.README
250 Transfer completed successfully.
ftp: 11826 バイトが送信されました 0.00秒 11826000.00KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/S0024.CSP.STP54802.GIMUNZIP
250 Transfer completed successfully.
ftp: 6399 バイトが送信されました 0.01秒 639.90KB/秒。
ローカル ファイル SMPHOLD を開けません。
ローカル ファイル SMPPTFIN を開けません。
ローカル ファイル SMPRELF を開けません。

ftp> mkdir SMPHOLD
257 "/usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPHOLD" created.
ftp> cd SMPHOLD
250 HFS directory /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPHOLD is the current working directory
ftp> mput SMPHOLD\*.*
ローカル ファイル SMPHOLD\. を開けません。
ローカル ファイル SMPHOLD\.. を開けません。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPHOLD/S0005.CSP.STP54802.HOLDDATA.pax.Z
250 Transfer completed successfully.
ftp: 1419264 バイトが送信されました 0.12秒 11729.45KB/秒。

ftp> cd ..
250 HFS directory /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802 is the current working directory
ftp> mkdir SMPPTFIN
257 "/usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPPTFIN" created.
ftp> cd SMPPTFIN
250 HFS directory /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPPTFIN is the current working directory
ftp> mput SMPPTFIN\*.*
ローカル ファイル SMPPTFIN\. を開けません。
ローカル ファイル SMPPTFIN\.. を開けません。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPPTFIN/S0006.CBCACHE.HHBO21L.SMPMCS.pax.Z
250 Transfer completed successfully.
ftp: 32256 バイトが送信されました 0.01秒 3225.60KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPPTFIN/S0007.CBCACHE.HHBO210.SMPMCS.pax.Z
250 Transfer completed successfully.
ftp: 32256 バイトが送信されました 0.01秒 3225.60KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPPTFIN/S0008.CBCACHE.HHBO210.PTF.UJ01103.pax.Z
250 Transfer completed successfully.
ftp: 20256768 バイトが送信されました 1.47秒 13770.75KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPPTFIN/S0009.CBCACHE.HHBO210.PTF.UJ01319.pax.Z
250 Transfer completed successfully.
ftp: 20224512 バイトが送信されました 1.47秒 13758.17KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPPTFIN/S0010.CBCACHE.HHBO210.PTF.UJ01485.pax.Z
250 Transfer completed successfully.
ftp: 26127360 バイトが送信されました 1.98秒 13195.64KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPPTFIN/S0011.CSP.STP54802.ASSIGNS.pax.Z
250 Transfer completed successfully.
ftp: 1322496 バイトが送信されました 0.10秒 13094.02KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPPTFIN/S0012.CSP.STP54802.PRODDATA.pax.Z
250 Transfer completed successfully.
ftp: 32256 バイトが送信されました 0.01秒 3225.60KB/秒。

ftp> cd ..
250 HFS directory /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802 is the current working directory
ftp> mkdir SMPRELF
257 "/usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF" created.
ftp> cd SMPRELF
250 HFS directory /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF is the current working directory
ftp> mput SMPRELF\*.*
ローカル ファイル SMPRELF\. を開けません。
ローカル ファイル SMPRELF\.. を開けません。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF/CBCACHE.IBM.HHBO210.F1.pax.Z
250 Transfer completed successfully.
ftp: 32256 バイトが送信されました 0.01秒 4032.00KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF/CBCACHE.IBM.HHBO210.F2.pax.Z
250 Transfer completed successfully.
ftp: 32256 バイトが送信されました 0.01秒 3225.60KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF/CBCACHE.IBM.HHBO210.F3.pax.Z
250 Transfer completed successfully.
ftp: 64512 バイトが送信されました 0.01秒 6451.20KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF/CBCACHE.IBM.HHBO210.F4.pax.Z
250 Transfer completed successfully.
ftp: 741888 バイトが送信されました 0.07秒 10598.40KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF/CBCACHE.IBM.HHBO210.F5.pax.Z
250 Transfer completed successfully.
ftp: 2161152 バイトが送信されました 0.18秒 12006.40KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF/CBCACHE.IBM.HHBO210.F6.pax.Z
250 Transfer completed successfully.
ftp: 32256 バイトが送信されました 0.00秒 32256000.00KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF/CBCACHE.IBM.HHBO210.F7.pax.Z
250 Transfer completed successfully.
ftp: 419328 バイトが送信されました 0.03秒 13977.60KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF/CBCACHE.IBM.HHBO210.F8.pax.Z
250 Transfer completed successfully.
ftp: 24353280 バイトが送信されました 2.00秒 12170.55KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF/CBCACHE.IBM.HHBO210.F9.pax.Z
250 Transfer completed successfully.
ftp: 32256 バイトが送信されました 0.00秒 32256000.00KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF/CBCACHE.IBM.HHBO21L.F1.pax.Z
250 Transfer completed successfully.
ftp: 32256 バイトが送信されました 0.01秒 3225.60KB/秒。
200 Port request OK.
125 Storing data set /usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF/CBCACHE.IBM.HHBO21L.F2.pax.Z
250 Transfer completed successfully.
ftp: 293594112 バイトが送信されました 23.07秒 12724.02KB/秒。
```

### DOCLIB, RIMLIB, PGMDIR 解凍

ダウンロードしたファイル群に含まれる```S0004.CSP.CSP.README```の記述を参考に...

S0024.CSP.STP54802.GIMUNZIPに提供されているUNZIPのサンプルJCLを編集して実行します。

```
//GIMUNZIP JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),
//             USER=IBMUSER,
//             PASSWORD=xxxxx
//*                                                           /*JCTRL*/
//*
//* 5751-CS3 COPYRIGHT IBM CORPORATION 1985, 2006
//*
//*
//********************************************************************
//*          DO NOT TURN CAPS ON.  THIS JOB CONTAINS CASE
//*                    SENSITIVE CONTROL CARDS.
//********************************************************************
//*
//* DOC: This job extracts CBPDO non-SMP/E files from archives
//*      created by the GIMZIP program
//*
//*       Change the JOB statement as required to match
//*       your installation's requirements.
//*
//* NOTE 1: Change the HASH value to YES if you require
//*         SHA-1 hash checking for the archive files.
//*
//* NOTE 2: If you are using SMP/E level 34.09 or higher,
//*         uncomment the SMPJHOME and SMPCPATH DD
//*         Statements.  If you are at SMP/E 3.4, it is
//*         recommended you be at least 34.09.
//*
//* NOTE 3: Change the directory name on the SMPDIR DD to
//*         to match your system's SMPNTS directory name.
//*         STP54802 is the subdirectory id
//*         assigned to your order during the RECEIVE
//*         FROMNETWORK (RFNJOB).
//*
//* NOTE 4: Replace volser on each volume control statement
//*         with a valid volume serial number.  Deleting this
//*         control statement will cause SYSALLDA to be used
//*         as the unit type.
//*
//* NOTE 5: Replace hlq on each newname control statement
//*         with a valid data set high level qualifer.
//*
//*
//*       Expect RC 00
//*
//*------------------------------------------------------------
//UNZIP    EXEC PGM=GIMUNZIP,REGION=0M,PARM='HASH=NO'   <=== NOTE 1
//SYSUT3   DD UNIT=SYSALLDA,SPACE=(CYL,(50,10))
//SYSUT4   DD UNIT=SYSALLDA,SPACE=(CYL,(25,5))
//*SMPJHOME DD PATH='/usr/lpp/java/J1.4/'             <===NOTE 2
//*SMPCPATH DD PATH='/usr/lpp/smp/classes/'           <===NOTE 2
//SMPOUT   DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SMPDIR   DD PATH='/usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802',
//            PATHDISP=KEEP
//SYSIN    DD *
<GIMUNZIP>
<ARCHDEF
name="S0001.CSP.STP54802.DOCLIB.pax.Z"
volume="ZSPK01"
newname="CDPZ02.DOCLIB">
</ARCHDEF>
<ARCHDEF
name="S0002.CSP.STP54802.RIMLIB.pax.Z"
volume="ZSPK01"
newname="CDPZ02.RIMLIB">
</ARCHDEF>
<ARCHDEF
name="S0003.CSP.STP54802.PGMDIR.pax.Z"
volume="ZSPK01"
newname="CDPZ02.PGMDIR">
</ARCHDEF>
</GIMUNZIP>
/*
```

### RELFILE 解凍

展開されたDPZ02.DOCLIB(MEMOEXT) の記述を参考に...

CDPZ02.RIMLIB(UNZIPJCL)に提供されるサンプルJCLを編集して、RELFILEを解凍します。

```
//UNZIPJCL JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),
//             USER=IBMUSER,
//             PASSWORD=xxxxx
//*
//*
//* 5751-CS3 COPYRIGHT IBM CORPORATION 1985, 2006
//*
//*
//*                                                           /*JCTRL*/
//**********************************************************
//*  DO NOT TURN CAPS ON AS PATH NAMES AND SMP/E PARAMETERS
//*  ARE CASE SENSITIVE.
//**********************************************************
//*
//* DOC: This job extracts a products relfile from archives
//*      created by the GIMZIP program
//*
//*       Change the JOB statement as required to match
//*       your installation's requirements.
//*
//* NOTE 1: Change the HASH value to YES if you require
//*         SHA-1 hash checking for the archive files
//*
//* NOTE 2: If you are using SMP/E level 34.09 or higher,
//*         uncomment the SMPJHOME and SMPCPATH DD
//*         Statements.  If you are at SMP/E 3.4, it is
//*         recommended you be at least 34.09.
//*
//* NOTE 3: Change the directory name on the SMPDIR DD to
//*         to match your system's SMPNTS directory name.
//*         STP54802 is the subdirectory id
//*         assigned to your order during the RECEIVE
//*         FROMNETWORK (RFNJOB).
//*
//* NOTE 4: Update parm with the name of the relfile you want
//*         to unload from the SMPRELF directory
//*
//* NOTE 5: Replace volser on the volume control statement
//*         with a valid volume serial number.  Deleting this
//*         control statement will cause SYSALLDA to be used
//*         as the unit type.
//*
//* NOTE 6: Replace hlq.sample.jobs on the newname control
//*         statement with a valid data set name.
//*
//*
//*       Expect RC 00
//*
//*------------------------------------------------------------
//UNZIP    EXEC PGM=GIMUNZIP,REGION=0M,PARM='HASH=NO'
//SYSUT3   DD UNIT=SYSALLDA,SPACE=(CYL,(10,10))
//SYSUT4   DD UNIT=SYSALLDA,SPACE=(CYL,(15,5))
//*SMPJHOME DD PATH='/usr/lpp/java/J1.4/'           <===NOTE 2
//*SMPCPATH DD PATH='/usr/lpp/smp/classes/'         <===NOTE 2
//SMPOUT   DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SMPDIR   DD PATH='/usr/lpp/IBM/zcdp/v2r1m0/inst/STP54802/SMPRELF/',
//            PATHDISP=KEEP
//SYSIN    DD *
<GIMUNZIP>
<ARCHDEF
name="CBCACHE.IBM.HHBO210.F1.pax.Z"
volume="ZSPK01"
newname="CDPZ02.IBM.HHBO210.F1">
</ARCHDEF>
<ARCHDEF
name="CBCACHE.IBM.HHBO210.F2.pax.Z"
volume="ZSPK01"
newname="CDPZ02.IBM.HHBO210.F2">
</ARCHDEF>
<ARCHDEF
name="CBCACHE.IBM.HHBO210.F3.pax.Z"
volume="ZSPK01"
newname="CDPZ02.IBM.HHBO210.F3">
</ARCHDEF>
<ARCHDEF
name="CBCACHE.IBM.HHBO210.F4.pax.Z"
volume="ZSPK01"
newname="CDPZ02.IBM.HHBO210.F4">
</ARCHDEF>
<ARCHDEF
name="CBCACHE.IBM.HHBO210.F5.pax.Z"
volume="ZSPK01"
newname="CDPZ02.IBM.HHBO210.F5">
</ARCHDEF>
<ARCHDEF
name="CBCACHE.IBM.HHBO210.F6.pax.Z"
volume="ZSPK01"
newname="CDPZ02.IBM.HHBO210.F6">
</ARCHDEF>
<ARCHDEF
name="CBCACHE.IBM.HHBO210.F7.pax.Z"
volume="ZSPK01"
newname="CDPZ02.IBM.HHBO210.F7">
</ARCHDEF>
<ARCHDEF
name="CBCACHE.IBM.HHBO210.F8.pax.Z"
volume="ZSPK01"
newname="CDPZ02.IBM.HHBO210.F8">
</ARCHDEF>
<ARCHDEF
name="CBCACHE.IBM.HHBO210.F9.pax.Z"
volume="ZSPK01"
newname="CDPZ02.IBM.HHBO210.F9">
</ARCHDEF>
<ARCHDEF
name="CBCACHE.IBM.HHBO21L.F1.pax.Z"
volume="ZSPK01"
newname="CDPZ02.IBM.HHBO21L.F1">
</ARCHDEF>
<ARCHDEF
name="CBCACHE.IBM.HHBO21L.F2.pax.Z"
volume="ZSPK01"
newname="CDPZ02.IBM.HHBO21L.F2">
</ARCHDEF>
</GIMUNZIP>
/*
```

結果確認。以下のような形で展開される。

```
DSLIST - Data Sets Matching CDPZ02                                 Row 1 of 17 
                                                                               
Command - Enter "/" to select action                  Message           Volume 
-------------------------------------------------------------------------------
         CDPZ02                                                         *ALIAS 
         CDPZ02.DOCLIB                                                  ZSPK01 
         CDPZ02.IBM.HHBO21L.F1                                          ZSPK01 
         CDPZ02.IBM.HHBO21L.F2                                          ZSPK01 
         CDPZ02.IBM.HHBO210.F1                                          ZSPK01 
         CDPZ02.IBM.HHBO210.F2                                          ZSPK01 
         CDPZ02.IBM.HHBO210.F3                                          ZSPK01 
         CDPZ02.IBM.HHBO210.F4                                          ZSPK01 
         CDPZ02.IBM.HHBO210.F5                                          ZSPK01 
         CDPZ02.IBM.HHBO210.F6                                          ZSPK01 
         CDPZ02.IBM.HHBO210.F7                                          ZSPK01 
         CDPZ02.IBM.HHBO210.F8                                          ZSPK01 
         CDPZ02.IBM.HHBO210.F9                                          ZSPK01 
         CDPZ02.PGMDIR                                                  ZSPK01 
         CDPZ02.RIMLIB                                                  ZSPK01 
         CDPZ02.ZFS                                                     *VSAM* 
         CDPZ02.ZFS.DATA                                                ZSPK01 
```

### CSIデータセット作成
[ProgramDirectory](https://www.ibm.com/support/knowledgecenter/SSGE3R_2.1.0/GI13-5204-00.pdf?view=kc)の記述を参考に...

CDPZ02.IBM.HHBO210.F2(HBO0SMPE) をコピーして編集し、Submit。

<font color="red">
※提供されているサンプルをそのまま使ったのですが、後のRECEIVEを実行したときに、SMPPTSデータセットがパンクしました。
以下のエラー。イケてない...。
IEC032I E37-04,IFG0554P,RCVPDO,SMPER1,SMPPTS,5187,ZSPK01,CDPZ02.SMPPTS
ということで、SMPPTS部分は以下のようにサイズを変更して流しなおしました。
</font>

```xxx:修正前
//SMPPTS   DD DSN=CDPZ02.SMPPTS,DISP=(NEW,CATLG),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//            SPACE=(3120,(12000,200,300),,,ROUND)
```

```xxx:修正後
//SMPPTS   DD DSN=CDPZ02.SMPPTS,DISP=(NEW,CATLG),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//            SPACE=(3120,(18000,300,300),,,ROUND)
```


JCL全体はこちら。

```
//HBO0SMPE JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//*
//**************************************************************/
//* JOB NAME: HBO0SMPE                                         */
//*                                                            */
//*     LICENSED MATERIALS - PROPERTY OF IBM                   */
//*     5698-ABN                                               */
//*     COPYRIGHT IBM CORP 2019  ALL RIGHTS RESERVED.          */
//*                                                            */
//*     US GOVERNMENT USERS RESTRICTED RIGHTS -                */
//*     USE, DUPLICATION OR DISCLOSURE RESTRICTED              */
//*     BY GSA ADP SCHEDULE CONTRACT WITH IBM CORP.            */
//*                                                            */
//* DESCRIPTION: THIS JCL ALLOCATES SMP/E DATA SETS,           */
//*              DEFINES NECESSARY ZONES TO YOUR SYSTEM, AND   */
//*              DEFINES DDDEF ENTRIES TO PROVIDE SMP/E        */
//*              WITH INFORMATION IT NEEDS TO ALLOCATE         */
//*              PERMANENT, TEMPORARY, SYSOUT, AND WORK        */
//*              DATA SETS FOR                                 */
//*              IBM  Z COMMON DATA PROVIDER V2.1.0            */
//*                                                            */
//*              FUTURE JOBS WILL USE THE VALUES YOU SET HERE  */
//*              SO IF YOU USE THIS JOB KEEP IT FOR REFERENCE. */
//*                                                            */
//*                                                            */
//* CAUTION:     THIS JOB REQUIRES UPDATES BEFORE SUBMITTING.  */
//*                                                            */
//*                                                            */
//* NOTES:                                                     */
//*  1) CHANGE THE JOB CARD TO MEET YOUR SYSTEM'S REQUIREMENTS.*/
//*                                                            */
//*  2) YOU MUST CHANGE CDPZ02 TO YOUR SMPE HLQ.  THE       */
//*     SAFEST WAY TO DO THIS IS DOING A GLOBAL CHANGE         */
//*     ON THE COMMAND LINE:                                   */
//*                                                            */
//*            "C CDPZ02 MYPREFIX ALL"                      */
//*                                                            */
//*     THIS "CHANGE ALL" WILL TAKE CARE OF ALL OF THE         */
//*     SMP/E HLQ INSTANCES WITH ONE COMMAND.                  */
//*                                                            */
//*  3) YOU WILL NEED TO CHANGE THE ZSPK01 TO THE VOLUME     */
//*     ON WHICH YOU WISH TO CREATE THE SMP/E DATASETS         */
//*     DO A CHANGE ON THE COMMAND LINE:                       */
//*                                                            */
//*            "C ZSPK01 MYVOLUME ALL"                       */
//*                                                            */
//*     THIS "CHANGE ALL" WILL TAKE CARE OF ALL THE            */
//*     VOLUME INSTANCES WITH ONE COMMAND.                     */
//*                                                            */
//*  4) YOU WILL NEED TO CHANGE THE SYSALLDA TO THE UNIT TYPE    */
//*     ON WHICH YOU WISH TO CREATE THE SMP/E DATASETS         */
//*     DO A CHANGE ON THE COMMAND LINE:                       */
//*                                                            */
//*            "C SYSALLDA MYUNITTYPE ALL"                       */
//*                                                            */
//*     THIS "CHANGE ALL" WILL TAKE CARE OF ALL THE            */
//*     UNIT INSTANCES WITH ONE COMMAND.                       */
//*                                                            */
//**************************************************************/
//*
//**************************************************************/
//*               DEFINE THE CSI DATA SET                      */
//**************************************************************/
//*
//DEFINE   EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//CSIVOL   DD UNIT=SYSALLDA,
//            VOL=SER=ZSPK01,
//            DISP=SHR
//SYSIN    DD *
      DEFINE CLUSTER                       -
             (NAME(CDPZ02.GLOBAL.CSI)    -
              FREESPACE(10,5)              -
              KEYS(24 0)                   -
              RECORDSIZE(24 143)           -
              SHAREOPTIONS(2 3)            -
              UNIQUE                       -
              VOLUMES(ZSPK01)              -
             )                             -
          DATA                             -
             (NAME(CDPZ02.GLOBAL.CSI.DATA) -
              CONTROLINTERVALSIZE(8192)    -
              CYLINDERS(50 5)              -
             )                             -
          INDEX                            -
             (NAME(CDPZ02.GLOBAL.CSI.INDEX) -
              CONTROLINTERVALSIZE(4096)    -
              CYLINDERS(20 2)              -
              IMBED                        -
             )
/*
//*
//**************************************************************/
//*                    PRIME CSI DATA SET                      */
//**************************************************************/
//*
//PRIMEIT  EXEC PGM=IDCAMS,COND=(9,LT)
//SYSPRINT DD SYSOUT=*
//SMPCSI   DD DSN=CDPZ02.GLOBAL.CSI,
//            DISP=OLD
//ZPOOL    DD DSN=SYS1.MACLIB(GIMZPOOL),
//            DISP=SHR
//SYSIN    DD *
      REPRO OUTFILE(SMPCSI) INFILE(ZPOOL)
/*
//*
//**************************************************************/
//*               INITIALIZE CSI DATA SET                      */
//**************************************************************/
//*
//GZONEINI EXEC PGM=GIMSMP,REGION=0M
//SYSPRINT  DD SYSOUT=*
//SMPCSI    DD DSN=CDPZ02.GLOBAL.CSI,
//             DISP=OLD
//SMPLIST   DD SYSOUT=*
//*
//**************************************************************/
//*                   SMP DATA SETS                            */
//**************************************************************/
//*
//SMPLOG   DD DSN=CDPZ02.SMPLOG,DISP=(NEW,CATLG),
//            UNIT=SYSALLDA,VOL=SER=ZSPK01,
//            DCB=(RECFM=VB,LRECL=510,BLKSIZE=0),
//            SPACE=(3200,(6000,3000),,,ROUND)
//SMPLOGA  DD DSN=CDPZ02.SMPLOGA,DISP=(NEW,CATLG),
//            UNIT=SYSALLDA,VOL=SER=ZSPK01,
//            DCB=(RECFM=VB,LRECL=510,BLKSIZE=0),
//            SPACE=(3200,(6000,3000),,,ROUND)
//SMPMTS   DD DSN=CDPZ02.SMPMTS,DISP=(NEW,CATLG),
//            UNIT=SYSALLDA,VOL=SER=ZSPK01,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//            SPACE=(3120,(60,20,60),,,ROUND)
//SMPPTS   DD DSN=CDPZ02.SMPPTS,DISP=(NEW,CATLG),
//            UNIT=SYSALLDA,VOL=SER=ZSPK01,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//            SPACE=(3120,(18000,300,300),,,ROUND)
//SMPSCDS  DD DSN=CDPZ02.SMPSCDS,DISP=(NEW,CATLG),
//            UNIT=SYSALLDA,VOL=SER=ZSPK01,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//            SPACE=(3120,(400,100,300),,,ROUND)
//SMPSTS   DD DSN=CDPZ02.SMPSTS,DISP=(NEW,CATLG),
//            UNIT=SYSALLDA,VOL=SER=ZSPK01,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//            SPACE=(3120,(400,100,150),,,ROUND)
//SMPLTS   DD DSN=CDPZ02.SMPLTS,DISP=(NEW,CATLG),
//            DSNTYPE=LIBRARY,
//            UNIT=SYSALLDA,VOL=SER=ZSPK01,
//            DCB=(RECFM=U,LRECL=0,BLKSIZE=32760),
//            SPACE=(6144,(850,250,150),,,ROUND)
//SMPWRK1  DD UNIT=SYSALLDA,SPACE=(CYL,(200,10,100)),DCB=BLKSIZE=6160
//SMPWRK2  DD UNIT=SYSALLDA,SPACE=(CYL,(200,10,100)),DCB=BLKSIZE=6160
//SMPWRK3  DD UNIT=SYSALLDA,SPACE=(CYL,(200,10,100)),DCB=BLKSIZE=3200
//SMPWRK4  DD UNIT=SYSALLDA,SPACE=(CYL,(200,10,100)),DCB=BLKSIZE=3200
//SMPWRK6  DD UNIT=SYSALLDA,SPACE=(CYL,(200,10,100)),DCB=BLKSIZE=3200
//SYSUT1   DD UNIT=SYSALLDA,SPACE=(CYL,(2,1))
//SYSUT2   DD UNIT=SYSALLDA,SPACE=(CYL,(2,1))
//SYSUT3   DD UNIT=SYSALLDA,SPACE=(CYL,(2,1))
//SYSUT4   DD UNIT=SYSALLDA,SPACE=(CYL,(2,1))
//*
//**************************************************************/
//*              ALLOCATION AND INITIALIZATION                 */
//**************************************************************/
//*
//SMPCNTL  DD *
  SET BDY(GLOBAL).
   UCLIN .
    ADD OPTIONS(ZCDPOPT)
               DSPREFIX(CDPZ02)
               DSSPACE(7500,500,200) .
    ADD GLOBALZONE
            SREL(Z038)
            OPTIONS(ZCDPOPT) .
    ENDUCL.
    SET BDY(GLOBAL).
    UCLIN.
       ADD GZONE
           ZONEINDEX(
              (TZONE,CDPZ02.GLOBAL.CSI,TARGET)
                    )   .
       ADD GZONE
           ZONEINDEX(
              (DZONE,CDPZ02.GLOBAL.CSI,DLIB)
                    )   .
   ENDUCL.
  SET BDY(TZONE).
   UCLIN.
    ADD TARGETZONE(TZONE)
        OPTIONS(ZCDPOPT)
        SREL(Z038)
        RELATED(DZONE).
   ENDUCL.
  SET BDY(DZONE).
   UCLIN.
    ADD DLIBZONE(DZONE)
        ACCJCLIN
        OPTIONS(ZCDPOPT)
        SREL(Z038)
        RELATED(TZONE).
   ENDUCL.
  LIST ALLZONES.
/*
```

以下のデータセットが作成されたことを確認。

```
CDPZ02.GLOBAL.CSI                                              *VSAM* 
CDPZ02.GLOBAL.CSI.DATA                                         ZSPK01 
CDPZ02.GLOBAL.CSI.INDEX                                        ZSPK01 
...
CDPZ02.SMPLOG                                                  ZSPK01 
CDPZ02.SMPLOGA                                                 ZSPK01 
CDPZ02.SMPLTS                                                  ZSPK01 
CDPZ02.SMPMTS                                                  ZSPK01 
CDPZ02.SMPPTS                                                  ZSPK01 
CDPZ02.SMPSCDS                                                 ZSPK01 
CDPZ02.SMPSTS                                                  ZSPK01 
```

### Target/Distributionライブラリの作成

CDPZ02.IBM.HHBO210.F2(HBO1ALLO)をコピーして編集し、Submit。

```
//HBO1ALLO JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//**************************************************************/
//* JOB NAME: HBO1ALLO                                         */
//*                                                            */
//*     LICENSED MATERIALS - PROPERTY OF IBM                   */
//*     5698-ABN                                               */
//*     COPYRIGHT IBM CORP 2019  ALL RIGHTS RESERVED.          */
//*                                                            */
//*     US GOVERNMENT USERS RESTRICTED RIGHTS -                */
//*     USE, DUPLICATION OR DISCLOSURE RESTRICTED              */
//*     BY GSA ADP SCHEDULE CONTRACT WITH IBM CORP.            */
//*                                                            */
//* DESCRIPTION: THIS JCL WILL ALLOCATE TARGET AND             */
//*              DISTRIBUTION LIBRARIES FOR                    */
//*              IBM Z COMMON DATA PROVIDER V2.1.0             */
//*                                                            */
//* CAUTION:     THIS JOB REQUIRES UPDATES BEFORE SUBMITTING.  */
//*                                                            */
//* NOTES:                                                     */
//* 1) CHANGE THE JOB CARD TO MEET YOUR SYSTEM'S REQUIREMENTS. */
//*                                                            */
//* 2) IF A UNIT VALUE OF SYSALLDA DOES NOT WORK WITHIN YOUR   */
//*    LOCAL DEFINITIONS CHANGE IT IN MARKED LOCATION (2)      */
//*                                                            */
//*                                                            */
//*  IF YOU SPECIFY A VOLUME FOR ANY DATA SET IN THIS JOB, YOU */
//*  MUST ALSO SPECIFY THE SAME VOLUME IN THE CORRESPONDING    */
//*  DDDEF ENTRY IN THE DDDEF JOB, HBO4DDDF.                   */
//*                                                            */
//* 3) CHANGE ZSPK01 TO THE VOLUME ON WHICH YOU WISH TO     */
//*    ALLOCATE THE TARGET LIBRARIES.                          */
//*                                                            */
//* 4) CHANGE ZSPK01 TO THE VOLUME ON WHICH YOU WISH TO     */
//*    ALLOCATE THE DISTRIBUTION LIBRARIES.                    */
//*                                                            */
//* 5) CHANGE CDPZ02 TO THE HIGH LEVEL QUALIFIER YOU WOULD     */
//*    LIKE TO USE FOR THE TARGET LIBRARIES.                   */
//*                                                            */
//* 6) CHANGE V2R1M0 TO THE SECOND LEVEL QUALIFIER YOU WOULD   */
//*    LIKE TO USE FOR THE TARGET LIBRARIES.                   */
//*                                                            */
//* 7) CHANGE CDPZ02 TO THE HIGH LEVEL QUALIFIER YOU WOULD     */
//*    LIKE TO USE FOR THE DISTRIBUTION LIBRARIES.             */
//*                                                            */
//* 8) CHANGE V2R1M0 TO THE SECOND LEVEL QUALIFIER YOU WOULD   */
//*    LIKE TO USE FOR THE DISTRIBUTION LIBRARIES.             */
//*                                                            */
//*                                                            */
//**************************************************************/
//*   Allocate Libraries                                       */
//**************************************************************/
//*
//HBOALLOC PROC UNIT=SYSALLDA,         /* <==(2)
//            TARGVOL=ZSPK01,       /* <==(3)
//            DLIBVOL=ZSPK01,       /* <==(4)
//            TLHLQ=CDPZ02,            /* <==(5)
//            TLSLQ=V2R1M0,            /* <==(6)
//            DLHLQ=CDPZ02,            /* <==(7)
//            DLSLQ=V2R1M0             /* <==(8)
//*
//IEFBR14  EXEC PGM=IEFBR14
//*
//**************************************************************/
//*   Allocate Target Libraries                                */
//**************************************************************/
//*
//SHBOINST DD DSN=&TLHLQ..&TLSLQ..SHBOINST,
//         DISP=(NEW,CATLG,DELETE),
//         RECFM=FB,LRECL=80,BLKSIZE=0,
//         SPACE=(TRK,(5,2,5)),
//         UNIT=&UNIT,
//         VOL=SER=&TARGVOL
//*
//SHBOCLST DD DSN=&TLHLQ..&TLSLQ..SHBOCLST,
//         DISP=(NEW,CATLG,DELETE),
//         UNIT=&UNIT,
//         VOL=SER=&TARGVOL,
//         SPACE=(TRK,(2,1,2)),
//         DCB=(LRECL=80,RECFM=FB,BLKSIZE=0)
//*
//SHBODEFS DD DSN=&TLHLQ..&TLSLQ..SHBODEFS,
//         DISP=(NEW,CATLG,DELETE),
//         RECFM=VB,LRECL=255,BLKSIZE=0,
//         SPACE=(TRK,(300,25,30)),
//         UNIT=&UNIT,
//         VOL=SER=&TARGVOL
//*
//SHBOLOAD DD DSN=&TLHLQ..&TLSLQ..SHBOLOAD,
//         DISP=(NEW,CATLG,DELETE),
//         RECFM=U,LRECL=0,BLKSIZE=32760,
//         SPACE=(TRK,(70,10,30)),
//         DSNTYPE=LIBRARY,
//         UNIT=&UNIT,
//         VOL=SER=&TARGVOL
//*
//SHBOLLST DD DSN=&TLHLQ..&TLSLQ..SHBOLLST,
//         DISP=(NEW,CATLG,DELETE),
//         UNIT=&UNIT,
//         VOL=SER=&TARGVOL,
//         SPACE=(TRK,(3,1,2)),
//         DCB=(LRECL=0,RECFM=U,BLKSIZE=32760)
//*
//SHBOLPA  DD DSN=&TLHLQ..&TLSLQ..SHBOLPA,
//         DISP=(NEW,CATLG,DELETE),
//         UNIT=&UNIT,
//         VOL=SER=&TARGVOL,
//         SPACE=(TRK,(3,1,2)),
//         DCB=(LRECL=0,RECFM=U,BLKSIZE=32760)
//*
//SHBOSAMP DD DSN=&TLHLQ..&TLSLQ..SHBOSAMP,
//         DISP=(NEW,CATLG,DELETE),
//         RECFM=FB,LRECL=80,BLKSIZE=0,
//         SPACE=(TRK,(15,2,5)),
//         UNIT=&UNIT,
//         VOL=SER=&TARGVOL
//*
//**************************************************************/
//*   Allocate Distribution Libraries                          */
//**************************************************************/
//*
//AHBOCLST DD DSN=&DLHLQ..&DLSLQ..AHBOCLST,
//         DISP=(NEW,CATLG,DELETE),
//         UNIT=&UNIT,
//         VOL=SER=&DLIBVOL,
//         SPACE=(TRK,(2,1,2)),
//         DCB=(LRECL=80,RECFM=FB,BLKSIZE=0)
//*
//AHBODEFS DD DSN=&DLHLQ..&DLSLQ..AHBODEFS,
//         DISP=(NEW,CATLG,DELETE),
//         RECFM=VB,LRECL=255,BLKSIZE=0,
//         SPACE=(TRK,(300,5,25)),
//         UNIT=&UNIT,
//         VOL=SER=&DLIBVOL
//*
//AHBOHFS  DD DSN=&DLHLQ..&DLSLQ..AHBOHFS,
//         UNIT=&UNIT,
//         VOL=SER=&DLIBVOL,
//         SPACE=(TRK,(15,5,2)),
//         DCB=(LRECL=1028,RECFM=VB,BLKSIZE=0),
//         DISP=(NEW,CATLG)
//*
//AHBOHFS2 DD DSN=&DLHLQ..&DLSLQ..AHBOHFS2,
//         DISP=(NEW,CATLG,DELETE),
//         RECFM=VB,LRECL=27920,BLKSIZE=0,
//         SPACE=(TRK,(500,30,2)),
//         UNIT=&UNIT,
//         VOL=SER=&DLIBVOL
//*
//AHBOINST DD DSN=&DLHLQ..&DLSLQ..AHBOINST,
//         DISP=(NEW,CATLG,DELETE),
//         RECFM=FB,LRECL=80,BLKSIZE=0,
//         SPACE=(TRK,(2,2,2)),
//         UNIT=&UNIT,
//         VOL=SER=&DLIBVOL
//*
//AHBOLINK DD DSN=&DLHLQ..&DLSLQ..AHBOLINK,
//         DISP=(NEW,CATLG,DELETE),
//         UNIT=&UNIT,
//         VOL=SER=&DLIBVOL,
//         SPACE=(TRK,(2,1,2)),
//         DCB=(LRECL=0,RECFM=U,BLKSIZE=32760)
//*
//AHBOLOAD DD DSN=&DLHLQ..&DLSLQ..AHBOLOAD,
//         DISP=(NEW,CATLG,DELETE),
//         RECFM=U,LRECL=0,BLKSIZE=32760,
//         SPACE=(TRK,(75,1,65)),
//         DSNTYPE=LIBRARY,
//         UNIT=&UNIT,
//         VOL=SER=&DLIBVOL
//*
//AHBOSAMP DD DSN=&DLHLQ..&DLSLQ..AHBOSAMP,
//         DISP=(NEW,CATLG,DELETE),
//         RECFM=FB,LRECL=80,BLKSIZE=0,
//         SPACE=(TRK,(10,2,2)),
//         UNIT=&UNIT,
//         VOL=SER=&DLIBVOL
//*
//HBOALLOC PEND
//ALLOCATE EXEC HBOALLOC
//*
//
```

以下のデータセットが作成されたことを確認。

```
CDPZ02.V2R1M0.AHBOCLST                                         ZSPK01
CDPZ02.V2R1M0.AHBODEFS                                         ZSPK01
CDPZ02.V2R1M0.AHBOHFS                                          ZSPK01
CDPZ02.V2R1M0.AHBOHFS2                                         ZSPK01
CDPZ02.V2R1M0.AHBOINST                                         ZSPK01
CDPZ02.V2R1M0.AHBOLINK                                         ZSPK01
CDPZ02.V2R1M0.AHBOLOAD                                         ZSPK01
CDPZ02.V2R1M0.AHBOSAMP                                         ZSPK01
CDPZ02.V2R1M0.SHBOCLST                                         ZSPK01
CDPZ02.V2R1M0.SHBODEFS                                         ZSPK01
CDPZ02.V2R1M0.SHBOINST                                         ZSPK01
CDPZ02.V2R1M0.SHBOLLST                                         ZSPK01
CDPZ02.V2R1M0.SHBOLOAD                                         ZSPK01
CDPZ02.V2R1M0.SHBOLPA                                          ZSPK01
CDPZ02.V2R1M0.SHBOSAMP                                         ZSPK01
```

### USS上のディレクトリ作成

CDPZ02.IBM.HHBO210.F2(HBO3RMKD) をコピーして編集し、Submit。

```
//HBO3RMKD JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//**************************************************************/
//* JOB NAME = HBO3RMKD                                        */
//*                                                            */
//*     LICENSED MATERIALS - PROPERTY OF IBM                   */
//*     5698-ABN                                               */
//*     COPYRIGHT IBM CORP 2019  ALL RIGHTS RESERVED.          */
//*                                                            */
//*     US GOVERNMENT USERS RESTRICTED RIGHTS -                */
//*     USE, DUPLICATION OR DISCLOSURE RESTRICTED              */
//*     BY GSA ADP SCHEDULE CONTRACT WITH IBM CORP.            */
//*                                                            */
//**************************************************************/
//*                                                            */
//* DESCRIPTION: THIS JCL WILL EXECUTE THE HBOMKDIR EXEC TO    */
//*              CREATE THE NECESSARY DIRECTORIES USED BY      */
//*              IBM Z COMMON DATA PROVIDER V2.1.0             */
//*                                                            */
//* CAUTION:     THIS JOB REQUIRES UPDATES BEFORE SUBMITTING.  */
//*                                                            */
//*  1) ADD A JOB CARD TO MEET YOUR SYSTEM REQUIREMENTS        */
//*                                                            */
//*  2) IF YOU ARE APPLYING THIS FUNCTION FOR THE FIRST TIME,  */
//*     THE HBOMKDIR EXEC WILL RESIDE IN AN SMP/E TEMPORARY    */
//*     LIBRARY SO USE THE FIRST //SYSEXEC STATEMENT BELOW.    */
//*     CHANGE -dsprefix- TO MATCH THE QUALIFIER(S) FOR THE     */
//*     OF THE TEMPORARY DATASET.  (RELFILE)                   */
//*                                                            */
//*     IF YOU ARE RUNNING THIS JOB TO INSTALL SERVICE ON A    */
//*     FUNCTION THAT HAS ALREADY BEEN APPLYED, THE MKDIR EXEC */
//*     WILL RESIDE IN A TARGET LIBRARY, SO UNCOMMENT THE      */
//*     SECOND SYSEXEC STATEMENT BELOW AND COMMENT             */
//*     OUT THE FIRST.  CHANGE -hlqual- TO THE AOORIORUATE      */
//*     HIGH-LEVEL QUALIFIER THAT COMPLIES WITH YOUR SITE'S    */
//*     NAMING STANDARDS.                                      */
//*                                                            */
//*  3) CHANGE THE STRING   -PathPrefix-  TO THE APPROPRIATE   */
//*     high-level directory name. For users installing in the */
//*     ROOT, THIS WOULD BE "/".  FOR OTHERS, THE HIGH-LEVEL   */
//*     DIRECTORY MAY BE SOMETHING LIKE "/SERVICE" OR A MORE   */
//*     MEANINGFUL NAME. PLEASE NOTE THE REPLACEMENT STRING IS */
//*     CASE SENSITIVE. ENSURE THE -Pathprefix- IS AN ABSOLUTE */
//*     PATH NAME WHICH BEGINS AND ENDS WITH A SLASH (/).      */
//*                                                            */
//*     HINT:  THIS WOULD BE THE SAME AS THE -PathPrefix-      */
//*            YOU USED IN HBO2AZFS                            */
//*                                                            */
//*                                                            */
//*  4) ENSURE THE HIGH-LEVEL DIRECTORY NAME SPECIFIED EXISTS  */
//*     PRIOR TO RUNNING THIS JOB.                             */
//*                                                            */
//*  5) ENSURE YOU EXECUTE THIS JOB FROM A USERID THAT IS      */
//*     UID=0 OR IS THE OWNER OF THE HIGH-LEVEL DIRECTORY NAME */
//*     SPECIFIED.                                             */
//*                                                            */
//*  6) THIS JOB SHOULD END WITH RC=0. IF NOT THEN, PLEASE     */
//*     CHECK Z/OS UNIX SYSTEM SERVICES MESSAGES AND CODES     */
//*     BOOK TO CORRECT THE PROBLEM AND RESUBMIT THIS JOB.     */
//*                                                            */
//**************************************************************/
//IKJEFT01 EXEC PGM=IKJEFT01
//SYSEXEC DD DSN=CDPZ02.IBM.HHBO210.F2,
//*SYSEXEC DD DSN=-hlqual-.SHBOINST,
//      DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
PROF MSGID
HBOMKDIR  /
/*
//
```

以下のようなディレクトリが作成されていることを確認。

```
[CICS004@EPLEX1:/V1R11/usr/lpp/IBM/zcdp/v2r1m0] ls -la
total 96
drwxr-xr-x   8 0        CICS        8192 Jan  6 15:13 .
drwxr-xr-x   3 0        OMVSGRP     8192 Jan  6 11:04 ..
drwxr-xr-x   2 0        CICS           0 Jan  6 15:13 DEPS
drwxr-xr-x   4 0        CICS        8192 Jan  6 15:13 DS
drwxr-xr-x   2 0        CICS           0 Jan  6 15:13 IBM
drwxr-xr-x   4 0        CICS        8192 Jan  6 15:13 LF
drwxr-xr-x   4 0        CICS        8192 Jan  6 15:13 UI
drwxrwxrwx   3 0        CICS        8192 Jan  6 11:32 inst
```

### DDDEF

CDPZ02.IBM.HHBO210.F2(HBO4DDDF) をコピーして編集し、Submit。

```
//HBO4DDDF JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//**************************************************************/
//* JOB NAME: HBO4DDDF                                         */
//*                                                            */
//*     LICENSED MATERIALS - PROPERTY OF IBM                   */
//*     5698-ABN                                               */
//*     COPYRIGHT IBM CORP 2019  ALL RIGHTS RESERVED.          */
//*                                                            */
//*     US GOVERNMENT USERS RESTRICTED RIGHTS -                */
//*     USE, DUPLICATION OR DISCLOSURE RESTRICTED              */
//*     BY GSA ADP SCHEDULE CONTRACT WITH IBM CORP.            */
//*                                                            */
//* DESCRIPTION: THIS JCL WILL CREATE DDDEF ENTRIES AND        */
//*              CREATE AN ALLZONES REPORT FOR                 */
//*              IBM Z COMMON DATA PROVIDER V2.1.0             */
//*                                                            */
//* CAUTION:     THIS JOB REQUIRES UPDATES BEFORE SUBMITTING.  */
//*                                                            */
//* NOTES:                                                     */
//*                                                            */
//* 1) IF YOU USED HBO0SMPE THE QUALIFIERS AND ZONE NAMES      */
//*    WILL BE AVAILABLE IN THAT JOB.                          */
//*                                                            */
//* 2) CHANGE THE JOB CARD TO MEET YOUR SYSTEM'S REQUIREMENTS. */
//*                                                            */
//*                                                            */
//*    IT IS OK TO USE A CHANGE ALL COMMANDS TO SHORTEN        */
//*    THE WORK OF TASKS 3,4,5 and 6                           */
//*                                                            */
//*       SOMETHING LIKE:                                      */
//*                                                            */
//*          C CDPZ02.V2R1M0   my.tlib.qualifiers ALL        */
//*                                                            */
//*                and                                         */
//*                                                            */
//*          C CDPZ02.V2R1M0   my.dlib.qualifiers ALL        */
//*                                                            */
//* 3) CHANGE CDPZ02 TO THE TARGET LIB HIGH-LEVEL QUALIFIER   */
//*    THAT COMPLIES WITH YOUR SITE'S NAMING STANDARDS.        */
//*                                                            */
//* 4) CHANGE V2R1M0 TO THE TARGET LIB SECOND-LEVEL QUALIFIER */
//*    THAT COMPLIES WITH YOUR SITE'S NAMING STANDARDS.        */
//*                                                            */
//* 5) CHANGE CDPZ02 TO THE DISTRIBUTION LIB HIGH-LEVEL       */
//*    THAT COMPLIES WITH YOUR SITE'S NAMING STANDARDS.        */
//*                                                            */
//* 6) CHANGE V2R1M0 TO THE DISTRIBUTION LIB SECOND-LEVEL     */
//*    THAT COMPLIES WITH YOUR SITE'S NAMING STANDARDS.        */
//*                                                            */
//* 7) YOU MUST CHANGE CDPZ02 TO YOUR SMPE HLQ.  THE        */
//*     SAFEST WAY TO DO THIS IS DOING A GLOBAL CHANGE         */
//*     ON THE COMMAND LINE:                                   */
//*                                                            */
//*            "C CDPZ02 MYPREFIX ALL"                      */
//*                                                            */
//* 8) CHANGE TZONE TO THE NAME OF YOUR TARGET ZONE.         */
//*                                                            */
//* 9) CHANGE DZONE TO THE NAME OF YOUR DISTRIBUTION ZONE.   */
//*                                                            */
//* 10) IF YOU REQUIRE THE VOLUME PARAMETER FOR TARGET LIBRARY */
//*    DATA SETS THAT ARE NOT YET CATALOGED, UNCOMMENT THE     */
//*    VOLUME(ZSPK01) STATEMENTS AND CHANGE ZSPK01 TO    */
//*    THE VOLUME FOR THE TARGET LIBRARIES.                    */
//*                                                            */
//* 11) IF YOU REQUIRE THE VOLUME PARAMETER FOR DISTRIBUTION   */
//*    LIBRARY DATA SETS THAT ARE NOT YET CATALOGED, UNCOMMENT */
//*    THE VOLUME(ZSPK01) STATEMENTS AND CHANGE ZSPK01   */
//*    TO THE VOLUME FOR THE DISTRIBUTION LIBRARIES.           */
//*                                                            */
//*   IF YOU SPECIFY A VOLUME FOR ANY DATASET IN THIS JOB, YOU */
//*   MUST ALSO SPECIFY THE SAME VOLUME IN THE CORRESPONDING   */
//*   DATASET ALLOCATION JOB, HBO1ALLO.                        */
//*                                                            */
//* 12) A STEP IS PROVIDED TO ALLOW YOU TO CHANGE THE HIGH     */
//*    LEVEL PATH USED TO INSTALL Z COMMON DATA PROVIDER.      */
//*    LEVEL PATH USED TO INSTALL Z COMMON DATA PROVIDER.      */
//*    TO ADD A HIGH LEVEL PATH CHANGE <PathPrefix> TO THE     */
//*    DESIRED PATH HIGH LEVEL.  IF YOU WANT TO USE THE        */
//*    DEFAULT PATH JUST DELETE <PathPrefix>.                  */
//*    DEFAULT PATH JUST DELETE <PathPrefix>.                  */
//*    IF YOU USED A -PathPrefix- IN THE HBO2AZFS JOB THAT     */
//*    SAME PREFIX SHOULD BE USED HERE.                        */
//*                                                            */
//*    NOTE:  UNLKE THE HBO2AZFS JOB, HERE DO NOT INCLUDE      */
//*    THE LAST "/" IN YOUR PREFIX SO INSTEAD OF USING         */
//*    /my/path/prefix/ USE /my/path/prefix                    */
//*                                                            */
//*  GENERAL NOTES:                                            */
//* 1) THIS JOB SHOULD COMPLETE WITH A RETURN CODE 0.          */
//*    HOWEVER, IF SOME OR ALL OF THESE DDDEF ENTRIES ALREADY  */
//*    EXIST, THEN THE JOB WILL COMPLETE WITH A RETURN CODE 8. */
//*    YOU WILL HAVE TO EXAMINE THE OUTPUT AND DETERMINE       */
//*    WHETHER OR NOT THE EXISTING ENTRIES SHOULD BE REPLACED. */
//*    YOU CAN CHANGE THE 'ADD' TO 'REP' IN THIS JOB TO        */
//*    REPLACE EXISTING ENTRIES.                               */
//*                                                            */
//**************************************************************/
//*
//DDDEFD   EXEC PGM=GIMSMP,REGION=0M
//SMPCSI   DD  DSN=CDPZ02.GLOBAL.CSI,             /* <==(7) */
//             DISP=SHR
//SMPCNTL  DD *
  SET BDY(DZONE).                                  /* <==(9) */
   UCLIN.
    ADD DDDEF(AHBOCLST)
        DATASET(CDPZ02.V2R1M0.AHBOCLST)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBODEFS)
        DATASET(CDPZ02.V2R1M0.AHBODEFS)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBOHFS)
        DATASET(CDPZ02.V2R1M0.AHBOHFS)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBOHFS2)
        DATASET(CDPZ02.V2R1M0.AHBOHFS2)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBOINST)
        DATASET(CDPZ02.V2R1M0.AHBOINST)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBOLINK)
        DATASET(CDPZ02.V2R1M0.AHBOLINK)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBOLOAD)
        DATASET(CDPZ02.V2R1M0.AHBOLOAD)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBOSAMP)
        DATASET(CDPZ02.V2R1M0.AHBOSAMP)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
   ENDUCL.
//DDDEFT   EXEC PGM=GIMSMP,REGION=0M
//SMPCSI   DD  DSN=CDPZ02.GLOBAL.CSI,              /* <==(7) */
    ADD DDDEF(AHBOCLST)
        DATASET(CDPZ02.V2R1M0.AHBOCLST)
  SET BDY(TZONE).                                   /* <==(8) */
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBODEFS)
        DATASET(CDPZ02.V2R1M0.AHBODEFS)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBOHFS)
        DATASET(CDPZ02.V2R1M0.AHBOHFS)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBOHFS2)
        DATASET(CDPZ02.V2R1M0.AHBOHFS2)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBOINST)
        DATASET(CDPZ02.V2R1M0.AHBOINST)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBOLOAD)
        DATASET(CDPZ02.V2R1M0.AHBOLOAD)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(AHBOSAMP)
        DATASET(CDPZ02.V2R1M0.AHBOSAMP)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
       .
    ADD DDDEF(SHBOCLST)
        DATASET(CDPZ02.V2R1M0.SHBOCLST)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
    ADD DDDEF(SHBOCLST)
        DATASET(CDPZ02.V2R1M0.SHBOCLST)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
        .
    ADD DDDEF(SHBODEFS)
        DATASET(CDPZ02.V2R1M0.SHBODEFS)
        .
    ADD DDDEF(SHBOINST)
        DATASET(CDPZ02.V2R1M0.SHBOINST)
        UNIT(SYSALLDA)
        .
    ADD DDDEF(SHBOINST)
        DATASET(CDPZ02.V2R1M0.SHBOINST)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
        .
    ADD DDDEF(SHBOLOAD)
        DATASET(CDPZ02.V2R1M0.SHBOLOAD)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
        .
    ADD DDDEF(SHBOLLST)
        DATASET(CDPZ02.V2R1M0.SHBOLLST)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
        .
    ADD DDDEF(SHBOLPA)
        DATASET(CDPZ02.V2R1M0.SHBOLPA)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
        .
    ADD DDDEF(SHBOSAMP)
        DATASET(CDPZ02.V2R1M0.SHBOSAMP)
        UNIT(SYSALLDA)
        VOLUME(ZSPK01)
        WAITFORDSN
        SHR
        .
   /* DO NOT UPPER CASE ANY OF THE PATH VALUES SPECIFIED BELOW */
   ADD DDDEF(SHBOFS00)
       PATH('/usr/lpp/IBM/zcdp/v2r1m0/IBM/').
   ADD DDDEF(SHBOFS01)
       PATH('/usr/lpp/IBM/zcdp/v2r1m0/LF/samples/IBM/').
   ADD DDDEF(SHBOFS02)
       PATH('/usr/lpp/IBM/zcdp/v2r1m0/LF/lib/IBM/').
   ADD DDDEF(SHBOFS03)
       PATH('/usr/lpp/IBM/zcdp/v2r1m0/LF/lib/jni64/IBM/').
   ENDUCL.
/*
//*
//DDDEFP   EXEC PGM=GIMSMP,REGION=0M
//SMPCSI   DD  DSN=CDPZ02.GLOBAL.CSI,                /* <==(7) */
//             DISP=SHR
//SMPCNTL  DD *
  SET BDY(TZONE)                                     /* <==(8)  */
  .
  ZONEEDIT DDDEF.
   CHANGE PATH('/usr/lpp/IBM/zcdp/v2r1m0'*,
     '/usr/lpp/IBM/zcdp/v2r1m0'*).                     /* <==(12) */
  ENDZONEEDIT.
/*
//REPORT   EXEC PGM=GIMSMP,REGION=0M,COND=(8,LT)
//SMPCSI   DD  DSN=CDPZ02.GLOBAL.CSI,               /* <==(7) */
//             DISP=SHR
//SMPCNTL  DD *
  SET BDY(GLOBAL).
   LIST ALLZONES.
/*
//
```

### RECEIVE

CDPZ02.RIMLIB(RCVPDO) をコピーして編集し、Submit。

<font color="red">
※WorkのVOLUMEがパンクして以下のようなエラーが発生してしまったので、明示的に特定のVOLUMEを使用するよう、SYSUTxのDDを追加しました。
IEC030I B37-04,IFG0554A,RCVPDO,SMPER1,SYSUT4,5226,ZR21W2,SYS20006.T182105.RA000.RCVPDO.R0112225                   
</font>

```
//RCVPDO   JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),
//             USER=IBMUSER,                                  /*RACF*/
//             PASSWORD=xxxxx                                 /*RACF*/
//*                                                           /*JCTRL*/
//*
//* 5751-CS3 COPYRIGHT IBM CORPORATION 1985, 2006
//*
//*
//********************************************************************
//*          DO NOT TURN CAPS ON.  THIS JOB CONTAINS CASE
//*                    SENSITIVE CONTROL CARDS.
//********************************************************************
//*
//* LIB: USERID.PDO.RIMLIB(RCVPDO)
//* GDE: CBPDO MEMO EXTENSION
//* DOC: THIS JOB WILL RECEIVE PRODUCTS, SERVICE, AND HOLDDATA
//*      FROM THE SMP/E NETWORK TEMPORARY STORE (SMPNTS).
//*
//*      CHANGE THE JOB STATEMENT AS REQUIRED TO MATCH
//*      YOUR INSTALLATION'S REQUIREMENTS.
//*
//*      SMP/E ZONE-RELATED FILES ARE ASSUMED TO BE DEFINED IN YOUR
//*      GLOBAL CSI.  SEE THE SMP/E COMMANDS MANUAL FOR A LIST OF
//*      THE REQUIRED DDDEF ENTRIES.
//*
//*
//* NOTE 1: CHANGE THE SMPCSI DD STATEMENT TO THE SMP/E
//*         GLOBAL CSI INTO WHICH YOU WANT TO RECEIVE THE
//*         PACKAGE.
//*
//* NOTE 2: CHANGE THE SMPNTS DD STATEMENT TO POINT TO THE
//*         PATH NAME IN YOUR FILE SYSTEM WHERE THE NETWORK
//*         RECEIVED PACKAGE(S) ARE BEING STORED.  THIS IS
//*         THE PACKAGE DIRECTORY.
//*
//* NOTE 3: VERIFY/UPDATE THE PACKAGE-ID VALUE ON THE RECEIVE
//*         FROMNTS COMMAND.  THE PACKAGE-ID VALUE IS THE
//*         IDENTIFIER (SUBDIRECTORY) FOR THIS PARTICULAR
//*         PACKAGE IN THE PACKAGE DIRECTORY - SMPNTS.
//*
//* NOTE 4: UNCOMMENT THE DELETEPKG OPERAND ON THE RECEIVE
//*         COMMAND IF YOU WANT TO DELETE THE PACKAGE AND
//*         PACKAGE SUBDIRECTORY FROM YOUR FILE SYSTEM AFTER
//*         THE RECEIVE COMMAND COMPLETES.
//*
//SMPER1  EXEC PGM=GIMSMP,REGION=0M,
//             PARM='PROCESS=WAIT',
//             DYNAMNBR=120
//SMPCSI   DD  DISP=SHR,DSN=CDPZ02.GLOBAL.CSI         <=== NOTE 1
//SMPNTS   DD  PATHDISP=KEEP,
//             PATH='/usr/lpp/IBM/zcdp/v2r1m0/inst/'
//SMPOUT   DD  SYSOUT=*
//SMPRPT   DD  SYSOUT=*
//SMPLIST  DD  SYSOUT=*
//SYSPRINT DD  SYSOUT=*
//SYSUT1   DD  UNIT=3390,VOL=SER=ZSPK01,SPACE=(CYL,(10,1)),
//             DISP=(,DELETE)
//SYSUT2   DD  UNIT=3390,VOL=SER=ZSPK01,SPACE=(CYL,(10,1)),
//             DISP=(,DELETE)
//SYSUT3   DD  UNIT=3390,VOL=SER=ZSPK01,SPACE=(CYL,(10,1)),
//             DISP=(,DELETE)
//SYSUT4   DD  UNIT=3390,VOL=SER=ZSPK01,SPACE=(CYL,(100,100)),
//             DISP=(,DELETE)
//**************************************************************
//* AS SHIPPED BY IBM, RCVPDO IS SET UP TO RECEIVE
//* THE FMIDS, PTFS AND HOLDDATA
//**************************************************************
//SMPCNTL  DD  *
  SET      BOUNDARY (GLOBAL) .
  RECEIVE
   FROMNTS(STP54802)                                /* <=== NOTE 3 */
  /*    DELETEPKG                                  /* <=== NOTE 4 */
      .
/*
```

### APPLY

CDPZ02.IBM.HHBO210.F2(HBO6APLY) をコピーして編集し、Submit。

```
//HBO6APLY JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),
//             USER=IBMUSER,PASSWORD=xxxxxx
//*
//SMP      EXEC PGM=GIMSMP,PARM='DATE=U',REGION=0M
//SMPCSI   DD DSN=CDPZ02.GLOBAL.CSI,DISP=SHR     /* <==(2)  */
//SMPHOLD  DD DUMMY
//SMPCNTL  DD *
  SET BDY(TZONE).                /*   <==(3) SET TARGET ZONE */
   APPLY
    SELECT(
            HHBO210
          )
    CHECK                        /* <==(4) COMMMENT TO APPLY */
    .
/*
//
```

OKだったら、CHECKを外して実際のAPPLYを実行！
必要に応じてACCEPT実行。

### PTF APPLY

PTFをAPPLYするの忘れてたので、後からAPPLYしました。こちらもワークのボリュームが足りなかったりしたので、SMPWRKxなどを適宜追加してAPPLY

```
//HBO6APLY JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),
//             USER=IBMUSER,PASSWORD=xxxxx
//SMP      EXEC PGM=GIMSMP,PARM='DATE=U',REGION=0M
//SMPCSI   DD DSN=CDPZ02.GLOBAL.CSI,DISP=SHR     /* <==(2)  */
//SMPHOLD  DD DUMMY
//SMPWRK1  DD UNIT=3390,SPACE=(CYL,(2,1,5)),DISP=(,DELETE),
//            DCB=BLKSIZE=6160,VOL=SER=ZSPK01
//SMPWRK2  DD UNIT=3390,SPACE=(CYL,(2,1,5)),DISP=(,DELETE),
//            DCB=BLKSIZE=6160,VOL=SER=ZSPK01
//SMPWRK3  DD DSN=CDPZ02.TEMP3.SMPWRK3,
//            UNIT=3390,SPACE=(CYL,(100,10,100)),DISP=(,CATLG),
//            DCB=BLKSIZE=3120
//SMPWRK4  DD UNIT=SYSDA,SPACE=(CYL,(2,1,5)),DISP=(,DELETE),
//            DCB=BLKSIZE=3120,VOL=SER=ZSPK01
//SMPWRK6  DD UNIT=SYSDA,SPACE=(CYL,(100,1,100)),DISP=(,DELETE),
//            DCB=BLKSIZE=6160,VOL=SER=ZSPK01
//SYSUT1   DD  UNIT=3390,VOL=SER=ZSPK01,SPACE=(CYL,(10,1)),
//             DISP=(,DELETE)
//SYSUT2   DD  UNIT=3390,VOL=SER=ZSPK01,SPACE=(CYL,(10,1)),
//             DISP=(,DELETE)
//SYSUT3   DD  UNIT=3390,VOL=SER=ZSPK01,SPACE=(CYL,(10,1)),
//             DISP=(,DELETE)
//SYSUT4   DD  UNIT=3390,VOL=SER=ZSPK01,SPACE=(CYL,(100,100)),
//             DISP=(,DELETE)
//SMPCNTL  DD *
  SET BDY(TZONE).                /*   <==(3) SET TARGET ZONE */
   APPLY
    BYPASS(HOLDSYS)
    SELECT(
            UJ01103
            UJ01319
            UJ01485
          )
    CHECK                        /* <==(4) COMMMENT TO APPLY */
    .
/*
//
```

PTF提供後は、Config Toolのインストールし直し。

# CDPzのセットアップ
導入が済んだら各コンポーネントの初期セットアップをしていきます。

## (1) Configuration Tool

参考: [Getting started with the Configuration Tool on z/OSMF](https://www.ibm.com/support/knowledgecenter/ja/SSGE3R_2.1.0/webui_zosmf.html)
WebのUIを持つ構成ツールが提供されていて、z/OSMFに組み込んで利用できるようです。まずはこのツールを使うための構成を行います。

### ユーザー作成
構成用のユーザーを作成します。

UID=0でユーザー"CDP201"を作成します。

```
//ADDUSER  JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)
//****************************************************************
//STEP1   EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=0M
//SYSTSPRT DD  SYSOUT=*
//SYSUADS  DD  DSN=SYS1.UADS,DISP=SHR
//SYSTSIN  DD  *
 ADDUSER (CDP201) OWNER(SYS1) DFLTGRP(SYS1) SPECIAL OPERATIONS -
   PASSWORD(PSWD) NAME (CDP201)                               -
   TSO(ACCTNUM(ACCT#) MSGCLASS(H) PROC(IKJACCNT) SIZE(6072) -
       MAXSIZE(2096128) UNIT(SYSALLDA) USERDATA(0000) ) -
   OMVS(UID(0) HOME(/u/CDP201) PROGRAM(/bin/sh))
/*
//STEP2    EXEC PGM=IKJEFT01
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
  PERMIT ACCT#    ACCESS(READ) CLASS(ACCTNUM) ID(CDP201)
  PERMIT IKJACCNT ACCESS(READ) CLASS(TSOPROC) ID(CDP201)
  PERMIT ACCT     ACCESS(READ) CLASS(TSOAUTH) ID(CDP201)
  PERMIT JCL      ACCESS(READ) CLASS(TSOAUTH) ID(CDP201)
  PERMIT MOUNT    ACCESS(READ) CLASS(TSOAUTH) ID(CDP201)
  PERMIT OPER     ACCESS(READ) CLASS(TSOAUTH) ID(CDP201)
  PERMIT RECOVER  ACCESS(READ) CLASS(TSOAUTH) ID(CDP201)
  SETROPTS RACLIST(ACCTNUM) REFRESH
  SETROPTS RACLIST(TSOPROC) REFRESH
  SETROPTS RACLIST(TSOAUTH) REFRESH
/*
//STEP3   EXEC PGM=IDCAMS
//SYSPRINT DD  SYSOUT=*
//SYSIN    DD  *
 DEF   ALIAS(NAME(CDP201) REL(CATALOG.ZPLEX.USERS) )-
     CATALOG(CATALOG.Z23.MASTER)
/*
//
```

ホームディレクトリを作成します。

```
[CICS004@EPLEX1:/u] pwd
/u
[CICS004@EPLEX1:/u] mkdir CDP201
```

TSOでログインできることを確認。

z/OSMFの管理グループ(IZUADMIN)権限付与します(TSOコマンド```CONNECT CDP201 GROUP(IZUADMIN)```)。

z/OSMFのWebUIからCDP201ユーザーでログインできることを確認。

### 作業ディレクトリの設定

参考: [Setting up a working directory for the Configuration Tool](https://www.ibm.com/support/knowledgecenter/ja/SSGE3R_2.1.0/webui_workingdir.html)
ここで、savingpolicy.shを流すように記載されているので、それに従って実行。

```xxx:実行例
[CDP201@EPLEX1:/u/CDP201] sh /usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/savingpolicy.sh
If you are deploying the Configuration tool on z/OSMF, please input '1'.
If you are deploying the Configuration tool directly in Liberty server, please input '2'.
1

You may enter a blank value to accept the default values in parentheses.

The Configuration Tool will be deployed in z/OSMF
Before running this script, ensure you are in the z/OSMF Administrator
group (IZUADMIN by default for z/OSMF).
The Configuration Tool requires a workspace where it can output
completed policy files. Please enter the full path of the directory you
would like to create.

Policy file directory (default: /u/error for uid: 0/cdpConfig): /u/CDP201/cdpConfig
User ID to own the policy file directory (default: Error for uid: 0): CDP201
Group containing administrators (default: IZUADMIN):
*** Important: the default value for the next parameter represents absolute
directory. If the default directory will become invalid after the next IPL,
provide a directory path that does not change between IPLs. Otherwise accept
the default value.
The Configuration Tool Source Script Directory (default: /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB):
The Configuration Tool has been successfully implemented.

You may now import the following file in the z/OSMF Import Manager:
/u/CDP201/cdpConfig/HBOCDEUI/v2r1m0/LIB/cdpConfig.properties
```

上のスクリプト実行の中で、Policy File Directoryとして```/u/CDP201/cdpConfig```を指定していますので、そのディレクトリが作成されています。

```
[CDP201@EPLEX1:/u/CDP201] pwd
/u/CDP201
[CDP201@EPLEX1:/u/CDP201] ls
cdpConfig
```

```/u/CDP201/cdpConfig/HBOCDEUI/v2r1m0/LIB/``` には以下のようなファイルが作成されます。

```
[CDP201@EPLEX1:/u/CDP201/cdpConfig/HBOCDEUI/v2r1m0/LIB] ls -la
total 40
drwxrwx---   2 0        IZUADMIN    8192 Jan  7 09:16 .
drwxrwx---   4 0        IZUADMIN    8192 Jan  7 09:15 ..
lrwxrwxrwx   1 0        STC           53 Jan  7 09:16 CDPUIServer.war -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/CDPUIServer.war
lrwxrwxrwx   1 0        STC           67 Jan  7 09:16 cdp-starter-sets.streams.json -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/cdp-starter-sets.streams.json
lrwxrwxrwx   1 0        STC           56 Jan  7 09:16 cdp.protocols.json -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/cdp.protocols.json
lrwxrwxrwx   1 0        STC           57 Jan  7 09:16 cdp.transforms.json -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/cdp.transforms.json
-rw-rw----   1 0        IZUADMIN      91 Jan  7 09:16 cdpConfig.json
lrwxrwxrwx   1 0        STC           58 Jan  7 09:16 cdpConfig.properties -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/cdpConfig.properties
lrwxrwxrwx   1 0        STC           65 Jan  7 09:16 cdpConfig.remove.properties -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/cdpConfig.remove.properties
lrwxrwxrwx   1 0        STC           58 Jan  7 09:16 cdpConfigVersion.txt -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/cdpConfigVersion.txt
lrwxrwxrwx   1 0        STC           54 Jan  7 09:16 cdpui.properties -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/cdpui.properties
lrwxrwxrwx   1 0        STC           49 Jan  7 09:16 defracf.cmd -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/defracf.cmd
lrwxrwxrwx   1 0        STC           50 Jan  7 09:16 en.i18n.json -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/en.i18n.json
lrwxrwxrwx   1 0        STC           54 Jan  7 09:16 ims.streams.json -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/ims.streams.json
lrwxrwxrwx   1 0        STC           48 Jan  7 09:16 index.html -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/index.html
lrwxrwxrwx   1 0        STC           64 Jan  7 09:16 log-forwarder.streams.json -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/log-forwarder.streams.json
lrwxrwxrwx   1 0        STC           52 Jan  7 09:16 main.bundle.js -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/main.bundle.js
lrwxrwxrwx   1 0        STC           57 Jan  7 09:16 polyfills.bundle.js -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/polyfills.bundle.js
lrwxrwxrwx   1 0        STC           54 Jan  7 09:16 sde.streams.json -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/sde.streams.json
lrwxrwxrwx   1 0        STC           48 Jan  7 09:16 server.xml -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/server.xml
lrwxrwxrwx   1 0        STC           54 Jan  7 09:16 vendor.bundle.js -> /V1R11/usr/lpp/IBM/zcdp/v2r1m0/UI/LIB/vendor.bundle.js
```

```xxx:/u/CDP201/cdpConfig/HBOCDEUI/v2r1m0/LIB/cdpConfig.properties
importType=plugin

izu.externalapp.file.version=v2r1m0
izu.externalapp.local.context.root=cdp
izu.externalapp.code.root=.

pluginId=com.ibm.zos.cdp
pluginDefaultName=IBM Z Common Data Provider
pluginDescription=Configuration tool for IBM Z Common Data Provider
aboutPanelPath=cdpConfigVersion.txt

taskId1=CONFIGURE
taskVersion1=1.0
taskCategoryId1=4
taskDispName1=IBM Z Common Data Provider
taskDispDesc1=Interface for configuring IBM Z Common Data Provider
taskSAFResourceName1=ZOSMF.IBM_CDP.CONFIG.CDPConfiguration
taskMultiSysplexScope1=false
taskHandlerEligible1=false
taskAuthenticatedGuestEligible1=true
taskNavigationURL1=/index.html
taskBundleUrl1=/
taskBundleFileName1=/main.bundle.js
taskMinZOS1=03.23.00
taskMinZOSMF1=03.23.00
```

### Installing the Configuration Tool
参考: [Installing the Configuration Tool](https://www.ibm.com/support/knowledgecenter/ja/SSGE3R_2.1.0/webui_install.html)

ブラウザから、上で作成したCDP201ユーザーでz/OSMFにログインし、z/OSMF管理 - インポート・マネージャーを選択

プロパティーファイルとして、上で作成した/u/CDP201/cdpConfig/HBOCDEUI/v2r1m0/LIB/cdpConfig.propertiesを指定して「表示」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/cca9ecb5-0fe7-4953-1840-16f787ceb99e.png)

中身を確認したら「インポート」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/a7ca6e54-2cf8-8a99-8f2f-68e7c5a94d84.png)

z/OSMFの画面をリフレッシュすると、左側のメニューの"構成"以下に"IBM Z Common Data Provider"という項目が追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/9287f87f-2ef3-6d68-9add-48276620c5fc.png)

※CDPz V1.1をインストール済の環境で、V2.1のプラグインを入れたら、V1.1で作られていたメニューが消えて、上の"IBM Z Common Data Provider"に置き換わってしまったので、複数バージョンの共存はできなさそうです。


以下のTSOコマンド実行(V1.1導入時に実施済み)

```
[CICS004@EPLEX1:/] tsocmd "RDEFINE ZMFAPLA IZUDFLT.ZOSMF.IBM_CDP.CONFIG.CDPConfiguration UACC(NONE)"
RDEFINE ZMFAPLA IZUDFLT.ZOSMF.IBM_CDP.CONFIG.CDPConfiguration UACC(NONE)
ICH10006I RACLISTED PROFILES FOR ZMFAPLA WILL NOT REFLECT THE ADDITION(S) UNTIL A SETROPTS REFRESH IS ISSUED.

[CICS004@EPLEX1:/] tsocmd "SETROPTS REFRESH RACLIST(ZMFAPLA)"
SETROPTS REFRESH RACLIST(ZMFAPLA)

[CICS004@EPLEX1:/] tsocmd "PERMIT IZUDFLT.ZOSMF.IBM_CDP.CONFIG.CDPConfiguration CLASS(ZMFAPLA) ID(IZUADMIN) ACCESS(CONTROL)"
PERMIT IZUDFLT.ZOSMF.IBM_CDP.CONFIG.CDPConfiguration CLASS(ZMFAPLA) ID(IZUADMIN) ACCESS(CONTROL)
ICH06011I RACLISTED PROFILES FOR ZMFAPLA  WILL NOT REFLECT THE UPDATE(S) UNTIL A SETROPTS REFRESH IS ISSUED

[CICS004@EPLEX1:/] tsocmd "PERMIT IZUDFLT.ZOSMF.IBM_CDP.CONFIG.CDPConfiguration CLASS(ZMFAPLA) ID(IZUUSER) ACCESS(READ)"
PERMIT IZUDFLT.ZOSMF.IBM_CDP.CONFIG.CDPConfiguration CLASS(ZMFAPLA) ID(IZUUSER) ACCESS(READ)
ICH06011I RACLISTED PROFILES FOR ZMFAPLA  WILL NOT REFLECT THE UPDATE(S) UNTIL A SETROPTS REFRESH IS ISSUED

[CICS004@EPLEX1:/] tsocmd "SETROPTS REFRESH RACLIST(ZMFAPLA)"
SETROPTS REFRESH RACLIST(ZMFAPLA)
```

以下のTechNoteにあるCEA.CEA... というプロファイルが無かったので定義を追加し、IZUADMIN, IZUUSERグループにUPDATE権限を付与。追加で、エラーが出ていたCEA.CEATSO.TSOREQUESTプロファイルにも同様にUPDATE権限付与。(V1.1導入時に実施済み)
https://www.ibm.com/support/pages/receive-hbo6501w-error-web-browser-when-attempting-open-cdp-zosmf-configuration

```xxx:TSOコマンド例
RDEFINE SERVAUTH CEA.CEADOCMD UACC(NONE)
PERMIT CEA.CEADOCMD CLASS(SERVAUTH) ID(IZUADMIN) ACCESS(UPDATE)
PERMIT CEA.CEADOCMD CLASS(SERVAUTH) ID(IZUUSER) ACCESS(UPDATE)
...
SETROPTS REFRESH RACLIST(SERVAUTH)
```

z/OSMFのメニューから"構成"-"IBM Z Common Data Provider"を選択して、以下の管理画面が表示されることを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/85fa7afd-225f-7b73-2691-a787c5b11512.png)

これで構成ツールが使えそうなところまで確認できました。

## (2) Data Streamer
参考: [Configuring the Data Streamer](https://www.ibm.com/support/knowledgecenter/ja/SSGE3R_2.1.0/ds_config.html)

CDPZ02.V2R1M0.SHBOSAMP(HBODSPRO)に提供されるプロシージャーのサンプルを自環境の適当なPROCLIBにコピーして編集。

```
//HBODSPRO  PROC
//*
//ZLOGOUT EXEC PGM=BPXBATSL,REGION=0M,TIME=NOLIMIT
//*
//* Output and error data sets
//*
//STDOUT  DD   SYSOUT=*
//STDERR  DD   SYSOUT=*
//*
//* Parameter data
//*
//STDPARM  DD *
PGM /bin/sh
/usr/lpp/IBM/zcdp/v2r1m0/DS/LIB/startup.sh
/etc/cdpConfig/myPolicy.policy
50401 start=w trace=n
//*
//* Environment data
//*
//STDENV DD *
JAVA_HOME=/usr/lpp/java/J8.0_64
CDP_HOME=/usr/lpp/IBM/zcdp/v2r1m0/cdp_work
TZ=JST-9
#DEFAULT_HEAP=4g
#MAXIMUM_HEAP=4g
#RESOLVER_CONFIG=//'USER.TCPIP(TCPDATA)'
#_BPXK_SETIBMOPT_TRANSPORT=TCPIPOE
//*
//      PEND
//*********************************************************************
```

Data StreamerがListenするポートは50401とする。
また、CDP_HOMEとして ```/usr/lpp/IBM/zcdp/v2r1m0/cdp_work``` を指定したので、それに合わせてUSS上にこのディレクトリを作成しておく。
Sample.policyは後でポリシー作成後に置き換えるので、一旦はこのまま。
TZ=JST-9に変更

Data StreamerをSTARTED TASKとして実行する際のユーザーとしてCDP201を指定しておく。

```xxx:RACF設定例
[CICS004@EPLEX1:/] tsocmd "RDEFINE STARTED HBODSPRO.* STDATA(USER(CDP201))"
RDEFINE STARTED HBODSPRO.* STDATA(USER(CDP201))
ICH10006I RACLISTED PROFILES FOR STARTED WILL NOT REFLECT THE ADDITION(S) UNTIL A SETROPTS REFRESH IS ISSUED.

[CICS004@EPLEX1:/] tsocmd "SETROPTS REFRESH GENERIC(STARTED) RACLIST(STARTED)"
SETROPTS REFRESH GENERIC(STARTED) RACLIST(STARTED)
```

## (3) Log Forwarder

参考: [Configuring the Log Forwarder](https://www.ibm.com/support/knowledgecenter/ja/SSGE3R_2.1.0/lf_config.html)

OPERLOG設定有無によってセットアップ手順が異なります。ここでは、OPERLOG設定なしの想定とします。
ガイドにあるポリシーの作成(Configuration Toolの利用)は後回しにします。

CDPZ02.V2R1M0.SHBOSAMP(HBOPROC)に提供されるプロシージャーのサンプルを自環境の適当なPROCLIBにコピーして編集。

```xxx:HBOPROC
//HBOPROC  PROC OPT=''
//* The ENVDIR is defaulted to /usr/lpp/IBM/zscala/V3R1/samples in the
//* startup.sh script.
//*
//* Set HBOBASE to the directory where the startup.sh script resides.
//* The default directory for startup.sh is listed below.
// SET HBOBASE='/usr/lpp/IBM/zcdp/v2r1m0/LF/samples'
//*
//* Uncomment and set ENVDIR to the directory where the zlf.conf
//* environment file resides (do not remove the -e at the beginning of
//* the variable). If not uncommented, startup.sh will use the default
//* directory value, listed below.
//* SET ENVDIR='-e /usr/lpp/IBM/zscala/V3R1/samples'
// SET ENVDIR='-e /u/CDP201/cdpConfig'
//*
//***** HBOPROC PROC *************************************************
//*
//ZLOGOUT EXEC PGM=BPXBATSL,REGION=0M,TIME=NOLIMIT,
// PARM=('PGM /bin/sh &HBOBASE./startup.sh &OPT &ENVDIR')
//* Output data sets
//STDOUT  DD   SYSOUT=*
//STDERR  DD   SYSOUT=*
//*
//      PEND
//*********************************************************************
```

ENVDIRとして、/u/CDP201/cdpConfigを指定(ポリシーファイルがここに作成される想定)。

HBOBASEは、startup.shのディレクトリを指定してますが、V2.1インストールディレクトリパスに変更。
```HBOBASE='/usr/lpp/IBM/zcdp/v2r1m0/LF/samples'```


Log ForwarderをSTARTED TASKとして実行する際のユーザーとしてCDP201を指定しておく。さらに、マニュアル記述の通り、FACILITYクラスの BPX.CONSOLEプロファイルにREAD権限付与する。

```xxx:RACF設定例
[CICS004@EPLEX1:/] tsocmd "RDEFINE STARTED HBOPROC.* STDATA(USER(CDP201))"
RDEFINE STARTED HBOPROC.* STDATA(USER(CDP201))
ICH10006I RACLISTED PROFILES FOR STARTED WILL NOT REFLECT THE ADDITION(S) UNTIL A SETROPTS REFRESH IS ISSUED.
[CICS004@EPLEX1:/] tsocmd "SETROPTS REFRESH GENERIC(STARTED) RACLIST(STARTED)"
SETROPTS REFRESH GENERIC(STARTED) RACLIST(STARTED)

[CICS004@EPLEX1:/] tsocmd "PERMIT BPX.CONSOLE CLASS(FACILITY) ID(CDP201) ACCESS(READ)"
PERMIT BPX.CONSOLE CLASS(FACILITY) ID(CDP201) ACCESS(READ)
ICH06011I RACLISTED PROFILES FOR FACILITY WILL NOT REFLECT THE UPDATE(S) UNTIL A SETROPTS REFRESH IS ISSUED
[CICS004@EPLEX1:/] tsocmd "SETROPTS REFRESH RACLIST(FACILITY)"
SETROPTS REFRESH RACLIST(FACILITY)
```

SYSLOGデータ取得用User Exitを追加します。
OPERLOGなし、JES3利用なし、の環境なのでHBOSYSGというユーザーExitを追加します。

LPALSTxxにSHBOLPAを登録し、PROGxxにてEXITを登録する。以下IPL時に有効化される静的定義の例。

```xxx:SYS0.PARMLIB(LPALST01)
...
CDPZ02.V2R1M0.SHBOLPA(ZSPK01),
...
```

```xxx:SYS0.PARMLIB(PROG02)
...
EXIT ADD EXITNAME(CNZ_MSGTOSYSLOG) MODNAME(HBOSYSG)                            
...
```

必要に応じて動的設定もしくはIPL実施。


## (4) System Data Engine
参考: [Configuring the System Data Engine](https://www.ibm.com/support/knowledgecenter/ja/SSGE3R_2.1.0/sde_config.html)

SMFを取り込む際に、対象とするデータソースの形式によりセットアップ方法が異なります。ここでは、LogstreamではなくSYS1.MANxデータセットを取り込む想定とします。
ガイドにあるポリシーの作成(Configuration Toolの利用)は後回しにします。

PROGxxにAPF登録をします。

```xxx:SYS0.PARMLIB(PROG02)
...
 APF ADD                                                                   
     DSNAME(CDPZ02.V2R1M0.SHBOLOAD)                       VOLUME(ZSPK01)    
 APF ADD                                                                 
     DSNAME(CDPZ02.V2R1M0.SHBOLLST)                       VOLUME(ZSPK01)                        
...
```

CDPZ02.V2R1M0.SHBOSAMP(HBOSMF)に提供されるプロシージャーのサンプルを自環境の適当なPROCLIBにコピーして編集。

```xxx:HBOSMF
//HBOSMFCL EXEC PGM=HBOPDE,REGION=0M,TIME=1440,
//         PARM='SHOWINPUT=NO,ZIIPOFFLOAD=NO'
//STEPLIB  DD DISP=SHR,DSN=CDPZ02.V2R1M0.SHBOLOAD
//*
//* CONTROL STATEMENTS
//* The control statement file must be customised to match
//* the target of the Common Data Provider configuration utility.
//*
//HBOIN    DD *
SET IBM_SDE_INTERVAL = '1 MINUTES';
SET IBM_UPDATE_TARGET = 'PORT 50401';
SET IBM_FILE_FORMAT = 'CSV';
SET IBM_RESOURCE = 'EXIT';
//         DD  PATH='/etc/cdpConfig/hboin.sde',
//         PATHDISP=(KEEP),RECFM=V,LRECL=255,FILEDATA=RECORD
//*
//* Sample COLLECT statement for processing real-time SMF data
//*
//         DD *
COLLECT SMF FROM &IBM_RESOURCE
  EVERY &IBM_SDE_INTERVAL;
/*
//HBOOUT   DD SYSOUT=*
//HBODUMP  DD SYSOUT=*
//HBODEBUG DD SYSOUT=*
```

```//STEPLIB  DD DISP=SHR,DSN=CDPZ02.V2R1M0.SHBOLOAD``` => データセット名変更
```SET IBM_UPDATE_TARGET = 'PORT 50401'; ``` => Data Streamerのポート番号指定
```SET IBM_RESOURCE = 'EXIT';```  => MANxデータセットをEXITにて取得する想定なので、"EXIT"で固定
```//         DD  PATH='/etc/cdpConfig/hboin.sde' ```  => ポリシーファイル名は後で変更

System Data EngineをSTARTED TASKとして実行する際のユーザーとしてCDP201を指定しておく。

```xxx:RACF設定例
[CICS004@EPLEX1:/] tsocmd "RDEFINE STARTED HBOSMF.* STDATA(USER(CDP201))"
RDEFINE STARTED HBOSMF.* STDATA(USER(CDP201))
ICH10006I RACLISTED PROFILES FOR STARTED WILL NOT REFLECT THE ADDITION(S) UNTIL A SETROPTS REFRESH IS ISSUED.

[CICS004@EPLEX1:/] tsocmd "SETROPTS REFRESH GENERIC(STARTED) RACLIST(STARTED)"
SETROPTS REFRESH GENERIC(STARTED) RACLIST(STARTED)
```


LPALST登録

```xxx:SYS0.PARMLIB(LPALST01)
...
CDPZ02.V2R1M0.SHBOLPA(ZSPK01),  
...
```

EXIT登録

SMFPRMxxのSUBSYS定義を確認

```SYS0.PARMLIB(SMFPRMxx)
...
 SUBSYS(STC,EXITS(IEFU29,IEFU83,IEFU84,IEFUJP,IEFUSO,IEFACTRT),            
               INTERVAL(SMF,SYNC))                                         
...
```

SUBSYSで"STC"というのが定義されているので、EXITNAMEとして、SYSSTC.IEFUxxを定義する。


```xxx:SYS0.PARMLIB(PROG02)
...
EXIT ADD EXITNAME(SYSSTC.IEFU83) MODNAME(HBOSMFEX)  
EXIT ADD EXITNAME(SYSSTC.IEFU84) MODNAME(HBOSMFEX)  
EXIT ADD EXITNAME(SYSSTC.IEFU85) MODNAME(HBOSMFEX)                              
...
```

必要に応じて動的設定もしくはIPL実施。

### 補足
各種コマンドの備忘録

APF動的登録

```
SETPROG APF,ADD,DSN=CDPZ02.V2R1M0.SHBOLOAD,VOLUME=ZSPK01
SETPROG APF,ADD,DSN=CDPZ02.V2R1M0.SHBOLLST,VOLUME=ZSPK01
```

APF確認

```xxx:例
D PROG,APF
...
517  ZSPK01 CDPZ02.V2R1M0.SHBOLOAD 
518  ZSPK01 CDPZ02.V2R1M0.SHBOLLST 
...
```

EXIT動的削除

```
SETPROG EXIT,DELETE,EXITNAME=CNZ_MSGTOSYSLOG,MODNAME=GLASYSG
SETPROG EXIT,DELETE,EXITNAME=SYS.IEFU83,MODNAME=HBOSMFEX
SETPROG EXIT,DELETE,EXITNAME=SYS.IEFU84,MODNAME=HBOSMFEX
SETPROG EXIT,DELETE,EXITNAME=SYS.IEFU85,MODNAME=HBOSMFEX
```

LPA動的削除

```
SETPROG LPA,DELETE,MODNAME=HBOSMFEX,FORCE=YES
```

LPA動的登録

```
SETPROG LPA,ADD,MODNAME=HBOSMFEX,DSNAME=CDPZ02.V2R1M0.SHBOLPA       
IEF196I IEF237I 5187 ALLOCATED TO SYS00496                          
IEF196I IEF285I   CDPZ02.V2R1M0.SHBOLPA                        KEPT 
IEF196I IEF285I   VOL SER NOS= ZSPK01.                              
CSV551I 12.09.18 LPA ADD 383                                        
SUCCESSFUL: 1  UNSUCCESSFUL: 0  NOT PROCESSED: 0                    
MODULE    RESULT                                                    
HBOSMFEX  SUCCESSFUL                                                
```

※SHBOLPA以下の他のモジュールも同様に実施

LPA確認

```
D PROG,LPA,MOD=HBOSMFEX                                  
CSV550I 12.11.13 LPA DISPLAY 385                         
FLAGS  MODULE    ENTRY PT  LOAD PT   LENGTH    DIAG      
 D P   HBOSMFEX  963290E8  16329000  00000ED0  038B7F10  
```

EXIT動的追加

```
SETPROG EXIT,ADD,EXITNAME=CNZ_MSGTOSYSLOG,MODNAME=HBOSYSG        
CSV420I MODULE HBOSYSG HAS BEEN ADDED TO EXIT CNZ_MSGTOSYSLOG   

SETPROG EXIT,ADD,EXITNAME=SYSSTC.IEFU83,MODNAME=HBOSMFEX       
CSV420I MODULE HBOSMFEX HAS BEEN ADDED TO EXIT SYSSTC.IEFU83   
SETPROG EXIT,ADD,EXITNAME=SYSSTC.IEFU84,MODNAME=HBOSMFEX       
CSV420I MODULE HBOSMFEX HAS BEEN ADDED TO EXIT SYSSTC.IEFU84   
SETPROG EXIT,ADD,EXITNAME=SYSSTC.IEFU85,MODNAME=HBOSMFEX       
CSV420I MODULE HBOSMFEX HAS BEEN ADDED TO EXIT SYSSTC.IEFU85   
```

EXIT確認

```
D PROG,EXIT,MODNAME=HBOSYSG            
CSV462I 12.35.34 PROG,EXIT DISPLAY 455 
MODULE  HBOSYSG                        
EXIT(S) CNZ_MSGTOSYSLOG          

D PROG,EXIT,MODNAME=HBOSMFEX                              
CSV462I 15.50.39 PROG,EXIT DISPLAY 658                    
MODULE  HBOSMFEX                                          
EXIT(S) SYSSTC.IEFU85    SYSSTC.IEFU84    SYSSTC.IEFU83   
```

### カスタマイズ用Dataset作成
参考: [Creating a System Data Engine data stream definition](https://www.ibm.com/support/knowledgecenter/SSGE3R_2.1.0/webui_custom_ds_create_sde.html#webui_custom_ds_create_sde__user_concatenation)

CDPZ02.V2R1M0.HBODEFSに提供されているSystem Data Engine定義ファイルをカスタマイズした場合に、その配置先となるデータセットを作成しておきます。
ここでは、CDPZ02.CUSTOM.HBODEFSという名前で作成しておきます(サイズ等はCDPZ02.V2R1.M0.HBODEFSと同じ)。

```
Data Set Name  . . . : CDPZ02.CUSTOM.SHBODEFS                                
                                                                             
General Data                          Current Allocation                     
 Volume serial . . . : ZSPK01          Allocated tracks  . : 300             
 Device type . . . . : 3390            Allocated extents . : 1               
 Organization  . . . : PO              Maximum dir. blocks : 30              
 Record format . . . : VB                                                    
 Record length . . . : 255                                                   
 Block size  . . . . : 27998          Current Utilization                    
 1st extent tracks . : 300             Used tracks . . . . : 1               
 Secondary tracks  . : 25              Used extents  . . . : 1               
                                       Used dir. blocks  . : 1               
                                       Number of members . : 0               
                                                                             
                                      Dates                                  
                                       Creation date . . . : 2020/01/16      
                                       Referenced date . . : ***None***      
                                       Expiration date . . : ***None***      
```


# ELK側の準備

参考: [Preparing to send data to Elasticsearch](https://www.ibm.com/support/knowledgecenter/ja/SSGE3R_2.1.0/elasticsearch_prep.html)
CDPz V2.1のマニュアルでは、サポートされるELKスタックのバージョンの記述が無くなっている！
とりあえず手元にあるRHEL上のELK V7.xを使うことにします。

ELKのインストールは割愛します。(rpmパッケージをダウンロードしてそれぞれインストール)
参考:
[fluentd/Elasticsearch/kibanaを試す: (1)インストール](https://qiita.com/tomotagwork/items/6c8e7ad59095bce9a21e)
[Logstashメモ - (1)インストール/簡易操作](https://qiita.com/tomotagwork/items/a40844aabfaec7449514)

## 構成

最低限の構成

### Elasticsearch
/etc/elasticsearch/elasticsearch.yml 編集

```yml:elasticsearch.yml抜粋
http.port: 9200
http.host: 0.0.0.0
```

### Kibana
/etc/kibana/kibana.yml 編集

```yml:kibana.yml抜粋
server.port: 5601
server.host: "0.0.0.0"
```

### Logstash
参考: [Preparing to send data to Elasticsearch](https://www.ibm.com/support/knowledgecenter/ja/SSGE3R_1.1.0/elasticsearch_prep.html)

Elasticsearchに取り込むためのLogstash構成ファイルが、USS上の/usr/lpp/IBM/zcdp/v2r1m0/DS/LIB/ibm_cdpz_ELK.tar.gzに提供されています。
これをバイナリーモードでLinux側にコピーして展開します。取り込むデータ毎に各種Logstash構成ファイルが含まれています。

デフォルトのlogstash構成確認ておきます。
systemdのlogstash.serviceを見てみると...

```/etc/systemd/system/logstash.service
[Unit]
Description=logstash

[Service]
Type=simple
User=logstash
Group=logstash
# Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.
# Prefixing the path with '-' makes it try to load, but if the file doesn't
# exist, it continues onward.
EnvironmentFile=-/etc/default/logstash
EnvironmentFile=-/etc/sysconfig/logstash
ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash"
Restart=always
WorkingDirectory=/
Nice=19
LimitNOFILE=16384

[Install]
WantedBy=multi-user.target
```

```--path.settings``` として/etc/logstashディレクトリが指定されています。
[Running Logstash from the Command Line](https://www.elastic.co/guide/en/logstash/7.2/running-logstash-command-line.html)

このディレクトリ下のlogstash.ymlが構成ファイルとして使われます。

```yml:/etc/logstash/logstash.yml
...
# Where to fetch the pipeline configuration for the main pipeline
#
# path.config: 
...
```

path.configはコメントアウト状態のままにしておきます。
同ディレクトリのpipelines.ymlを確認。

```yml:/etc/logstash/pipelines.yml
# This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
#   https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html

- pipeline.id: main
  path.config: "/etc/logstash/conf.d/*.conf"
```

ここでは確認だけで、Logstashの構成は後回し...


### firewalld

firewallを使用している場合、9200と5601ポートにアクセスできるよう穴をあける。

```
[root@Test08 /etc/firewalld/zones]# firewall-cmd --zone=public --add-port=9200/tcp --permanent
success

[root@Test08 /etc/firewalld/zones]# firewall-cmd --zone=public --add-port=5601/tcp --permanent
success

[root@Test08 /etc/firewalld/zones]# cat public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <port protocol="tcp" port="9200"/>
  <port protocol="tcp" port="5601"/>
</zone>

[root@Test08 /etc/firewalld/zones]# firewall-cmd --reload
success
```

### SSHポートフォワード
今回お試しで利用する環境は、z/OSのマシンと、ELKスタックを乗せるLinuxマシンが、別のネットワークセグメントにあり、z/OS側がよりセキュアなネットワークとなっています。そのため、z/OS側からLinuxマシンに対してTCPのコネクションを張ることが制限されています(Linuxからz/OSへのSSH接続は可)。これを回避するために、テストをする時だけ一時的にSSHポートフォワードの構成を行うことにします。

ポートフォワードを行うためにLinux上で発行するコマンド例
```ssh -f -N -R 8081:localhost:8081 <user>@eplex1```

公開鍵認証の設定をしておくか、上のコマンド実行時にパスワードを入力する必要があります。
これをテスト実行するときだけ有効にする想定です。

SSHやポートフォワードについては、以下の記事もご参照ください。
参考: [マルチ・プラットフォームを扱うインフラ屋さんのための連携技術: SSH編](https://qiita.com/tomotagwork/items/b35aa09c1aa1acb3d554)

## 起動

```
[root@test08 ~]# systemctl start elasticsearch.service
[root@test08 ~]# systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: disabled)
   Active: active (running) since 火 2020-01-07 13:22:20 JST; 1min 48s ago
     Docs: http://www.elastic.co
 Main PID: 7506 (java)
    Tasks: 83
   CGroup: /system.slice/elasticsearch.service
           tq7506 /usr/share/elasticsearch/jdk/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatin...
           mq7672 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

 1月 07 13:22:20 test08 systemd[1]: Started Elasticsearch.
 1月 07 13:22:20 test08 systemd[1]: Starting Elasticsearch...
 1月 07 13:22:47 test08 elasticsearch[7506]: OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will...release.
Hint: Some lines were ellipsized, use -l to show in full.


[root@test08 ~]# systemctl start kibana.service
[root@test08 ~]# systemctl status kibana.service
● kibana.service - Kibana
   Loaded: loaded (/etc/systemd/system/kibana.service; disabled; vendor preset: disabled)
   Active: active (running) since 火 2020-01-07 13:24:26 JST; 15s ago
 Main PID: 7999 (node)
    Tasks: 21
   CGroup: /system.slice/kibana.service
           mq7999 /usr/share/kibana/bin/../node/bin/node --no-warnings --max-http-header-size=65536 /usr/share/kibana/bin/../src/cli -c /etc/kibana/kiba...

 1月 07 13:24:26 test08 systemd[1]: Started Kibana.
 1月 07 13:24:26 test08 systemd[1]: Starting Kibana...
```

Elasticsearchにアクセスしてみる

```
[root@test08 ~]# curl -X GET http://localhost:9200
{
  "name" : "test08",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "cGII5hcKSQKyrQZnZ0JPZw",
  "version" : {
    "number" : "7.2.0",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "508c38a",
    "build_date" : "2019-06-20T15:54:18.811730Z",
    "build_snapshot" : false,
    "lucene_version" : "8.0.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
```

Kibanaにアクセスしてみる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/ff9826cb-7a61-872e-63a8-59a22b8b7dd2.png)

とりあえず最低限の構成は出来上がりました。

# データ取り込みのための構成(Overview)
さて、上の手順で基本的なセットアップは済んだので、ここから、実際にデータを取得するための構成をしていきます。
何のデータをどこに流し込むか、ということを色々カスタマイズできるようなのですが、バリエーションも豊富で仕組みも結構複雑なので、まず、ここでは全体像を押さえて、具体的なデータ取得は別の記事で取り上げることにします。連携先はタイトルにあるようにELKスタックを前提としていますが、一旦ここではELK側は置いておいて、CDPz側にフォーカスします。

ざっくり言うと、以下のステップを踏むことになります。
1.Config Toolで"ポリシー"と呼ばれる定義を作成します。"ポリシー"とは、何のデータをどのように取得して、それをどこにどうやって送るか、というような情報を保持するものです。
2.作成されたポリシーの情報を元にして、CDPzの各コンポーネントを稼働させます。

ホスト側コンポーネントおさらい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/04f67676-d5b1-6753-00f5-76227695aebe.png)


以降、以下の省略形を使う場合があります。
DS: Data Streamer
LF: Log Forwarder
SDE: System Data Engine



## 1.Config Toolによるポリシーの作成
z/OSMFのプラグインとして、CDPzの構成ツールをセットアップしましたので、まずはそれを使ってポリシーを作成します。
※製品が事前に用意しているメニューから取得したい情報を選択して定義を作成していきますが、全ての情報がメニューとして用意されている訳ではありません。用意されていない項目を取得したい場合、追加でカスタマイズが必要となりますが、ここでは一旦用意されているメニューを取得するイメージで記載します。

### ポリシーエディター
Create New policyを選択すると、Policy Profile Editの画面となり、ここでGUIベースでポリシーを定義することができます。以下のようなイメージでポリシーを作成していきます。

図1:ポリシー編集画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/1114fc28-061b-156e-9961-0f40f0138100.png)

左側に縦に並んでいる青い箱は、何のデータを取得したいか、ということを表しています(LFもしくはSDE関連の情報)。SYSLOGやSMF Type110 Subtype1のデータなど、取得したいデータを選んでいきます。
※これら取得するデータの情報は"Data Stream"と呼ばれていますが、"Data Streamer"とは別物ですのでご注意ください！(まったくネーミングが紛らわしい！！！)
製品が用意しているメニューとしては、以下のようなものがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/3c11d6b5-b405-a4a1-8f88-4ebf7aa1768b.png)


図1の右側にある緑色の箱は、データをどこにどうやって送るかという情報を設定するもので(DS関連の情報)、Subscriberと呼ばれています。
※ネーミングに一貫性が無くて分かりにくい！！！

DataStreamとSubscriberはそれぞれ関連付けされて、どのデータをどこに送るかというのを定義していくことになります。

ポリシー編集画面で定義をしていく流れを図にするとこんな感じです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/cc09cfcf-6cb3-51eb-6667-f465fad45459.png)

上の図中の(1)-1, (1)-2で示されているLog Forwarder用の設定、System Data Engine用の設定はそれぞれ以下の通り。

(1)-1 LOG FORWARDER
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/c49c7006-96a8-2f2b-efbf-b66b8784d5c3.png)

(1)-2 SYSTEM DATA ENGINE
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/ee2683d0-3c78-a5bf-9ee0-23575e71ad33.png)

### 生成物
上のエディターでGUIベースでポリシーを作成して保存すると、定義内容が反映されたファイルがUSS上に作成されます。
出力先はConfig Toolセットアップ時に指定したPolicy file directoryです。ここでは/u/CDP201/cdpConfig/

| ファイル | 説明 |
|:-----------|:------------|
|\<policyName\>.policy    | Data Streamer関連情報を管理(どのデータをどこに送付するか)。Data Streamer起動プロシージャーで、このファイル名を指定。|
|\<policyName\>.config.properties <br> \<policyName\>.zlf.conf| Log Forwarder関連情報を管理(Log Fowarder関連ライブラリ、使用するData Streamerのポート番号など)。Log Forwader起動プロシージャーの”ENVDIR”で示されたディレクトリ下に適切な名前で配置する必要がある。|
|\<policyName\>.sde | System Data Engine関連情報を管理(取得するデータの情報)。実体は、ポリシーに追加したData Streamに紐づくSHBODEFSデータセットのメンバー(Data Streamとしての処理を独自言語で実装したもの)をコンカチしたもの。System Data Engine起動プロシージャー/バッチ実行用JCLで、このファイル名を指定。|
|\<policyName\>.layout | ポリシーエディターの画面レイアウト情報を保持|


## 2.CDPz各コンポーネントの起動

上で生成されたファイルを使用して、CDPzの各コンポーネントを実行することになります。
そのため、起動プロシージャーを編集し、上で生成したファイルを参照するようにします。

Data Streamer: HBODSPRO => xxx.policyファイル
Log Forwarder: HBOPROC => xxx.config.properties, xxx.zlf.confファイルのディレクトリ
System Data Engine: HBOSMF => xxx.sdeファイル


## 補足: オブジェクト相関図

なかなか全体像を捉えるのが難しく、名前も混乱しやすいので、各オブジェクトの相関を整理してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132331/604452b8-9310-b204-925d-921e7a1f2d90.png)




# おわりに
ようやく全体のイメージがわかってきた気がします。
今後、SYSLOG, SMFデータをELKに取り込む方法を見ていきたいと思います。