0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

(開発3)VSCode+Code for IBMi開発環境のインストール

Last updated at Posted at 2024-09-02

■概略

オープンソースエンジニア歴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]すると次回から自動的に接続してくれる
install_developenv00.png

◯IBMi接続時に表示される画面

install_developenv01.png

*ライブラリリスト(パス相当)

[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)
  を手動で実行する必要があり手間
install_developenv02.png
install_developenv03.png
install_developenv04.png

◯VSCodeで桁位置固定のRPGLEを扱う

RPGLEをVSCodeで扱う際は桁位置固定がわかりやすいように縦線をいれる
 
※条件

  1. IFSに置く
  2. 漢字コードがない(漢字コードがあるとシフトイン/シフトアウトの関係で桁がずれる)
     
    ※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]
}

install_developenv05.png

【目次】オープンソースエンジニアがIBMi(AS400)を勉強してみた

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?