NEWS
IBM i の”新”必須言語 〜FFRPG入門〜 IBM i の”新”必須言語 〜FFRPG入門〜
2018.07.26

【FFRPG】第二回 エディタとかエミュレータとか・・・

【FFRPG】第二回 エディタとかエミュレータとか・・・
第一回
とりあえず作ってみよう!
第五回
データベース – SQL(更新・削除・追加プログラム)
第八回
印刷したり画面に表示したり
第十一回
サービス・プログラムの作成 (3)
第三回
プログラムの基本構造
第六回
データベース – ネイティブ・アクセス(照会プログラム)
第九回
サービス・プログラムの作成 (1)
第十二回
IBM i でプログラムを作るということ
第四回
データベース – SQL(照会プログラム)
第七回
データベース – ネイティブ・アクセス(更新、削除プログラム)
第十回
サービス・プログラムの作成 (2)

前回の復習

皆さん、第一回の演習問題はいかがでしたか?手順通りに実施していただければ、「Hello Free Form RPG World!」を表示するプログラムを作成できたと思います。うまく行かなかった方は、実習環境設定編の資料で見落としているところがないかもう一度確認して、再度チャレンジしてみてください。 今回のタイトルは「エディタとかエミュレータとか・・・」です。プログラムの作成および実行に必要な様々なツールを IBM i を中心に紹介します。前回の目的は、FFRPG の世界を体験してもらうことだったので、手順重視で詳細な説明は意図的にしませんでしたが、今回は少し踏み込んでプログラムの文法などについても解説していきたいと思います。 それではまず開発環境から初めましょう。

RPG プログラムの実行環境

前回も少し触れましたが、Java プログラムと RPG プログラムのコンパイル環境および実行環境を比較してみましょう。 まずはコンパイル環境からです。Java および RPG 両言語ともコンパイラ言語なので、実行前に記述したソース・コードはコンパイルしなければなりません。Java の場合、コンパイラ(javac)は Oracle のサイトからプラットフォームごとにダウンロードして導入します。選択できるプラットフォームは Windows 、Linux および OS X(MacOS)です。つまり、この3つのプラットフォームのどこでも Java ソースをコンパイルすることができるということです。 これに対して RPG 言語は、コンパイラをインターネットからダウンロードして自分の好きなプラットフォームにセットアップすることはできません。RPG コンパイラは IBM からライセンス・プログラムとして提供されており、導入可能なプラットフォームも IBM i のみです。 コンパイラが参照するソース・コードは通常同じ OS 配下で管理されたファイルを参照するので、Java の場合は自分の普段使用しているプラットフォームで、使い慣れたツールを使って開発することが可能です。しかし、RPG の場合はコンパイラが IBM i にしかないので、参照するソース・コードも IBM i 上になければなりません(外部ファイル・サーバーが QNTC に接続されているなどの場合はそのファイル・サーバー上にあっても可)。開発ツールに関しては次のセクションで詳細な解説を行います。 次に実行環境ですが、Java の場合は開発環境同様マルチプラットフォームなので、実行環境が導入された OS であれば基本的にどこでも実行することが可能です。Windows 環境でコンパイルし、Linux 環境で実行するといったことができるのが Java 言語の大きな魅力でしょう。 RPG 言語は、コンパイラ同様実行環境も IBM i にのみ提供されています。もちろんコンパイルした RPG プログラムを別の IBM i で実行することは可能ですが、Java のように別プラットフォームで実行するといったことはできません。 余談ですが、IBM i でも Java プログラムの開発および実行は可能です。IBM i 用のコンパイル環境および実行環境を Oracle のサイトからダウンロードすることはできませんが、IBM から提供されているライセンス・プログラムとして IBM i に導入可能です。これにより、Windows や MacOS 環境で作成した Java プログラムを IBM i で実行することもできるのです。IBM i は Java の実行環境としても優れており、今後ますます利用されていくことになるので、FFRPG 同様に注目していきたいですね。

エディタ

