従来のプログラムスタイル
従来のメインフレームやオフコンで使用していたバッチ型アプリケーションのプログラムスタイルは、手続き型プログラムスタイルです。プログラムの実行は、手続き部の先頭から始まり、記述したCOBOLの文単位に実行されます。手続き型プログラムスタイルは、バッチ型アプリケーションだけでなくクライアントアプリケーションの開発でも利用することができるので、従来のプログラム資産を流用することが可能です。
COBOLを使って、ウィンドウへアクセスするプログラムを作成するには、ファイルを扱うようにWRITE文を使ってデータをウィンドウに出力したり、READ文を使ってウィンドウから入力したデータを受け取ったりします。このように手続き型プログラムでは、WRITE文/READ文、DISPLAY文/ACCEPT文の実行順序は、実行する手続き自身が制御します。また、スクリーン機能を使ったプログラムでは、DISPLAY文が実行されるとスクリーンにデータを表示し、ACCEPT文が実行されるとスクリーンからデータを読み込みます。COBOLを使ったプログラミング方法の詳細は、『NetCOBOL ユーザーズガイド』を参照してください。
000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. DENPYOU1. 000400 ENVIRONMENT DIVISION. *> … 000700 SELECT 伝票画面 ASSIGN TO GS-DISPFILE 000800 SYMBOLIC DESTINATION IS “DSP” 000900 FORMAT IS 伝票 *> … 001400 SELECT 商品ファイル ASSIGN TO SYOUHIN 001500 FILE STATUS IS ファイル状態 001600 ORGANIZATION IS INDEXED *> … 002000 DATA DIVISION. 002100 FILE SECTION. 002200 FD 商品ファイル. 002300 COPY SYOHINM1. 002400 FD 伝票画面. 002500 COPY DENPYO01 OF XMDLIB. 002700 WORKING-STORAGE SECTION. *> … 006900 PROCEDURE DIVISION. 010300 OPEN INPUT 商品ファイル. 011900 OPEN I-O 伝票画面. *> 表示ファイルオープン *> … 012500 WRITE DENPYOU1. *> 画面出力 012600 READ 伝票画面. *> 画面データ入力 012700 IF END-KYE THEN 012800 GO TO 入力終了. *> … 025000 入力終了. 025100 CLOSE 伝票 画面商品ファイル. *> クローズ 025200 EXIT PROGRAM.
イベント駆動型のプログラムスタイル
イベント駆動型のプログラムスタイルは、ある事象を単位として、その事象が発生した場合の動作を手続きとして記述していく方法です。事象には、「ボタンが押された(クリックされた)」、「テキスト(入力データ)が変更された」といったものがあり、これらをイベントと呼んでいます。これらのイベントに対応する手続きを記述していく方法を、イベント駆動型プログラムスタイルといいます。
PowerCOBOLのプログラムスタイル
PowerCOBOLのプログラムスタイルは、イベント駆動型プログラムスタイルです。
PowerCOBOLでは、イベントごとに実行される手続きをCOBOLで記述していきます。
たとえば、「ボタンが押された」場合には、"Click"というイベントが発生します。また、「テキストが変更された」場合には、"Change"というイベントが発生します。これらのイベントごとに、イベントが発生したときの動作をCOBOLで記述していきます。
PowerCOBOLでは、1つのウィンドウが1つの翻訳単位(外部プログラム)となります。この外部プログラムは、翻訳時にPowerCOBOLによって自動的に生成されます。記述した各イベントに対応するCOBOLの手続きは、その外部プログラムに含まれる内部プログラムとして展開されます。外部プログラムは、以下のようなCOBOLソースとして生成されます。
プログラムが実行されると、PowerCOBOLの実行システム(ランタイムシステム)は、Windowsからのイベントを受け取り、そのイベントに対応する内部プログラムを呼び出すための制御をします。