2
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?

1-4.RPG3をPCに抽出しBobで表示する

2
Posted at

■前提

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縦罫線.png

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, // 注釈
]

目次へ

2
0
1

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
2
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?