neverjpのぶらり日記

コンピューター関連の記事とぶらりと出かけた先の写真など

9400RPGII習得



RPG*1はクエリー用ツールとして設計されたものですが、IBMが力を入れたことで、一人前の強力な言語になりました。RPGは(COBOL,FORTRANのような)コンパイラーではなくジェネレータであることです。当社では中型汎用コンピュータ9400にRPGIIとして実装されていました。また後にM電機のオフィスコンピュータ・シリーズ8にOEMとして実装された、PROGRESSIIとして長く使われています。

典型的なRPGプログラムは File Specification から始まります。ここでは入出力用ファイルを全て列挙します。続いて Data Definition Specification です。これはデータ構造や配列を定義する部分で、COBOLの Working-Storage セクションやPascalの変数定義(var)セクションに大変よく似ています。次はプログラムの動作をコードする Calculation Specification です。出力するレポートのレイアウトを決定する Output Specification を加えてもいいし、外部でそれを決定してもいいです。

初期のRPGの売り物はprogram cycle*2でした。これは、レコードをファイルから読み込む毎にいくつかのRPGプログラムが一つの暗黙のループの中で実行されるというものであり、別の見方をすれば、暗黙のうちに相互作用する一つのプログラムが作り上げられるということになります。

RPGはパンチカード時代から現代まで常用され続けてきた数少ない言語の一つです。IBMRPGを開発したのは1960年代のことでした。RPGはReport Program Generator で、この名前が目的を表しています: データファイルを読み、小計や検算を含んだ会計報告を生成します。

RPGはユニットレコード装置(以下PCS*3)から当時新開発だったIBM 1401シリーズへの移行を容易ならしめることを目的としていました。PCS*4技術者は、プラグボード*5上で配線することで入出力やカウンタ操作(四則演算)を行うことに慣れていました。PCSのプログラムは1マシンサイクル中にいくつかのパルスを発生することで実行されていたので、RPGはprogram cycleの名でこれをエミュレート*6しました。

当時、他に広く用いられていた言語にCOBOLFORTRANがありました。COBOLは饒舌な*7ビジネス向け言語で、FORTRANは科学計算向けでした。この時代の他の言語としては、PL/1、ALGOLがあります。COBOLメインフレーム/汎用機のビジネス応用ではより一般的であり、RPGはPCSから移行したユーザでより一般的でした。

現行のRPG IVはより堅固な言語になっています。昔と同様単純なエディタでプログラムを編集してもいいし、PCで編集してもよいです。M電機はPROGRESSIIの機能拡張を続けており、内蔵された機能も増加しています。これらの改良の一方ではこれまでとの互換性も考慮されており、何年も前に書かれたRPGプログラムが現在でもほとんど修正なしで実行可能です。

筆者は入社してまもなくRPGIIのジェネレータの構造解析の講習会に出席し、オペレーティングサイクルと各スペシフィケーション*8がサイクルのどの部分で参照されるかといったことを学びました。練習用としてRPGIIをコーディングしたほかはその後のSE人生としてRPGIIともPROGRESSIIとも係わることはありませんでした。筆者の昔の同僚は現在でもオフィスコンピュータでPROGRESSIIを使ったシステム開発を行っています。この項、Wikipediaを参照させていただきました。

人気ブログランキングへ←人気ブログランキングに参加しています。よろしければ1票を!


*1:Report Program Generator

*2:オペレーティングサイクル

*3:タビュレーティングマシン参照

*4:Punch Card System

*5:en:plug-board

*6:仮想実行

*7自然言語に近づけるため、ソースコードの記述量が多くなった — 省略しても構わない部分も多いが

*8:指示書