020-010 前提条件及び環境構築

## 前提条件

本コンテンツのサンプルコードは、**V7R2M0** 以上で動作を確認しており、CCSID は **5026** で作成されたソースコードである。  
本コンテンツの **FF-RPG** サンプルコードを閲覧、実行するにあたり、次の手順で環境構築をする必要がある。但し読者が、プログラム実行可能な環境を所持していない場合は、サンプルコードの閲覧のみが可能となる。

## （1）QEOLFF（FF-RPG サンプルコード）の復元

QEOLFF（FF-RPG サンプルコード）の復元を行う。
[GitHub IBMCJ-2023_FF_RPG SAVFディレクトリより](https://github.com/IBMCJ-2023-C06/020-FF_RPG_samples/tree/main/SAVF) 自身の環境にあったバージョンの SAVF（ファイル名：QEOLFF_yyyymmdd-hhmmss-V7R*M0.savf） をPC等へダウンロードする。原則、自己所有する IBM i バージョン以下であれば動作する

![010-010-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520639/8724c394-1f70-6623-9dbc-d3972b10c7ce.png)
![010-010-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520639/6451c8dd-cc6b-deb2-03d4-a2ec49b0c949.png)

既に自己のPCに **git** が使え環境にある場合は、GitHub サイトより全てのサンプルコンテンツを次のコマンド  
 `git clone https://github.com/IBMCJ-2023-C06/020-FF_RPG_samples.git`  
 でダウンロード＆複製する事が可能。
 
また **git** が使えない環境の場合は、GitHub サイト手動で zipファイルをダウンロードする事も可能。
![010-010-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520639/34a25283-dfc0-9ec7-a97f-677712d30ad8.png)

続いてここでは FTP を使用した SAVF の復元例を記載する

### （1-1）IBM i 上に任意の SAVF を作成する

```CL
# 任意のライブラリ QGPL に QEOLFF という SAVF を作成
CRTSAVF FILE(QGPL/QEOLFF)
```

### （1-2）IBM i 上の SAVF にダウンロードした SAVF を転送する

例）以下 Windowsコマンド・プロンプトを用いた例

```bat

ftp xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx に接続しました。
220-QTCP AT AS400.
220 CONNECTION WILL CLOSE IF IDLE MORE THAN 5 MINUTES.
501 OPTS UNSUCCESSFUL; SPECIFIED SUBCOMMAND NOT RECOGNIZED.
ユーザー (xxx.xxx.xxx.xxx:(none)):hoge
331 ENTER PASSWORD.
パスワード:****
230 HOGE LOGGED ON.
ftp>bin
200 REPRESENTATION TYPE IS BINARY IMAGE.
ftp> put C:\Users\ユーザー名\ダウンロードフォルダ\QEOLFF_20230814-132300-V7R3M0.savf /QSYS.LIB/QGPL.LIB/QEOLFF.FILE
200 PORT SUBCOMMAND REQUEST SUCCESSFUL.
150-NAMEFMT SET TO 1.
150 SENDING FILE TO MEMBER QEOLFF IN FILE QEOLFF IN LIBRARY QGPL.
226 FILE TRANSFER COMPLETED SUCCESSFULLY.
ftp: 2514336 バイトが送信されました 0.40秒 6317.43KB/秒。
ftp> quit
221 QUIT SUBCOMMAND RECEIVED.

exit

```

入力するコマンド部分の要約は以下の通り（※ **xxx.xxx.xxx.xxx** は IBM i のIPアドレス等）

- `ftp xxx.xxx.xxx.xxx`
- `IBM i ユーザー`
- `IBM i パスワード`
- `bin`
- `put C:\Users\ユーザー名\ダウンロードフォルダ\QEOLFF_20230814-132300-V7R3M0.savf /QSYS.LIB/QGPL.LIB/QEOLFF.FILE`
- `quit`
- `exit`

### （1-3）IBM i 上の SAVF より QEOLFF ライブラリを復元

RSTLIB コマンドを用いた **QEOLFF** の復元

例）復元コマンド

```CL
RSTLIB SAVLIB(QEOLFF) DEV(*SAVF) SAVF(QGPL/QEOLFF)
```

## （2）QEOLFF（FF-RPG サンプルコード）の動作確認

### （2-1）CCSID 5026 環境の設定

QEOLFF は CCSID 5026 として提供されているため、ここでは CCSID 5026 環境に併せて動作確認を実施する。  

次の様に 5250 セッションの **[ホスト・コード・ページ]** を **「 930 日本語（カタカナ）」** に設定する。  

![010-030-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520639/055108b7-965f-deaf-d9e9-30040929fe0c.png)


ユーザーがサインオンした後は、次のコマンド `CHGJOB CCSID(5026)` で CCSID を **5026** に変更する。（※既にユーザーのジョブ CCSID が **5026** と分かっている場合は不要）

### （2-2）ライブラリ・リスト設定

QEOLFF には予めコンパイル済みのプログラムが既に存在しているため、これを用いて復元が完了後に、動作の確認を行う。
今後 QEOLFF の動作確認、実行、サンプルコードのコンパイルをする際にはライブラリ・リストを以下の様に設定する必要がある。

例）ライブラリ・リスト設定コマンド

1. ADDLIBLE LIB(QEOLFF) POSITION(*LAST)
2. または EDTLIBL

```txt
                           ライブラリー・リスト編集                             
                                                          システム :   AS400  
 新規／変更情報を入力して，実行キーを押してください。                           
                                                                                
  順序番号   ﾗｲﾌﾞﾗﾘｰ         順序番号   ﾗｲﾌﾞﾗﾘｰ         順序番号   ﾗｲﾌﾞﾗﾘｰ      
       0                        160                        320                  
      10     QGPL               170                        330                  
      20     QTEMP              180                        340                  
      30     QEOLFF             190                        350                  
      40                        200                        360                  
      50                        210                        370                  

```

### （2-3）サンプルプログラムの動作確認

次のコマンド `CALL PGM(QEOLFF/IPL020@YU2)` でサンプルプログラムを実行し、以下の画面が表示されていれば、導入が正常にされている。

![010-030-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520639/138de618-089e-523d-4d1a-90720f7c22b3.png)


## （3）QEOLFF（FF-RPG サンプルコード）の閲覧、編集環境

本サンプルコードを閲覧／編集する方法は以下の方法で可能となっている。

1. 5250 のSEU
2. VSCode（Visual Studio Code） 等のテキストエディタを使用する
3. VSCode の場合は **Code for IBM i** を導入するとより効果的

参考までに IBM i と VSCode に関する幾つかの外部リンクを掲載しておく

- VSCode（Code for IBM i）の導入に関して
  -  [株式会社中部システム - Visual Studio CodeにおけるRPG とIBM i](https://www.cscweb.jp/seiden-info/visual-studio-code-rpg-and-ibm-i/)
- VSCode の追加機能に関して 
  - [株式会社中部システム - VSCode for IBM i－ヒントと追加オプション](https://www.cscweb.jp/seiden-info/vs-code-for-ibm-i-tips-and-extras/)
- VSCode のIBM i PHP開発に関して 
  - [株式会社中部システム - Visual Studio Code－IBM iとPHP](https://www.cscweb.jp/seiden-info/visual-studio-code-ibm-i-php/)

## 編集履歴

- 作成日：IBMCJ-2023-C06 (CSC)Y.USHIDA 2023.08.20 12:14 [新規投稿]
- 更新日：IBMCJ-2023-C06 (___)_.______ 20__.__.__ __:__ []

## 資料に関する注意書き

本資料の著作権は、日本アイ・ビー・エム株式会社（IBM Corporationを含み、以下、IBMといいます。）に帰属します。
ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独自の見解を反映したものです。それらは情報提供の目的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助言を意図したものではなく、またそのような結果を生むものでもありません。本資料に含まれている情報については、完全性と正確性を期するよう努力しましたが、「現状のまま」提供され、明示または暗示にかかわらずいかなる保証も伴わないものとします。本資料またはその他の資料の使用によって、あるいはその他の関連によって、いかなる損害が生じた場合も、IBMまたはセッション発表者は責任を負わないものとします。 本資料に含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかなる保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使用を規定する適用ライセンス契約の条項を変更することを意図したものでもなく、またそのような結果を生むものでもありません。

本資料でIBM製品、プログラム、またはサービスに言及していても、IBMが営業活動を行っているすべての国でそれらが使用可能であることを暗示するものではありません。本資料で言及している製品リリース日付や製品機能は、市場機会またはその他の要因に基づいてIBM独自の決定権をもっていつでも変更できるものとし、いかなる方法においても将来の製品または機能が使用可能になると確約することを意図したものではありません。本資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上高の向上、またはその他の結果が生じると述べる、または暗示することを意図したものでも、またそのような結果を生むものでもありません。 パフォーマンスは、管理された環境において標準的なIBMベンチマークを使用した測定と予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラミングの量、入出力構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありません。

記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使用したか、またそれらのお客様が達成した結果の実例として示されたものです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。

IBM、IBM ロゴは、米国やその他の国におけるInternational Business Machines Corporationの商標または登録商標です。他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。現時点での IBM の商標リストについては、ibm.com/trademarkをご覧ください。