RPG はコンパイラも実行環境も IBM i のみでしか稼働しないので、開発ツールも選択肢がなくずっと長い間同じものが使われてきました。SEU というエディタがそれです。このエディタは、ソース・ファイルという特別な場所に保管されたソース・コードを編集します。 ソース・ファイル内にはメンバーという単位で各プログラムのソース・コードが保管されています。ソース・ファイルは IBM i 上で管理されている特殊なファイルであるため、他のプラットフォームでよく利用されているエディタを使用して編集することは難しく、唯一 RDi(Rational Developer for i)のエディタが対応しているのみでした。 またコンパイラも長い間、このソース・ファイル内のメンバーしか参照することができなかったため、SEU は IBM i の世界では今でも最も利用されているエディタなのです。 あまり知られていないのですが、RPG コンパイラは 2002 年の V5R2 から IFS ソース・ファイルからのコンパイルもサポートしています。IFS(統合ファイル・システム)は IBM i の一部であり、Unix/Linux やWindows で使用しているファイル形式の入出力等も管理可能です。この IFS には、他のプラットフォームから FTP やファイル共有などを介してアクセスすることが可能です。つまり、使い慣れたエディタを使用して Windows 等で作成したソース・コードを IFS に配置してプログラムを作成することが可能なのです。 2002 年からすでに今年(2018 年)で 16 年ですが、IFS からのコンパイルが一般的かというと実はそんなに使われてはいません。その理由は単純で、SEU のプロンプト機能がないと実質 RPG のコード編集は不可能だからです。これには少し説明が必要です。 今回学習する RPG はフリーフォーム版ですが、現在も IBM i で主に使用されているのは RPG/400 および RPGIV の定位置記入形式の書き方だと思います。 これは RPG/400 の C 仕様書ですが、どの桁に何を記述するのかが決まっており、これが一桁でもずれるとコンパイラが文法エラーと判断します。そのため、この桁を通常意識しないで入力できるプロンプト機能が必須となり、それをサポートしている唯一のエディタである SEU が現在でも現役なのです。 しかしみなさんはそれを気にする必要はありません。FFRPG は桁位置に依存する書き方ではないのでプロンプト機能は必要なく、SEU 以外のエディタも選択可能だからです。 様々なエディタを試していただきたいと思いますが、現在 FFRPG の構文チェックを行う拡張機能が提供されているツールとしては以下が有名です。
  • Notepad++
  • Visual Studio Code
上記エディタはクライアントに導入して、さらに FFRPG 用の拡張機能をインストールすることで FFRPG の開発に利用できます。Visual Studio Code は使っている方も多いのではないでしょうか?これらツールを導入したクライアントのファイル共有機能を使って、IBM i の IFS ディレクトリをローカルドライブにマッピングすれば、編集したソースはすべて IFS に保存されることになり、その後のコンパイルもスムーズに行えるでしょう。 今回は実習される皆さんの環境にエディタを導入するのではなく、IBM i にセットアップした Orion を使っています。Orion は Eclipse Foundation が提供している統合開発環境で Web ベースで利用可能であり、クライアントからはブラウザでアクセスしてソース・コードを編集します。修正したコードはリアルタイムに IFS 上に保存されますので、そのまますぐにコンパイル作業に移れます。今後の演習問題も基本的にOrion を使用します。もし、皆さんが普段アクセスできる IBM i に Orion が導入されていなければ、Visual Studio Code + IFS の環境も試してはいかがでしょうか。

コンパイル環境

Java と異なり、コンパイラは IBM i 上でしか実行できないのはすでに触れました。このコンパイラには、通常 5250 エミュレータを使用してアクセスします。現在このエミュレータは IBM i Access Client Solutions の機能として提供されており、Windows / Linux / MacOS で実行可能です。 このエミュレータは単なる telnet クライアントとは異なり、開発者以外のユーザーも利用できるような機能を含んでいます。開発者は IBM i のコマンドを実行する際に使用しますし、ユーザーはメニュー・プログラムを通して日常業務を実行します。このエミュレータ画面が文字ベースのインターフェースのために古い印象を与えていますが、Windows にも同様のインターフェースであるコマンド・プロンプトがありますよね。5250 インターフェースは Windows のコマンド・プロンプトよりはるかに高度な機能を提供しているので現在もメインで利用されているというだけです。IBM i のインターフェースはブラウザ・ベースのものも標準でサポートされていますし、今後も併用されていくことでしょう。 今回は 5250 エミュレータ機能をブラウザからアクセス可能な IBM i Access for Web mobile を使って利用します。導入するエミュレータと比べると若干の使いにくさはありますが、言語学習のためにはこれで十分だと思います。 上記の 5250 セッションを開始すると、接続している IBM i 上に専用のジョブが開始され、ブラウザを通して様々なコマンドをそのジョブで実行することが可能になります。もちろん、通常のエミュレータ同様各コマンドのプロンプト画面もサポートされますので、キーボードの使い方さえ気をつければ本格的な管理業務のインターフェースとしても活用できると思います。

コード解説

それでは前回のプログラムを簡単に説明しましょう。基本的な構造の詳細は次回に譲りますが、icafe001 プログラムのソースの各行を簡単に解説していきます。

① **free

RPG ソースの最初の行に **free の記述があると、その後はすべてフリーフォームで記述する必要があります。コンパイラはこれを頼りに文法チェックを行います。FFRPG は RPGIV の記述の一方式であり、**free がないと定位置記入形式の文法チェックを行いますので注意してください。

②ctl-opt

これは制御仕様ステートメントで、プログラムの生成と実行に関する情報を提供するために使用します。このステートメントに続き、ゼロ個またはそれ以上のキーワードを記述し、最後はセミコロンで終わります。ひとつのプログラム内に複数の ctl-opt ステートメントを記述することができます。

