ILE RPGによる簡単モダナイゼーション③|追加された各種属性と活用方法

「ILE RPGによる簡単モダナイゼーション②|非常に便利な命令語EVALを活用しよう!」で説明したように、EVAL命令は今後の機能紹介でも頻繁に出てきますので、自然と使い方をマスターできると思います。また、演算仕様書内でのフリー形式やフリーフォームRPG(FF RPG)に移行する際にも、EVALは容易です。

パック10進数への変換%DEC(H) ~関数 %DEC、%DECH の使用

上の図は、%DEC関数のサンプルコードをフリー形式に変換したものです。

・フリーのエリアを/FREEと/END-FREEで囲みます。
・仕様書コード”C”を除去します。
・各行の最後のに“;”を付けます
・コメントの先頭は“//”を付けます
・EVALを除去します。

最新のRPGと言えばFF RPGであり、これは限りなく他のオープン系言語に近いものとなっています。今まで数十年に渡ってRPGをメインに使っていた技術者にとっては、RPGとはまったく別の言語に見えるかもしれませんが、このように部分的にフリーフォーム形式を利用していくことでFF RPGへの一歩となるのではないでしょうか。

 

日付フィールドの利用

ILE RPGのフィールド属性として多くの属性が追加されました。ほぼすべての業務アプリケーションでは、日付の操作を行っていると思いますので、その中から日付属性を紹介します。

日付属性は定義仕様書(D仕様書)のデータ・タイプに“D”を記入し、日付の形式などを指定して定義することができます。

EVAL行のフリー形式変換

日付フィールドであれば、関数を使うことで日数計算などを簡単に行うことができます。

日付形式の活用

日付形式を数値や文字列に変換する際も関数を利用します。

日付形式の活用

日付操作の命令と関数

日付/時刻の要素

標識と関数

RPGにおいて標識の使用は大変重要で有用なフィールドです。RPG Ⅲの開発ではこの標識を活かしたコーディングが標準的であり、命令の結果や処理の条件付けなどで自然に使っていることと思います。それゆえ大きなプログラムになると標識変数の数が膨大になり、一般的に使われる01~99のような標識だけではコーディングが難しくなるケースもあるのではないでしょうか。

ILE RPGはRPG Ⅲのコーディングをそのまま利用できるので、標識についても固定形式のままであれば修正する必要はありません。しかし、将来的なフリーフォーマットへの対応などを考慮すると、標識の使い方も考慮すべきと思います。

ここでは頻繁に使われるファイルの入出力結果の標識を関数に置き換えたコーディングを紹介します。

関数の活用 ~文字列操作の命令と関数

このように%EOF関数を使うことができます。

標識と関数 ~READ操作 関数 %EOF

これらの関数は標識と同じで、ONは”1”、OFFは“0” を戻します。CHAIN命令の場合、該当レコードが存在する場合標識は“0”で存在しない場合”1”となりますが、%FOUNDは存在した場合に”1”となります。

ファイル操作の関数

ファイルの操作命令に使用できる関数は図の通りですが、共通して%ERROR関数を使用して、エラー発生を判別することができます。%ERROR関数を使用する場合は、命令コード拡張に“E”を付ける必要があります。

◎マニュアルから抜粋

%ERROR は、最後に実行された、拡張’E’が指定された命令の結果がエラー条件である場合に’1′ を戻します。これは、命令に関してエラー標識が設定された場合と同じになります。拡張’E’ が指定された命令が開始される前に、%ERROR は’0′ を戻すように設定され、エラーが発生しない場合には、命令後に変更されないまま残ります。エラー標識を指定できるすべての命令は、%ERROR 組み込み関数も設定することができます。CALLP 命令も%ERROR を設定することができます。

以上のように、関数を利用することで命令の結果を、標識を使わずにハンドリングできるようになります。

ILE RPGでは命令の結果標識以外でも、プログラム制御に使用する標識を定義することができます(Javaなどでのboolean Typeと同等)。これは標識形式の文字データ・タイプとして、定義仕様書(D仕様書)のデータ・タイプNで定義することができます。

このデータ・タイプは全てが1バイトの長さで、文字値’0′ (オフ) および’1′ (オン) だけを入れることができます。標識のデフォルトの値は’0′ です。他のフィールド同様に自由な名称を定義できますが、固定形式の標識エリアには使用できないので注意しましょう。

標識と関数 ~CHAIN操作 関数 %FOUND

標識形式の文字データ ~標識形式のフィールド

関連資料をダウンロード!