MENU

特集 IBM i Project ExplorerとBobを使用したRPG開発 <Part5>IBM i Project Explorerを使用したローカル開発 ~③ テキスト・ファイルに変換されたソース・メンバー

特集 IBM i Project ExplorerとBobを使用したRPG開発 <Part5>IBM i Project Explorerを使用したローカル開発 ~③ テキスト・ファイルに変換されたソース・メンバー

ソース物理ファイルごとに、テキスト・ファイルに変換された各ソース・メンバーの状態を確認する。

QRPGSRC 

変換元のメンバーは、図表1のとおりである。

図表1 変換元のRPGソース・メンバー

変換後のソース・テキスト・ファイルは、図表2のようになった。

図表2 変換後のRPGソース・テキスト・ファイル

図表3図表4は、変換前のソース・メンバーCUB010と、変換後のテキスト・ファイルcub010.rpgの内容の一部である。

図表3 変換前のRPGソース・メンバーCUB010
図表4 変換後のRPGソース・テキスト・ファイルcub010.rpg

 

文字化けもなく正常に変換が行われているようだが、以下のとおり、両者の間にいくつかの違いもみられる。

❶ ソースの最上部にコメント行が追加されている。

図表5 ソースCUB010.rpgの最上部に追加されたメンバー・テキスト

図表5の%TEXTの後のテキストは、変換前のメンバー・テキストの値である。

図表6 メンバーCUB010のテキスト

図表6は、WindowsやLinuxのファイル・システムではファイルの属性としてテキストを保存できないためで、このようにソースの先頭にメタタグ付きのコメントとして保存される。

❷ 日付フィールドとシーケンス番号フィールドが削除されている。

図表7 変換前のH仕様書レコード
図表8 変換後のH仕様書レコード

これらはSEUが使用していたもので、Git等を使用してソースのバージョン管理を行う場合の障害となるため、自動的に削除される。

❸ シフト文字(SO/SI)が削除されている。

図表9 ソース・メンバーのシフト文字
図表10 削除されたシフト文字

IBM iの日本語EBCDIC環境では、全角文字列の前後に1バイトのシフト文字(SO/SI)が挿入されるが、変換後のテキスト・ファイルではそれらがすべて削除されている。

これは、変換後のテキスト・ファイルの文字コードがユニコード(UTF-8)であり、EBCDICのシフト文字に対応する文字がユニコードでは定義されていないためである。

コメントに含まれるシフト文字が削除されるのは問題とならないが、次のように仕様書の記入欄に全角文字が含まれている場合、正常(コンパイル可能)であるにもかかわらず桁ずれが起きて文法エラーのように見えるため、編集する際は注意が必要である。

図表11 全角文字のリテラルを含むステートメント(変換前)

図表12 全角文字のリテラルを含むステートメント(変換後)

また、ユニコードへの変換時に削除されたシフト文字は通常、EBCDICへの変換時に再び挿入されるが、次のように連続したシフト文字({と}で表している)は変換の過程で完全に削除されるため、この点も注意が必要である。

図表13 連続したシフト文字は削除される

❹ その他

前述のとおり、テキスト・ファイルの文字コードはUTF-8となっている。そのほか、行末の半角スペースはすべて削除されており、改行コードはLF(ライン・フィード)となっている。

図表14 文字コード、改行コード、行末

QDDSSRC

次にQDDSSRCを確認する。変換元のメンバーと変換後のテキスト・ファイルは図表15図表16のとおりである。

図表15 変換元のDDSソース・メンバー
図表16 変換後のDDSソース・テキスト・ファイル

図表17図表18は、変換元のソース・メンバーMCUSと、変換後のテキスト・ファイルmcus.pfの内容である。

図表17 変換前のDDSソース・メンバーMCUS
図表18 変換後のDDSソース・テキスト・ファイルmcus.pf

 

RPGソースと同様の変換が行われている。DDSの場合、仕様書の記入欄の中で、全角文字が入力されるのは右端の欄(Functions)に限定されるため、シフト文字削除による桁ずれの問題は比較的軽微と思われる。

DSPFソース・メンバーを格納しているQDSPSRCと、PRTFソース・メンバーを格納しているQPRTSRCについては、QDDSSRCと変わらないため割愛する。

QCLSRC 

最後にCLソースを確認してみよう。

変換元のメンバーと変換後のテキスト・ファイルは図表19図表20のとおりである。

図表19 変換元のCLソース・メンバー

図表20 変換後のCLソース・テキスト・ファイル

CLでは、変換後のテキスト・ファイルの命名規則がRPGやDDSの場合とは異なっている。RPGやDDSでは、cub010.rpgやmcus.pfのように、<メンバー名>.<メンバー・タイプ>という規則になっていた。今回のCLソースのメンバー・タイプはCLPなので、その規則に従えばcub010c.clpとなるはずだが、cub010c.pgm.clleとなっている。

図表21図表22は、変換元のCLソース・メンバーCUB010Cと、変換後のCLソース・テキスト・ファイルcub010c.pgm.clleの内容である。

図表21 変換前のCLソース・メンバーCUB010C
図表22 変換後のCLソース・テキスト・ファイルcub010c.pgm.clle

これもRPGソースと同様の変換が行われている。CLプログラムのソースは、記入桁の制限がないフリーフォーマットなので、シフト文字削除による桁ずれの影響は軽微と思われる。

——————————

Better Object BuilderもしくはBobは、2025年10月にリリースされたIBM Project Bobとの混同・混乱を避けるため、2025年12月に「TOBi」(The Object Builder for IBM i)へと名称が変更されました。ただしここでの記事は従来どおり、Bobと明記していることをご了承ください。

著者
佐藤 尚氏

ソリューション・ラボ・ジャパン株式会社
第1サービス事業部 第3サービス部 第1グループ

AS/400ユーザーの情報システム部門を経て、2006年にソリューション・ラボ・横浜(現ソリューション・ラボ・ジャパン)に入社。主にIBM iを中心に他のプラットフォームとの連携を行うシステムの設計・開発を行う。近年はシステム開発の傍ら、IBM i技術者向け研修サービスの講師を担当している。