最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

17.6.2 特別講義(2) RPGプログラムの動き

[ Previous ] [ HOME ] [ Upper ] [ Next ]


今回は、RPGという、コンパイラー用の言語について、概要を述べたいと思います。

RPGは、もう何回か説明したように、Report Program Generatorのアクロニム※です。

※略語(Abbreviation)とアクロニム(Acronym)

英語の中には、略語とアクロニムがあります。辞書的に説明すれば、一語を省略して、最後にピリオドをつけて省略したものを「略語」、複数の単語の頭文字を使って、一語としたものを「アクロニム」といいます。日本語では、複数の単語からいくつかを取り出して、新語(造語)をする事はありますが、英語のこれらのものとは、やや違います。また、本来のアクロニムは、一語として発音できないと、成立しないのですが、あまりアメリカ人は気にしてないようです。あくまで、複数の単語から出来ている文字なら、アクロニムでいいようです。以前、アメリカ人の弁護士に英語を習っていたのですが、USAをアクロニムだと言ってました。ウサと読まなくても、United States of Americaという複数の単語から、出来ているからいいそうです。(アメリカ在住の予備校生の方、これで、正しいか、教えてください。)

例)略語

abbr. = abbreviation
p. = page
adj. (a.) = adjective

アクロニム

scuba = self-contained underwater breathing apparatus
FEN = Far East Network

プログラムが出来るまで

  1. どんなシステムが必要か、考える。いわゆるシステム設計の部分です。ここにミスがあると、下手をすると、すべてのプログラムの修正になりかねません。システムの目的や趣旨、また、どんな効果があるとか、さらには、フェーズ(システムの範囲とか段階)などの定義もします。また、ファイルのレイアウトなども、ここで決まってきます。(ユーザーの業務内容や伝票、帳票などの資料収集や、将来展望などを含みます。また、CLPのような、ジョブ制御なども、ここで定義する場合もあります。この部分の話だけでも、一冊の本になるほど重要です。)
  2. どんなプログラムが必要か、考えて、プログラムの目的や使用するファイルとか、なにをどうするのか、などを設計する。(プログラム設計。また、CLPのような、ジョブ制御なども、ここで定義する場合もあります。)
  3. STRPDMやSTRSEUにより、そのプログラムのソースメンバーを入力します。早い話、HFELICOの仕様書を入力することです。(ソース入力、コーディングなどとも言う。)
  4. CRTRPGPGMというコマンド(OSへの命令)により、入力されたプログラムソースをコンパイルして、プログラムのオブジェクトを作成します。
  5. コンパイルが失敗したら、原因を突き止め、再びソースメンバーを修正して、また、コンパイルします。
  6. コンパイルが成功して、プログラムが作成したら、そのプログラムを呼び出して(CALL命令)、プログラムの動きが正しいか、を調べます。(プログラムのテスト、検収、動作確認など、様々な言い方があり、また、そのテストの手法も、単体テスト、結合テスト、システムテスト、ボリュームテスト、など様々な方法が有ります。)
  7. もし、プログラムが、おかしな動きをしたら、再び、ソースメンバーを修正して、コンパイルをします。(これらの、完成した後での、おかしい場合を「バグが有る」と言い、そのバグをなくす作業を「デバッグ」または、「バグつぶし」などと言います。)
  8. もし、プログラムが正しい動きをしたら、完成です。

RPGの各仕様書と、その働き

pgmstrcture.gif (8796 バイト)

  • H仕様書は、プログラム全体を管理します。といっても、日付の形式とか、デバッグオプションとかで、各仕様書「共通」の設定と考えてください。
  • F仕様書は、このプログラムが参照するファイルの指定です。また、そのファイルへのアクセス方法やオーバーフロー標識や、サブファイルなどの指定など、ファイルに関する必要事項も指定します。
  • E仕様書は、配列とかテーブルの定義です。C仕様書で利用する配列やテーブルの定義です。配列やテーブルを使用しないのであれば、E仕様書は必要有りません。
  • i仕様書は、入力レコードのフィールドを分解する部分の定義です。プログラムへのデータの入り口です。ファイルのレコードに関する指定、RPGサイクルでは、レベル標識をつけるフィールドも指定します。それと、データ構造と呼ばれる、データの構成も定義します。さらに、名前付き固定情報もここで指定します。
  • C仕様書は、プログラムの演算部分で、中核とも言えます。また、演算定義以外のフィールドの定義部分やアクセスパスの定義も含まれます。
  • O仕様書は、出力レイアウトや、出力フィールドなど、プログラムからのデータの出口を定義します。

プログラムを呼び出す(CALL命令)と、F仕様書で指定されたファイルがオープンされ、プログラムの変数域が初期化なり、準備なりされて、C仕様書の演算が開始されます。プログラムの動きは、RPGサイクルと、全手順とでは、プログラムのコーディング(プログラムソースを作成すること)も違いますし、コンパイル後のプログラムの動きも違います。両方とも習得する必要が有ります。

それから、ファイルは、

プログラムの実行時にオープンして、プログラム終了時にクローズするもの

であることは、とても大事です。オープンしなくては、データはとれないし、クローズしなくては、プログラムは終了出来ないのです。

プリントするプログラムの例

この例では、ファイルのレコードがプログラムの入力域に入って、処理されて、出力域からでて、プリンターファイルに書き込まれていますね。(苦労の割には、これしか意味がないアニメでした。)プリンターから書き出されると、OSが、SPOOL(Simultaneous Periperal Operations On Line)ファイルとして、OUTQに入れてくれます。プログラムが終了して、ファイルから、要求したすべてのデータが終わると、プリンターファイルもクローズされます。それとともに、スプールは、印刷可能になります。(このタイミングは指定で変更出来ます。)

印刷可能となった、スプールは、OSのコマンドで、スプールファイル(プリンターファイルではない)を印刷や印刷保留や削除できます。このように、OSと連携プレーを取るのです。

pgmstrcanit.gif (16834 バイト)

RPGの命令と、データの動き

(全手順の場合の話です。RPGサイクルは、この応用と考えた方が、わかりやすいでしょう。)

anipgmstrct.gif (35526 バイト)

※一つの図にしたら、あまりにごちゃごちゃしているので、Gifアニメーションにしました。結構、面倒でした...

ここでのポイントは、

  • C仕様書で、ファイルからの入力(CHAINやREAD)をすると、OSがファイルからのデータレコードをプログラムに渡して、それが、i仕様書で、フィールドに分解されていること。
  • C仕様書で、ファイルへの出力をすると、o仕様書でフィールドからレコードに組み立てられて、OSに手渡され、ファイルに書き出されること。

これを、よく頭の中でイメージしてください。

これで、プログラムの動きのおおよその仕組みがわかりましたか?


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送