第7章 プログラミングの基礎知識
01 POW‑INDEX PIC S9(9) COMP‑5
7.1.2 フォームの手続き
フォームもコントロールと同様、イベント手続きをもっています。たとえば、
フォームが開かれたときはOpened、フォームが閉じられたときはClosedといっ たイベントが発生します。フォームは、これらに加え、フォーム内の手続き全 体で有効な共通宣言および共通内部プログラムを定義できます。さらに、フォ ームをActiveXコントロールとして利用するため、新しいイベント(カスタム イベント)も定義できます。ActiveXコントロールとして利用するための方法 は、「ActiveXコントロールを作成する(→p245)」を参照してください。
以下に、フォームがもつ共通宣言および共通内部プログラムについて説明します。
各宣言の記述方法についての詳細は『COBOL 文法書』を参照してください。
共通宣言(環境部)
SPECIAL‑NAMES
構成節(CONFIGURATION SECTION)の特殊名段落(SPECIAL‑NAMES)を記述します。
SPECIAL‑NAMESでは、必要となる機能名に対する呼び名や、記号定数などを定 義します。そのフォーム中で、機能名に対する呼び名や記号定数を使用しない 場合は、記述する必要はありません。
REPOSITORY
構成節(CONFIGURATION SECTION)のリポジトリ段落(REPOSITORY)を記述します。
REPOSITORYでは、この環境部の有効範囲内で使われるクラス名を指定します。
フォーム中で、クラス名を使用しない場合は、記述する必要はありません。
FILE‑CONTROL
入出力節(INPUT‑OUTPUT SECTION)のファイル管理記述項(FILE‑CONTROL)を記述 します。
FILE‑CONTROLでは、フォーム中で使用するファイルのSELECT句を記述します。
フォーム中で、ファイルを扱わない場合は、記述する必要はありません。
共通宣言(データ部)
BASED‑STORAGE
基底場所節(BASED‑STORAGE SECTION)を記述します。
BASED‑STORAGE SECTIONでは、ポインタデータ項目により、明示的または暗示 的に領域のアドレスが決定されるデータ項目を定義します。そのフォーム中で、
ポインタデータ項目を使用しない場合は、記述する必要はありません。
FILE
ファイル節(FILE SECTION)を記述します。
FILE SECTIONでは、ファイルの物理的な構造、識別名およびファイルに関する レコード名の情報を指定します。そのフォーム中で、ファイルを扱わない場合 は、記述する必要はありません。
モジュールのプロパティ設定ダイアログボックスで、[一般]タブの[スクリ プト言語]が"0 ‑ COBOL85言語仕様"である場合、ファイル節で定義するファ イルは、各手続きの中でOPEN文、CLOSE文、READ文、WRITE文などを使用する ために、GLOBAL句を記述する必要があります。記述しないと、手続き中でそ のファイルに対する入出力文が、翻訳エラーとなります。
ただし、SORT文/MERGE文ではGLOBAL句の指定ができませんので、SORT文/MERGE 文を使用する場合は、個々のイベント手続きのFILE SECTIONに記述してくだ さい。
逆に、モジュールのプロパティ設定ダイアログボックスで、[一般]タブの[ス クリプト言語]が"1 ‑ OOCOBOL言語仕様"である場合、GLOBAL句を記述する必 要はありません。GLOBAL句を記述すると翻訳エラーとなります。
WORKING‑STORAGE
作業場所節(WORKING‑STORAGE SECTION)を記述します。
WORKING‑STORAGE SECTIONでは、作業用データ項目の宣言をします。そのフォ ーム中で共通の、作業用データ項目を使用しない場合は、記述する必要はあり ません。
モジュールのプロパティ設定ダイアログボックスで、[一般]タブの[スクリ プト言語]が"0 ‑ COBOL85言語仕様"である場合、作業場所節で定義するデー タ項目は、内部プログラムとなる各手続きの中で使用するために、GLOBAL句 を記述する必要があります。記述しないと、そのデータ項目を参照している 手続きが、翻訳エラーとなります。
逆に、モジュールのプロパティ設定ダイアログボックスで、[一般]タブの[ス クリプト言語]が"1 ‑ OOCOBOL言語仕様"である場合、GLOBAL句を記述する必 要はありません。GLOBAL句を記述すると翻訳エラーとなります。
CONSTANT
定数節(CONSTANT SECTION)を記述します。
CONSTANT SECTIONでは、値が原始プログラムで与えられ、プログラムの実行中 に変わることのないデータ項目を記述します。そのフォーム中で共通の、定数 用のデータ項目を使用しない場合は、記述する必要はありません。
モジュールのプロパティ設定ダイアログボックスで、[一般]タブの[スクリ プト言語]が"0 ‑ COBOL85言語仕様"である場合、定数節で定義するデータ項 目は、内部プログラムとなる各イベント手続きの中で使用するために、GLOBAL 句を記述する必要があります。記述しないと、そのデータ項目を参照してい る手続きが、翻訳エラーとなります。
逆に、モジュールのプロパティ設定ダイアログボックスで、[一般]タブの[ス クリプト言語]が"1 ‑ OOCOBOL言語仕様"である場合、GLOBAL句を記述する必 要はありません。GLOBAL句を記述すると翻訳エラーとなります。
共通内部プログラム(手続き部)
フォーム内で利用する共通内部プログラムは、以下のどちらかの方法で作成し ます。
● 個々の共通内部プログラムを新規作成する方法
● 複数の共通内部プログラムをまとめてPROCEDUREに記述する方法 ただし、そのフォーム中で共通の内部プログラムを使用しない場合、作成する 必要はありません。
新規作成する方法
以下の操作により、共通内部プログラムを新規に作成できます。
通常、共通内部プログラムを作成する場合は、この方法を使用してください。
1. フォームのポップアップメニューの[手続き部の編集]サブメニューか ら[新規作成]コマンドを選択します。
2. 共通内部プログラムを記述します。このとき、見出し部(IDENTIFICATION DIVISION)の記述は不要です。
3. プロジェクトウィンドウのデザインツリーウィンドウで、スクリプト中 にある"FjCobCmpScrN"(Nは正数値)を選択します。
4. ポップアップメニューから[名前の変更]コマンドを選択し、共通内部 プログラム名を入力します。
● 再度、このプログラムを編集する場合は、ポップアップメニューの[手 続き部の編集]サブメニューから共通内部プログラム名を選択してくだ さい。
● モジュールのプロパティ設定ダイアログボックスで、[一般]タブの[ス クリプト言語]が"0 ‑ COBOL85言語仕様"である場合、この方法で作成 したプログラムには、自動的にCOMMON属性が付けられます。
PROCEDUREに記述する方法
以下のような特殊な内部プログラムを作成する場合は、共通内部プログラムを PROCEDUREに記述します。
ここに記述される内部プログラムは、すべての内部プログラムの先頭に位置づ けられます。
● #INCLUDE文を利用して、別ファイル中の共通内部プログラムを利用する 場合
● SQL文のカーソル宣言など、記述された順番に依存する手続きを使用す る場合
PROCEDUREに共通内部プログラムを記述する場合、各プログラムには見出し部 およびプログラムの終わり見出しが必要です。また、モジュールのプロパテ ィ設定ダイアログボックスで、[一般]タブの[スクリプト言語]が"0 ‑ COBOL85 言語仕様"である場合、プログラム名段落には、COMMON属性を付けてください。