MENU

03 IBM iの開発言語 ~RPGからCL、COBOL、Javaまで多様な言語を適材適所で使い分ける |新・IBM i入門ガイド[開発編]

開発言語は世の中に数多く存在するが、IBM iにもさまざまな開発言語がサポートされている。従来からIBM i上では生産管理、販売管理、人事、給与、経理といった基幹業務アプリケーションの利用が多く、信頼性と生産性の高い言語としてRPGやCOBOL、C/C++などが使われてきた。

その一方、Webやモバイルなどの業務要件に対応するために、オープンソースソフトウェアのJava、JavaScript、PHPなどの言語も積極的に取り込まれ、利用できる環境が整っている。

ここでは、IBM iでよく使われる代表的な言語について紹介する(図表1)。

図表1 IBM iの開発言語とツールの種類

RPG 
資産継承性に優れたIBM i専用言語

RPGはIBM i専用のプログラム言語で、「Report Program Generator」の略称である。当初はその名のとおり、報告書を作成するための簡易言語として発表されたが、その後拡張が続けられ、現在は一般のプログラム言語と同様の機能を備えている。

最新版は、第4版にあたる「RPG Ⅳ」である。統合化言語環境(ILE:Integrat
ed Language Environment)に対応しているので、「ILE RPG」とも呼ばれる。

ILE RPGは、RPG Ⅲを踏襲した固定フォーム(ソース桁位置で命令文を識別する)とフリーフォーム(Javaやその他の言語と同様のコーディング形式)の2種類のコーディングが可能である。

フリーフォーム形式のILE RPGは、フリーフォームRPG(FF RPG)と呼称される。ILE RPGは、現在も機能拡張が精力的に続けられている。

ところで、ILEとはプログラミングモデルの1つで、IBM iでサポートされる複数開発言語間で可搬性を保つために提供される共通の環境である。これにより異なる言語(たとえばILE RPGとILE COBOL)で作成されたモジュールを統合するプログラムの作成が可能となる。 

なお、RPG ⅢまでのRPGは、ILE RPGと対比して「OPM」(オリジナル・プログラム・モデル)と呼ばれる。

RPGは、IBM iの開発言語を語る上でなくてはならない存在である。従来のRPG Ⅲはステートメントの記述桁位置が固定されており(旧来のカードパンチャーの名残り)、現在のオープン系技術者には馴染みがなく、可読性に難があると思われる。

そのため近年ではJavaやVB、Cのようにフリースタイルで記述できるフリーフォームRPGの普及も進んでいる。

RPG Ⅲ、ILE RPG(とCOBOL)はいずれもIBM i アーキテクチャに依拠した高い資産継承性を有している。具体的にはOSバージョンや稼働ハードウェアから独立しており、一度作成したプログラムソースだけでなく、コンパイルしたプログラムオブジェクトを古いOSバージョンやハードウェアで保管(SAVE)し、新しいOSバージョン、ハードウェアに復元するだけで、プログラムは最適なパフォーマンスに調整された状態で実行されるようなトランスレーション機能が内蔵されている。

このため多くのIBM iユーザーでは30年以上前に作成したプログラムソース、コンパイルしたプログラムオブジェクトが現在でもそのまま稼働しているケースが多い。一度書いたプログラム、プログラムオブジェクトは可能な限り長期的に利用されるべきであるという、IBM iの設計思想を具現化している。

COBOL
他プラットフォームからの移行が容易

COBOLもまた、基幹業務で長年にわたり使用され続けている開発言語の1つである。

COBOLの特徴として、多くのプラットフォームでサポートされているので、異なるプラットフォームへのコンバージョンが比較的容易な点が挙げられる。

IBM iでも同様で、汎用機(メインフレーム)からのダウンサイジング先としてIBM iが採用され、汎用機のCOBOLアプリケーションをコンバージョンして使い続けるケースは非常に多い。

近年では国産メーカーの汎用機サービス終了に伴い、IBM iやその他のプラットフォームへのCOBOL移行プロジェクトが盛んであり、今後も稼働するCOBOLプログラム本数やプログラマーニーズは安定的であると予想される。

Java
IBM iにいち早く取り込んだオープン言語

オブジェクト指向プログラミング言語であるJavaは、「Write Once、Run Anywhere」の言葉どおり、プラットフォームに依存せず、JVM(Java Virtual Machine:Java仮想マシン)上で同じようにプログラムを実行できる特徴がある。

Webとの相性もよく、ブラウザやスマートフォンで使用されるアプリケーションから、企業の大規模なアプリケーションまで、幅広い分野で使われている。

Webブラウザ上で動作する技術として開発されたJavaであるが、現在ではサーバーサイドのアプリケーション構築でも多用されている。IBM iでは早くからJavaに取り組み、マイクロコード(SLIC)にJVMを組み込み、安定した環境を提供している。

IBM iのJavaには、Java6(Java1.6)まで提供されていたSUN Java準拠のClassic JVMとJava5(Java1.5)以降で提供しているIBM Technology for Java(J9)の2系統が存在する。

かつてのClassic JVMはオーバーヘッドが高く、J9版Javaはパフォーマンス面では劣勢であった。しかし昨今、J9版JavaはAIXはじめ他のプラットフォームと同様の実装に改められ、パフォーマンスも顕著に向上した。ちなみにClassic JVMは64ビット版のみの提供であったが、J9版Javaは32ビット版と64ビット版を選択できる。

CL
一貫した命名規則など使いやすさが特徴

CLもRPGと同様に、IBM i専用の言語で「Control Language」の略称である。

CLはシステムにある特定の指示を与えるコマンドの集合で、メニューから呼び出すことも、直接コマンドを呼び出して実行することもできる。

ほかのシステムと比較して、CLコマンドはユーザーの使いやすさを重視した設計となっているのが特徴である。たとえばCLコマンド自体が一貫した命名規則をもっているため、この規則を理解すれば、コマンド自体が正確にわからなくても、コマンドにたどり着くことができる。

WindowsやLinuxではコマンド自体を知らないと操作を進められないが、これに比べるとIBM iユーザーの負担はかなり軽い。

また、CLコマンドのみでソースプログラムを作成し、コンパイルして、CLプログラムとして実行させることも可能である。WindowsやLinuxのシェルスクリプトをイメージするとよいだろう。CLプログラムにも統合化言語環境への対応によって、ILEまたはOPMの2つのタイプがある。

PHP、Ruby/Rails、Python、Node.js

前述した以外にも、IBM iはPHP、RubyおよびそのフレームワークであるRails、Python、Node.js(サーバーサイドでJavaScriptを使用)などの開発言語に対応し、オープンな開発・実行環境を提供している。

ユーザー・インターフェースは、PCからタブレット、スマートフォンへと急速に変化している。インターフェースの開発は実績のあるPHPやJavaScriptなどで実装し、データベース処理を含むビジネスロジックはRPGで開発するなど、適材適所で言語を使い分ける開発がこれからの主流となるだろう。

著者
今尾 友樹氏

日本アイ・ビー・エム株式会社
テクノロジー事業本部 
IBM Power テクニカルセールス

新・IBM i入門ガイド[開発編]

01 IBM iの開発環境
02 IBM iの開発環境選択基準
03 IBM iの開発言語
04 IBM iの基礎[CL設計・開発]
05 IBM iの基礎[データベース]
06 IBM iの基礎[RPG開発]
07 IBM iの基礎[Java開発]
08 IBM iのシステム連携
09 IBM iの新しいアプリケーション例
10 開発編 FAQ

[i Magazine 2025 Spring号掲載]

新着