IBM i 間でのデータの転送方法

IBM i 初心者で基本的な勉強を始めていくにあたりIBM i のデータ転送を行ってみたので、備忘録代わりに記載します。
本記事では、IBM i Ver7.4からIBM i Ver7.5の環境にデータ転送を行う手順を紹介します。
# 検証環境
今回使用する環境は以下になります。
IBM i Ver7.4

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/6e63ec75-83ae-a0bf-f81b-4ac3ad84b3da.png)

IBM i Ver7.5

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/574eb61b-cc60-b3eb-83f6-b61f6f1f3424.png)

検証の手順、概要を示した図を以下に示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/89af4c94-dd3f-aba2-dbc4-3680fd2de560.png)

※転送するライブラリー（DEMOLIB）につきましては事前に準備してあるものとさせていただきます。

検証では、Ver7.4環境のDEMOLIBのライブラリー全体をIMAOBPという保管ファイルに保管して、Ver7.5環境のIMAOTESTライブラリーに転送します。その後IMAOTESTライブラリーの中でデータをリストアして復元するまでの手順を記載しております。

また、今回はVer7.4⇨Ver7.5のバージョン間でデータの転送を行いますが、より古いバージョンから転送元と同じか新しいバージョンへ転送する場合であれば同様のコマンド操作で設定可能という理解です。

ただ、自分のバージョンより古いバージョンに転送したい場合は、①の手順でSAVLIBする際に、ターゲットリリースTGTRLSというパラメーターに転送先のIBM i OSバージョンを指定する必要があります。また、古いバージョン指定でバックアップした場合、コンパイル済みのオブジェクト(*pgm)は保管されません、代わりに古いOS（転送先）でリコンパイルが必要です。

# 1. 保管ファイルの作成・コピー
ます始めにIBM i の世界ではデータのバックアップの際にライブラリー・オブジェクトの転送をする際（クラウドやテープにバックアップを取る等）、転送するデータを保管ファイルに保管してから転送を行います。

そこで転送元環境（IBM i Ver7.4）の環境に保管ファイルを入れるためのライブラリーの作成をいたします。

``` CRTLIB LIB(ライブラリー名) ```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/f03c9dc1-db06-88ab-4816-74b6e76e825b.png)

先ほど作成したバックアップ用のライブラリーに保管ファイルを作成します。

```CRTSAVF FILE(ライブラリー名/保管ファイル名)```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/cbb0a899-686f-202b-4883-6233f37d60af.png)

保管ファイルにDEMOLIBというライブラリーからデータの保管を行います。

```SAVLIB LIB(データ転送元のライブラリー名) DEV(*SAVF) SAVF(保管ファイルライブラリー名/保管ファイル名)```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/bb435d2e-eb24-ad2f-c1e2-f90414c8e330.png)

ここでデータ転送先の区画に移動して、転送された保管ファイルを入れるためのライブラリーの作成を行います。（検証ではVer 7.5 環境に移動）

``` CRTLIB LIB(ライブラリー名) ```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/c30a208a-6d35-ae40-dc04-42d0fcf1c6d9.png)

# 2. データの転送
データの転送を行う場合、FTPコマンドを使用して行います。

```FTP```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/7a710a9e-d7d0-5170-3d18-eaf0414b021e.png)

データ転送先のIPアドレスを入力します。
※転送元と転送先のIPアドレスのサブネットが一致している必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/f1e9946a-b1a9-80a0-cf88-85e1689b3862.png)

今回はデフォルトの設定で転送するため、そのままEnterキーを押して続行します。
コード化文字セットなどの編集がこちらで行えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/749edef8-dc64-70cb-2519-3c0bd14eff7c.png)

転送先のユーザーのログインID、パスワードの入力を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/26f4525e-149d-8e2f-2daf-c3648fbd9883.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/e1772976-a7b1-59c3-3743-fb22a3ad9889.png)

文字化けを防ぐためにバイナリーモードへ変更します。

```BIN```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/f2f6b9be-b6a0-1b58-123c-dbe8c5061a94.png)

以下のコマンドを入力して、ネームフォーマットを１番に変更します。
デフォルトでは0になっております。
変更することによって、QSYSのオブジェクトをIFSの入力形式で認識できるようになります。

```NAMEFMT 1```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/2cdc51ac-0e49-b31c-b992-4b243e09d446.png)

保管ファイルの転送先のライブラリーへ以下のコマンドを使用して移動します。
ここでIBM i ファイルをIFS形式で表記する際”ライブラリー名.LIB"や"保管ファイル名.SAVF"と記入することにご注意ください。

```CD /QSYS.LIB/転送先ライブラリー名.LIB```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/6d6d93b8-6961-9a6a-ec83-28eab2c5f879.png)

PUTコマンドを使用してデータの転送を行います。

```PUT /QSYS.LIB/転送元ライブラリー名.LIB/保管ファイル名.SAVF```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/31de71cc-98ab-4ed2-3d57-44200fc0877e.png)

データの転送が完了しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/a1f35577-d542-84da-804d-c674031a0cfd.png)

# 3. 保管ファイルのリストア
保管ファイルのリストアには以下のコマンドを入力してF4キーを押下します。

```RSTLIB```

保管されたライブラリー：転送するデータの元々のライブラリーを記入。（今回はIBM i 7.4に存在するライブラリー名DEMOLIB）
装置：＊SAVF
保管ファイル：転送されたデータの入っているファイル名（IMAOBP）
ライブラリー：保管ファイルの入っているライブラリー名（IBM i 7.5 環境の保管ファイルが入っているライブラリー名IMAOTEST）
ライブラリー復元：保管ファイルのデータの復元先ライブラリー名

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/941f636b-dbaf-90fc-4e25-a7e8d389b5dd.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/0050edd4-2778-cb68-6bb0-750ce8ef4507.png)

ライブラリーを確認すると復元先を確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3631732/e13ab12b-5234-4ecd-8acb-46b9054ec5ee.png)

以上でIBM i 間でのデータの転送操作が完了しました。