■概略
オープンソースエンジニア歴30年超の筆者が2023年からIBMiを学びだした学習記録です
FFRPGで開発をするためVSCodeにCode for IBMiをインストールします
■VSCodeのインストール
◯VSCode
自分のOS用のインストーラをダウンロードしインストールする
https://code.visualstudio.com/download
◯VSCodeの拡張(IBMi LanguagesとCode for IBMi)
VSCodeでRPG言語のハイライトをしてくれるプラグイン(IBMi Languages)と
IBMi開発用のプラグイン(Code for IBMi)を導入する
VSCodeを起動し、左ペインの[Extenstions(拡張)]で[Search Extensions in Marketplace]で
IBMi Languages と Code for IBMi を入力してインストールする
◯ACS(5250エミュレータ)
5250でログインはしませんが、ACSの持つ「SQLスクリプトの実行」アプリを使うので、
ACSをインストールする
以下の手順に従い、
・PCにJDKのインストール
・IBM IDの取得とACSのダウンロード
・ACSのインストール
を行う
参考にしたURL
https://www.i-cafe.info/column/serials/dekiruibmi_no6
◯PC → IBMi
IBMiへのsshをパスワードなしで利用するために、事前に鍵認証を作成し、公開鍵を登録する
1) PCのPowerShellで秘密鍵・公開鍵を作成する
PS C:\Users\名前> ssh-keygen -f {鍵ファイル名} -t rsa
→ 秘密鍵の {鍵ファイル名}.key と 公開鍵の {鍵ファイル名}.pub が作成される
C:\Users\名前.sshに上記ファイルをコピーしておく
2) 公開鍵をIBMiに登録する(.sshディレクトリを作成する)
IBMiにsshしID/PWでログインする
以下user1でログインした例
$ pwd
/home/USER1
$ mkdir .ssh
$ chmod 700 .ssh
3) 公開鍵をIBMiに登録する(.sshに公開鍵を設定する)
PC $ scp C:\Users\名前\.ssh\{鍵ファイル名}.pub /hoem/user1/.ssh/authorized_keys
IBMi $ chmod 400 /home/user1/.ssh/authorized_keys
4) 対象ホストと秘密鍵の対応を設定する
PowerShellのC:\Users\名前.ssh/configに以下を追加する
# IBMi
Host {ホスト名}
HostName IBMiのIPアドレス
IdentityFile ~/.ssh/{鍵ファイル名}.key
User {IBMiのユーザ名)
Port 22
IdentitiesOnly yes
HostKeyAlgorithms +ssh-rsa
5) IBMiへのsshの認証鍵確認
PowerShell(またはVSCodeのterminal)でパスワードなしでログインできたらOK
PS C:\Users\user1\.ssh> ssh {ホスト名}
$
■VSCode+Code for IBMiの使い方
インストール手順に従ってVSCodeにCode for IBMi Extensionをインストールして、Code for IBMi Extensionをクリックする
◯接続ダイアログ
serversで[+]を押すと以下の画面が表示される
接続情報を入れて、[Save & Exit]すると次回から自動的に接続してくれる
◯IBMi接続時に表示される画面
*ライブラリリスト(パス相当)
[current library]が優先してアクセスするライブラリ(ディレクトリ相当)
典型的にはコンパイルしたプログラムファイルが作成される場所
ボタンで変更可能
User Library Listがアクセス対象になるライブラリのリスト(パス相当)
[+]ボタンで追加が可能
*オブジェクトブラウザー
IBMiネイティブメンバーにアクセスできる
メンバーなのでIBMiネイティブ上の(データ)ファイルはアクセス不可
メンバーでもRPG3はアクセス不可
あまり使っていない…
*IFSブラウザー
この機能をメインに使い、IFS上のソースを直接編集する
この図の例は、以下のディレクトリ構成を開いている
/home/TE001(ユーザ名)
├── JHDEL(プロジェクト名のディレクトリ)
│ ├── QFFRPGSRC(FFRPGソース用ディレクトリ)
│ │ ├── debug.ffrpg(FFRPGソース)
*terminal
ここでIBMiにsshする。Powershellでssh設定をしていればパスワードなしでログインできる
後述の複雑なコンパイル等行える
参考URL) https://www.imagazine.co.jp/feat-visual-studio-code-part5/
https://www.imagazine.co.jp/code-for-ibm-i-j-part3/
◯コンパイル
IFSブラウザ-ソースファイルで右クリック-Run Action-CRTBNDRPG でVSCode上でコンパイルが可能
ただし後述のCGI開発ではサービスプログラム=複雑なコンパイルが必要
そのためbashスクリプトでコンパイルするのでIFSの右クリックコンパイルは使わない
コンパイル成功時は「* was successfull」失敗時は「* was not successfull」と表示される
[Open Output]ボタンでコンパイル結果が新規タブで開くのでエラー原因を見ることができる
注意) 上記の通り簡便にコンパイルできるのはCRTBNDRPGだけ
CRTBNDRPGは1ファイル1プログラムのコンパイル方法
共通関数を別モジュールにするサービスプログラムのコンパイルは、
・オプションを手動で指定し
・複数回コンパイル(CRTRPGMOD+CRTSRVPGM+CRTPGM)
を手動で実行する必要があり手間
◯VSCodeで桁位置固定のRPGLEを扱う
RPGLEをVSCodeで扱う際は桁位置固定がわかりやすいように縦線をいれる
※条件
- IFSに置く
- 漢字コードがない(漢字コードがあるとシフトイン/シフトアウトの関係で桁がずれる)
※RPGLEの桁位置の意味は下記。*{数字}の位置に縦線を入れたい
*6
06 桁目 (仕様書コード)
07-08桁目 (制御レベル)
09-11 桁目 (標識)
*12
12-25桁目 (演算項目 1)
*26
26-35桁目 (命令および拡張)
*36
36-49桁目 (演算項目 2)
36-80桁目 (拡張演算項目 2)
*50
50-63桁目 (結果フィールド)
64-68桁目 (フィールド長)
*68
69-70桁目 (小数点以下の桁数)
71-76桁目 (結果標識)
*81
81-100 (注記)
VSCodeのsettings.jsonはWindowsの場合以下にあるので末尾に以下のように設定する
C:\Users\{ユーザ名}\AppData\Roaming\Code\User\settings.json
-- --
"editor.rulers": [6,12,26,36,50,68,81]
}