2010年9月10日(金) 09:24 JST

HOME > SE的 > ILE-RPGの能力

ILE-RPGの能力

  • 2009年5月17日(日) 19:46 JST
  • 投稿者:
    hyahagi

iMagazine最新号(2009年 No.10)の「今すぐ役立つIBM i 技術6本」の中で、「RPGはここまで進化した!」という記事があります。記事では近年のILE-RPGの新機能を紹介していますが、全部はさすがに書ききれません。

ILE-RPG自体の機能拡張については記事中に参照先が記載されているので、ここで多少Tips的な部分を補足しておきます。

.



では、小ネタをいくつか。

型変換は最小に

ILE-RPGでは様々なデータ・タイプが利用できます。数値型だけでも従来のパック/ゾーン十進数に加え、2進、浮動小数点、整数が追加されています。EVALやフリーフォーマットの計算式の中ではこれらを意識せず混在して使用できます。もちろん、例えばパック十進数を整数型の変数に代入すると内部では暗黙的に型の変換が行なわるます。これは非常に便利な機能であると同時に、型変換のオーバーヘッドが発生する事を意味する事に注意してください。
通常の業務処理では、ほとんどの数値をパック十進数でコーディングするでしょう。また、数千回程度の型変換ではほとんど目に見えるパフォーマンスの影響はありません。しかし、数百万回のループを行なうような処理では、ループの内部での型変換の回数を最小にするとパフォーマンスが向上するでしょう。

演算途中の精度

従来のRPGでは1演算命令は1行を必要とし、その度に有効桁で切り捨てが行なわれていました。ILE-RPGでEVALや/FREEを利用して1行に複数の演算子を使用する場合は、他の言語同様に中間結果の精度を考慮する必要があります。下記の例のように、単純に計算式を書き直すと従来と異なる結果となる場合があります。この問題を回避するには%INT組み込み関数を使用するなどの配慮が必要になります。下記のソースはそのような例を示します。 

0001.00 Dint              S             10I 0 INZ(5)
0002.00 Dresult1 S LIKE(int)
0003.00 Dresult2 S LIKE(int)
0004.00 Dresult2_char S 52
0005.00 *
0006.00 /FREE
0007.00 result1 = int / 2 * 10;
0008.00 DSPLY (%EDITC(result1 : 'J'));
0009.00 /END-FREE
0010.00 *
0011.00 C int DIV 2 result2
0012.00 C MULT 10 result2
0013.00 C EVAL result2_char = %EDITC(result2 : 'J')
0014.00 C result2_char DSPLY
0015.00 C EVAL *INLR = *ON


> CRTBNDRPG PGM(EX5)
> CALL PGM(EX5)
DSPLY 25
DSPLY 20 

ACTGRPの指定

ILE-RPGの機能を活用したプログラムでは、CRTBNDRPG/CRTPGMコマンドでDFTACTGRP (省略時の活動化グループ )パラメーターに*NOを指定する必要があります。この場合、ACTGRP(活動化グループ)を指定しますが、この値に*CALLERを指定すると、*NEWを指定した場合よりパフォーマンスが大きく向上します。特に、外部より頻繁に呼び出されるプログラム(CGIプログラムなど)は*CALLERの利用を考慮すべきでしょう。 なお、活動化グループの詳細については、マニュアル「ILE 概念」を参照してください。

 
下記のように、他にも色々書きたい事はあるのですが、またいずれ...
  • XML文書の正しい取り扱い方
  • 他言語(JavaやCランタイムなど)との連携
  • 多言語(ユニコード)対応のコーディング
  • 日付型、タイムスタンプ型の取り扱い
  • /FREEでのSQLの使い方
  • APIの使い方(USRSPCやポインター)
 
-----
 
 
私見ではILE-RPGはビジネス用途に非常に適していると感じています。先端的なビジネス・アプリケーションの記述に必要な機能には十分にネイティブ対応していますし、足りない部分は連携すればよいだけだと思います。

しかしILE-RPGはIBM i でしか利用できないため、他のプラットフォームしか使ったことの無い方々にはなじみが無く、とっつきにくいかもしれません。また、昔からRPGを使っている方々も、プログラムの品質や効率を向上させるために最新機能を理解&活用しているかは疑問です。

最近IBM i のGUI化に関する興味深い記事を読みましたが、新しい機能を前向きに利用して価値を高めていきたい物です。


  ここに書かれている内容は私の所属する会社、組織とは関係ありません。 内容を誰かが保証する物ではありません。

トラックバック

このエントリのトラックバックURL:
http://www.iforum.ne.jp/trackback.php/20090517194639940
表示形式
コメント投稿

コメントは投稿者の責任においてなされるものであり,サイト管理者は責任を負いません。

iForumサポーター

      iFourmの趣旨にご賛同いただき、ご支援いただける企業または個人を募集しています。詳しくは、info@iforum.ne.jp へお願いします。