■前提
IBMi上のソースをBobで直接参照するにはPremium Package(無償版はない)が必要です
Premium PackageはCode for IBMi(VSCodeのプラグイン)でssh経由でIBMiにアクセスするそうです
RiSING2025で検証しましたが、Code for IBMiを使うとVSCodeのGUI Gitツールが使えませんでした
git管理にはIFSにsshログインし、gitコマンドをで行うことになりGUIが使えないのは不便です
そのためここではRPG3メンバーファイルをTOBiでPCに抽出します
■抽出方法
◯FTP
RPG3のメンバーファイルをPCからftpで接続して取得する方法は昔からあります
長所) *PCからIBMiにftpできるならIFSを経由せず直接取得できます
短所) *1メンバーずつftpのコマンド操作が必要
実環境ではQRPGSRCには1000を超えるメンバーがあるはずで手間がかかります
*PVSをインターネット公開した場合sshのみアクセス可能で利用難
(PFでftpを設定すれば使える)
◯TOBi(The Object Builder for IBM i)
https://ibm.github.io/ibmi-tobi/#/
元々はこちらがBobでしたが、名称変更されました
大きく以下の機能があります
*ライブラリのQRPGSRCなどのソースファイルからメンバー毎にIFSのソースファイルに抽出する
*Bob(VSCode)のPC上のソースファイルをssh経由でコンパイルする
■TOBiの前提条件
*PASEが導入されていること
*オープンソース・パッケージが導入されていること
*Bashが導入され、実行ユーザーのデフォルトのシェルとして設定されていること
注意) 上記では$HOME/.bash_profileでPATH設定している
sshでは有効になるが、VSCodeからbuild時にmakei not foundでPATHが通らない
.envファイルでPATH設定をする
*ILE RPG/COBOLのコンパイル・コマンドで、TGTCCSIDパラメーターが使用可能であること
*SSHデーモンが稼働していること
*インターネット上のNTPサーバーとシステム時刻の同期が行われていること
→これらの条件を満たすよう
1.1PVSインストールでIBMi(PVS)をインストールしました
■TOBiと必要パッケージのインストール
IBMiにsshでログインし、yumでインストールします
yumはRedhat系のLinux OSのパッケージ管理。debian/ubuntu系はapt
◯TOBiインストール
*パッケージ情報
takami@RISING2026-F-IBMI1:~$ yum search tobi
…
bob-is-now-tobi.ppc64 : IBM i Better Object Builder, or Bob is now known as The Object Builder for i or TOBi.
tobi.ppc64 : The Object Builder for IBM i
…
※bob-is-now-tobiとtobiは同じパッケージ(Bobは名前が変わってTOBiになった)
*インストール
takami@RISING2026-F-IBMI1:~$ yum -y install tobi
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package tobi.ppc64 0:3.3.0-1 will be installed
--> Processing Dependency: make-gnu >= 4.2-2 for package: tobi-3.3.0-1.ppc64
--> Processing Dependency: sed-gnu >= 4.4-1 for package: tobi-3.3.0-1.ppc64
--> Processing Dependency: grep-gnu >= 3.0-2 for package: tobi-3.3.0-1.ppc64
--> Processing Dependency: gawk >= 4.1.4-2 for package: tobi-3.3.0-1.ppc64
--> Running transaction check
---> Package gawk.ppc64 0:4.1.4-2 will be installed
--> Processing Dependency: lib:/QOpenSys/pkgs/lib/libmpfr.so.4(shr_64.o)(ppc64)
for package: gawk-4.1.4-2.ppc64
--> Processing Dependency: lib:/QOpenSys/pkgs/lib/libreadline.so.6(shr_64.o)(ppc64)
for package: gawk-4.1.4-2.ppc64
--> Processing Dependency: lib:/QOpenSys/pkgs/lib/libgmp.so.10(shr_64.o)(ppc64)
for package: gawk-4.1.4-2.ppc64
---> Package grep-gnu.ppc64 0:3.0-3 will be installed
---> Package make-gnu.ppc64 0:4.4-1 will be installed
---> Package sed-gnu.ppc64 0:4.4-2 will be installed
--> Running transaction check
---> Package libgmp10.ppc64 0:6.3.0-1 will be installed
---> Package libmpfr4.ppc64 0:3.1.2-12 will be installed
---> Package libreadline6.ppc64 0:6.3-5 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================
Package Arch Version Repository Size
=============================================================
Installing:
tobi ppc64 3.3.0-1 ibmi-base 3.0 M
Installing for dependencies:
gawk ppc64 4.1.4-2 ibmi-base 1.4 M
grep-gnu ppc64 3.0-3 ibmi-base 571 k
libgmp10 ppc64 6.3.0-1 ibmi-base 419 k
libmpfr4 ppc64 3.1.2-12 ibmi-base 462 k
libreadline6 ppc64 6.3-5 ibmi-base 477 k
make-gnu ppc64 4.4-1 ibmi-base 659 k
sed-gnu ppc64 4.4-2 ibmi-base 475 k
Transaction Summary
===============================================================================
Install 8 Packages
Total download size: 7.4 M
Installed size: 7.4 M
Downloading Packages:
(1/8): gawk-4.1.4-2.ibmi7.2.ppc64.rpm | 1.4 MB 00:00:12
(2/8): grep-gnu-3.0-3.ibmi7.3.ppc64.rpm | 571 kB 00:00:03
(3/8): libgmp10-6.3.0-1.ibmi7.3.ppc64.rpm | 419 kB 00:00:02
(4/8): libmpfr4-3.1.2-12.ibmi7.2.ppc64.rpm | 462 kB 00:00:02
(5/8): libreadline6-6.3-5.ibmi7.2.ppc64.rpm | 477 kB 00:00:02
(6/8): make-gnu-4.4-1.ibmi7.3.ppc64.rpm | 659 kB 00:00:02
(7/8): sed-gnu-4.4-2.ibmi7.3.ppc64.rpm | 475 kB 00:00:01
(8/8): tobi-3.3.0-1.ibmi7.3.ppc64.rpm | 3.0 MB 00:00:10
-------------------------------------------------------------------------------
Total 201 kB/s | 7.4 MB 00:37
Running Transaction Check
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : libgmp10-6.3.0-1.ppc64 1/8
Installing : libmpfr4-3.1.2-12.ppc64 2/8
Installing : libreadline6-6.3-5.ppc64 3/8
Installing : gawk-4.1.4-2.ppc64 4/8
Installing : sed-gnu-4.4-2.ppc64 5/8
Installing : make-gnu-4.4-1.ppc64 6/8
Installing : grep-gnu-3.0-3.ppc64 7/8
Installing : tobi-3.3.0-1.ppc64 8/8
Installed:
tobi.ppc64 0:3.3.0-1
Dependency Installed:
gawk.ppc64 0:4.1.4-2 grep-gnu.ppc64 0:3.0-3 libgmp10.ppc64 0:6.3.0-1
libmpfr4.ppc64 0:3.1.2-12 libreadline6.ppc64 0:6.3-5
make-gnu.ppc64 0:4.4-1 sed-gnu.ppc64 0:4.4-2
Complete!
*パス設定
1-2.PVSへsshと5250ログインでmakeiコマンド(TOBi)のインストールされる
/QOpenSys/pkgs/binにパスを通す設定が必要
*UNIXコマンド解説
*PATHの内容確認
envが環境変数の一覧
| はパイプと言って |の左のコマンドの出力を |の右のコマンドに渡す
grepは指定した文字列が含まれる行を表示する
パイプとgrepを使えばIFS上の全ソースファイルから
特定のフィールド名を含む行の抽出に使えます
$ env|grep PATH
PATH=/QOpenSys/pkgs/bin:/QOpenSys/usr/bin:/usr/ccs/bin:/QOpenSys/usr/bin/X11:/usr/sbin:.:/usr/bin:/home/TAKAMI:
*makeiコマンドのフルパス
$ which makei
/QOpenSys/pkgs/bin/makei
■ソース抽出
◯ライブラリのメンバーファイルをTOBi(makei cvtsrcpf)でIFSに抽出
*IBMiにssh
*抽出
抽出先ディレクトリを作成する
takami@RISING2026-F-IBMI1:~$ mkdir RENRITSU
takami@RISING2026-F-IBMI1:~$ cd RENRITSU/
takami@RISING2026-F-IBMI1:~/RENRITSU$ mkdir QDSPSRC
takami@RISING2026-F-IBMI1:~/RENRITSU$ mkdir QRPGSRC
takami@RISING2026-F-IBMI1:~/RENRITSU$ cd QDSPSRC/
抽出コマンドを実行する
makei cvtsrcpf {ソースファイル名} {ライブラリ}
takami@RISING2026-F-IBMI1:~/RENRITSU/QDSPSRC$ makei cvtsrcpf QDSPSRC FLIB
1 source members found.
Converting RENRITSU to RENRITSU.DSPF
> CPYTOSTMF FROMMBR('/QSYS.LIB/FLIB.LIB/QDSPSRC.FILE/RENRITSU.MBR') TOSTMF('/home/TAKAMI/RENRITSU/QDSPSRC/RENRITSU.DSPF') ENDLINFMT(*LF) STMFCCSID(1208) STMFOPT(*REPLACE)
takami@RISING2026-F-IBMI1:~/RENRITSU/QDSPSRC$ cd ../QRPGSRC/
takami@RISING2026-F-IBMI1:~/RENRITSU/QRPGSRC$ makei cvtsrcpf QRPGSRC FLIB
1 source members found.
Converting RENRITSU to RENRITSU.RPG
> CPYTOSTMF FROMMBR('/QSYS.LIB/FLIB.LIB/QRPGSRC.FILE/RENRITSU.MBR') TOSTMF('/home/TAKAMI/RENRITSU/QRPGSRC/RENRITSU.RPG') ENDLINFMT(*LF) STMFCCSID(1208) STMFOPT(*REPLACE)
*抽出結果の構成
takami@RISING2026-F-IBMI1:/home$ tree TAKAMI/
TAKAMI/
|-- RENRITSU
|-- QDSPSRC
| `-- RENRITSU.DSPF
`-- QRPGSRC
`-- RENRITSU.RPG
■IFS上に抽出されたソースをPCにscp
◯PC上に保存ディレクトリを作成する
PowerShellで C:\Users\{ユーザ名}\RENRISTU を作成し保存ディレクトリにします
PS C:\Users\{ユーザ名}> mkdir RENRISTU
PS C:\Users\{ユーザ名}> cd .\RENRISTU\
PS C:\Users\{ユーザ名}\RENRISTU>
◯scpでIBMi上のソースをPCにコピーする
PS C:\Users\{ユーザ名}\RENRISTU> scp -r pvs:~/RENRITSU/* .
*.ssh/configで指定してれば pvs とホスト名を指定すれば認証も行ってくれる
*-rはディレクトリ構造をそのままコピーするオプション
pvsサーバ上の ~(/home/takami等ログイン直後のディレクトリ)/RENRITSU/* ファイルを
.(このディレクトリ=C:\Users\{ユーザ名}\RENRISTU)にコピーする
*PC上のファイル構造
/c/Users/{ユーザ名}$ tree RENRITSU/
RENRISTU/
├── QDSPSRC
│ └── RENRITSU.DSPF
└── QRPGSRC
└── RENRITSU.RPG
■BobをPCにインストール
◯Bobアカウントとインストーラ
https://bob.ibm.com/
にIBMIdでログインすればBob(VSCode)の[ダウンロード]が可能
*無料アカウントは1か月で期限が切れます
編集・コンパイルからGitまではBobのアカウントがなくても実行できます
*2026/06/24のPremium Package公開からBobは2.xになりました
◯Bobでフォルダを開く
Bobを起動し[ファイル]-[フォルダーを開く]で C:\Users\高見禎成\RENRISTU
◯RPG3の縦罫線を表示する
カーソル行に縦位置ルーラが表示されますが、Bob(VSCode)の標準機能で縦罫線を表示できます
Bobで[Ctrl]+[Shift]+[P]の[基本設定:ユーザ情報を開く(Preference:Open User Setting)]
検索 : Editor:Rulers で @settings.jsonで編集 でRPG3かRPGLEのどちらかを書き込みます
// RPG3
"editor.rulers": [
5, // 仕様書コード
17, // 演算項目1
27, // 演算命令
32, // 演算項目2
42, // 結果名
48, // 結果長開始
52, // 結果長終了
53, // 標識A
55, // 標識B
57, // 標識C
59, // 注釈
]
// RPGLE
"editor.rulers": [
5, // 仕様書コード
11, // 演算項目1
25, // 演算命令
35, // 演算項目2
49, // 結果名
63, // 結果長開始
68, // 結果長終了
70, // 結果長小数終了
70, // 標識A
72, // 標識B
74, // 標識C
80, // 注釈
]