dftname キーワード

ctl-opt に指定するキーワードで、デフォルトのプログラムまたはモジュール名を指定します。コンパイラで指定するプログラム名もしくはモジュール名の省略値は *CTLSPEC であり、これにより dftname キーワードで指定した名前がコンパイル後のオブジェクト名となります。このキーワードとコンパイラの省略値を使用することにより、誰がコンパイルしても生成されるオブジェクト名称は同じになります。

dftactgrp キーワード

ctl-opt に指定するキーワードで、プログラムがデフォルトの活動化グループで実行するかどうかを指定します。デフォルトの活動化グループは RPG/400 プログラムなどが実行される場所で、RPGIV で作成されたプログラムも実行することは可能です。ただし RPGIV 特有の機能を利用する場合はこの活動化グループでは実行できないものも出てきますので、通常は *NO を指定してください。 dftactgrp はコンパイル・コマンド(CRTBNDRPG)のパラメータにあり省略値は *YES ですが、ソース・コードで指定されたほうが優先されます。

main キーワード

プログラムが呼び出されたときに最初に実行されるプロシージャ名を指定します。このプロシージャのことをプログラム入り口プロシージャといいます。今回のプログラムではプロシージャ名に main を指定しているので、この名前でプロシージャを記述しなければなりません。 今回は main を使っていますが、名前は別の名前でも構いません。

③dct-proc と end-proc

プロシージャ定義の開始を宣言すると同時に、そのプロシージャ名を定義します。プロシージャ名のあとに必要に応じてキーワードが続き、最後はセミコロンで終わります。プロシージャは実行単位であり、このあとに実際の実行ステートメントが続きます。プロシージャの終わりは end-proc を記述します。このステートメントもセミコロンで終わります。

④dsply

dsply はこの命令コードを含むプログラムを要求したジョブのメッセージ待ち行列にメッセージを表示し、必要に応じて応答を受け入れることができます。RPG には命令コードは 100 以上ありますが、この連載ではよく使用される命令コードを随時紹介していきます。

icafe001 プログラムの変更

それでは icafe001 を修正してみましょう。前回の記事を参考にしながらブラウザから Orion にログインし、icafe001.rpgle ソースを表示します。今回修正するのは以下の2点です。
  • プログラム入り口プロシージャ名を FirstProc に変更する
  • 画面に表示するメッセージを自分の名前(漢字)に変更する
プログラム入り口プロシージャ名は ctl-opt ステートメントの main キーワードで指定しましたね。これを変更します。あわせて実際のプロシージャ名も変更しないとコンパイルエラーになるので注意しましょう。 画面に表示するメッセージは dsply 命令コードでしたね。メッセージは文字リテラル(引用符で囲むこと)です。気をつけて記述しましょう。 ソース・コードの変更が終わったら IBM i Access for Web mobile にアクセスし、5250 セッションを起動してサイン・オンします。表示される「icafe 実習メニュー」のオプション 1 でコンパイルを行い、メッセージを確認してもしエラーがあればソース・コードを確認および修正しましょう。 プログラムが作成されたらメニューのオプション 2 でプログラムを実行し、その後オプション 5 + F10 キーで自分の名前が表示されていることを確認してください。

終わりに

今回は、前回行った内容の復習をしました。IBM i で RPG プログラムを作成する場合の環境やツールを説明し、スタンダードなツールから FFRPG に移行することにより利用できるようになるツールもいくつか紹介しました。 また前回のプログラム icafe001 の内容を解説し、内容を理解した上で簡単な変更も行いました。皆さん無事変更できましたか? 次回からは本格的な FFRPG プログラミングの解説を始めます。内容が少し難しくなりますが、頑張って理解を深めていきましょう。  

著者プロフィール

img_evolution_profile
いいねと思ったらシェア
twitter
facebook
hatena
IBM i の”新”必須言語 〜FFRPG入門〜 目次を見る

この連載は…

IBM i の”新”必須言語 〜FFRPG入門〜
関連記事
【FFRPG】第一回 とりあえず作ってみよう!
【FFRPG】第一回 とりあえず作ってみよう!
【FFRPG】第七回 データベース – ネイティブ・アクセス(更新、削除プログラム)
【FFRPG】第七回 データベース – ネイティブ・アクセス(更新、削除プログラム)
【FFRPG】第三回 プログラムの基本構造
【FFRPG】第三回 プログラムの基本構造
あなたにオススメの連載
できるIBM i 温故知新編
9記事
できるIBM i 温故知新編
IBM i の”新”必須言語 〜FFRPG入門〜
14記事
IBM i の”新”必須言語 〜FFRPG入門〜
IBM i アプリの第二の柱 OSS
15記事
IBM i アプリの第二の柱 OSS
PAGE TOP