• 検索結果がありません。

NetCOBOL for .NETと

ドキュメント内 NetCOBOL for .NET 応用編 (ページ 100-104)

第4章   NetCOBOL for .NETによる        画面プログラムの作成

4.2 NetCOBOL for .NETと

4.2.1 Windowsフォームの構造 

Wi n d o w sフ ォ ー ム は ビ ジ ュ ア ル な デ ザ イ ナ で デ ザ イ ン す る た め 、 一 見

バ イ ナ リ の フ ァ イ ル で 構 成 さ れ て い る イ メ ー ジ が あ り ま す 。 し か し 、 画 面 デ ザ イ ン な ど は テ キ ス ト 形 式 で フ ァ イ ル に 保 存 さ れ て い ま す 。 ま た 同 時 に 、 イ ベ ン ト 手 続 き に つ い て も 同 じ フ ァ イ ル に 保 存 さ れ ま す 。 定 義 フ ァ イ ル は 、 実 際 に は ク ラ ス 定 義 形 式 のC O B O Lソ ー ス で あ り 、 図4 . 2 . 2の よ う に な っ て い ま す 。

IDENTIFICATION DIVISION.

CLASS-ID. クラス名INHERITS CLASS-FORM.

ENVIRONMENT DISVISION.

CONFIGRURATION SECTION SPECIAL-NAMES.

・・・

REPOSITORY.

CLASS CLASS-FORM AS "System.Windows.Forms.Form"

・・・

OBJECT.

DATA DIVISION.

PROCEDURE DIVISION METHOD-ID. NEW.

METHOD-ID. Dispose.

METHOD-ID. InitializeCompact.

イベントハンドラメソッド定義 その他のメソッド定義 END OBJECT.

END CLSSS クラス名.

(1) クラス定義(CLASS-ID段落)

(2) 特殊名段落(SPECIAL-NAMES)

(3) リポジトリ段落(REPOSITORY)

(4) オブジェクト定義(OBJECT)

(5) InitializeComponentメソッド (6) イベント ハンドラ メソッド定義

図 4 . 2 . 2   W i n d o w s フ ォ ー ム の C O B O L プ ロ グ ラ ム 構 造  

( 1 ) クラス定義(CLASS-ID段落) 

ク ラ ス 定 義 は 、C O B O Lの オ ブ ジ ェ ク ト 指 向 プ ロ グ ラ ミ ン グ 機 能 で 追 加 さ れ た 構 文 で す 。 ク ラ ス は 、 そ の ク ラ ス か ら 生 成 さ れ る オ ブ ジ ェ ク ト (イ ン ス タ ン ス)の 動 作 と 属 性 を 定 義 し た も の で す 。

オ ブ ジ ェ ク ト 指 向 プ ロ グ ラ ミ ン グ の 機 能 に は 、 任 意 の ク ラ ス を 継 承 し て 新 し い ク ラ ス を 作 成 す る 機 能 が あ り ま す 。 Wi n d o w s ア プ リ ケ ー シ ョ ン で は 、 . N E T F r a m e w o r kク ラ ス ラ イ ブ ラ リ に 用 意 さ れ て い る

S y s t e m . Wi n d o w s . F o r m s . F o r mク ラ ス を 継 承 し て 、 新 し いWi n d o w sフ ォ ー ム ク ラ ス を 作 成 し ま す 。

( 2 ) 特殊名段落(SPECIAL-NAMES) 

. N E T F r a m e w o r kの 重 要 な 機 能 の1つ で あ る カ ス タ ム 属 性 を 定 義 す る 場 合 、 こ こ に 定 義 し ま す 。

( 3 ) リポジトリ段落(REPOSITORY) 

こ の 環 境 部( E N V I R O N M E N T D I V I S I O N )を 含 む 、 ソ ー ス 単 位 内 で 使 わ れ る ク ラ ス 名 や プ ロ パ テ ィ 名 を 指 定 し ま す 。 ま た 、. N E T F r a m e w o r k の ク ラ ス 名(外 部 名)を 、 ソ ー ス 単 位 内 で 参 照 す る た め の 名 前(内 部 名)と 対 応 付 け て 指 定 し ま す 。 し た が っ て 、 リ ボ ジ ト リ 段 落 は ク ラ ス を 利 用 す る 上 で 非 常 に 重 要 で す 。

デ ザ イ ナ を 利 用 し て フ ォ ー ム 上 に 配 置 し た コ ン ト ロ ー ル の ク ラ ス や プ ロ パ テ ィ は 、 デ ザ イ ナ が 自 動 的 に リ ポ ジ ト リ 段 落 に 必 要 な 情 報 を 追 加 し ま す 。 ま た 、Vi s u a l S t u d i o . N E Tエ デ ィ タ のI n t e l l i S e n s e機 能 で も 、 コ ン ト ロ ー ル の プ ロ パ テ ィ の 外 部 名 に 対 応 す る 内 部 名 を リ ポ ジ ト リ 段 落 に 追 加 で き ま す 。

リ ポ ジ ト リ 段 落 で 使 用 す る ク ラ ス 指 定 子 や プ ロ パ テ ィ 指 定 子 に つ い て は 、 「3 . 3 . 3 ク ラ ス 名 や プ ロ パ テ ィ 名 な ど の 宣 言 」 を 参 照 し て く だ さ い 。

( 4 ) オ ブ ジ ェ ク ト 定 義 ( O B J E C T )  

オ ブ ジ ェ ク ト の デ ー タ や メ ソ ッ ド を 定 義 す る 領 域 で す 。Wi n d o w sフ ォ ー ム の 画 面 に 関 連 し た メ ソ ッ ド や デ ー タ(フ ォ ー ム 上 の コ ン ト ロ ー ル へ の 参 照 を 保 持 す る 作 業 領 域 や イ ベ ン ト ハ ン ド ラ と な る メ ソ ッ ド な ど)は 、 テ ン プ レ ー ト や デ ザ イ ナ で 自 動 的 に 生 成 さ れ ま す が 、 必 要 に 応 じ て 独 自 の メ ソ ッ ド や デ ー タ を 定 義 す る こ と が で き ま す 。

( 5 ) InitializeComponentメソッド 

画 面 の レ イ ア ウ ト を 作 成 す る 手 続 き が 記 述 さ れ ま す 。 こ の 手 続 き は デ ザ イ ナ が 自 動 生 成 し ま す 。

デ ザ イ ナ で 設 計 し た 画 面 の レ イ ア ウ ト は 、 こ の メ ソ ッ ド 内 に 記 述 さ れ

たC O B O L手 続 き と コ メ ン ト に よ っ て 表 現 さ れ て い る た め 、 デ ザ イ ナ 以

外 で こ の 手 続 き を 変 更 す る と 、 デ ザ イ ナ が 画 面 レ イ ア ウ ト を 復 元 で き な く な る 場 合 が あ り ま す 。 こ の た め 、 こ の メ ソ ッ ド 内 の 手 続 き(コ メ ン ト 行 含 む)を 直 接 変 更 し て は い け ま せ ん 。

( 6 ) イ ベ ン ト ハ ン ド ラ メ ソ ッ ド 定 義  

Wi n d o w sフ ォ ー ム で 作 成 す るWi n d o w sア プ リ ケ ー シ ョ ン は 、 「 ボ タ ン

が ク リ ッ ク さ れ た 」 な ど の 動 作 を 契 機(イ ベ ン ト)と し て 、 手 続 き を 実 行 し ま す 。 こ の 契 機 を イ ベ ン ト と い い ま す 。 従 来 の 上 か ら 下 に 処 理 が 流 れ て い く 手 続 き 型 プ ロ グ ラ ミ ン グ モ デ ル と は 異 な り 、 イ ベ ン ト 駆 動 型 プ ロ グ ラ ミ ン グ モ デ ル に よ っ て ア プ リ ケ ー シ ョ ン を 作 成 し ま す 。

イ ベ ン ト ハ ン ド ラ は 、 メ ソ ッ ド と し て 実 装 さ れ ま す 。 イ ベ ン ト ハ ン ド ラ メ ソ ッ ド と コ ン ト ロ ー ル が 発 行 す る イ ベ ン ト と の 関 連 付 け は デ ザ イ ナ が 行 っ て お り 、I n i t i a l i z e C o m p o n e n tメ ソ ッ ド 内 に 必 要 な 情 報 が 自 動 生 成 さ れ ま す 。 デ ザ イ ナ は 、 イ ベ ン ト ハ ン ド ラ メ ソ ッ ド 定 義 の 最 小 限 の 手 続 き を 自 動 的 に 生 成 す る の で 、 プ ロ グ ラ マ ー は 、 メ ソ ッ ド 定 義 の デ ー タ 部 や 手 続 き 部 を 記 述 す る だ け で 済 み ま す 。

イ ベ ン ト ハ ン ド ラ の プ ロ グ ラ ム 例

METHOD-ID. button1̲Click PRIVATE.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 LVItem OBJECT REFERENCE CLASS-LISTVIEWITEM.

01 tmpStr OBJECT REFERENCE CLASS-STRING.

01 tmpDcml OBJECT REFERENCE CLASS-DECIMAL.

01 tmpInt OBJECT REFERENCE CLASS-INT32.

LINKAGE SECTION.

01 sender OBJECT REFERENCE CLASS-OBJECT.

01 e OBJECT REFERENCE CLASS-EVENTARGS.

PROCEDURE DIVISION USING BY VALUE sender e.

DECLARATIVES.

ERR-001 SECTION.

USE AFTER EXCEPTION CLASS-EXCEPTION.

SET tmpStr TO PROP-MESSAGE OF EXCEPTION-OBJECT.

INVOKE CLASS-MESSAGEBOX "Show" USING BY VALUE tmpStr.

EXIT METHOD.

END DECLARATIVES.

OPEN INPUT 入力ファイル.

MOVE SPACE TO ENDFLG.

START 入力ファイル FIRST RECORD PERFORM UNTIL ENDFLG = "END"

READ 入力ファイル NEXT RECORD AT END MOVE "END" TO ENDFLG NOT AT END

SET tmpInt TO 製品番号

SET tmpStr TO tmpInt::"ToString"("0000")

INVOKE CLASS-LISTVIEWITEM "NEW" USING BY VALUE tmpStr RETURNING LVItem SET tmpStr TO 製品名

INVOKE PROP-SUBITEMS OF LVItem "Add" USING BY VALUE tmpStr

・・・中略・・・

INVOKE Items OF listView1 "Add" USING LVItem

Button1のクリックイベント System.Windows.Forms.ListViewItem クラスの参照設定

System.Windows.Forms.MessageBox クラスのShowのメソッドによるメッセー ジボックスの表示

ListViewItemクラスのインスタンスを作 成し、アイテム(データ)を格納

ListViewItemクラスのインスタンスにア イテムを追加

ListViewコントロールにデータを追加 (ListViewItemオブジェクト内のデータを表示)

図 4 . 2 . 3   L i s t V i e w コ ン ト ロ ー ル に デ ー タ を 表 示 す る 例 ( 一 部 )  

こ の サ ン プ ル リ ス ト は 、 フ ァ イ ル か ら 読 み 取 っ た デ ー タ をL i s t Vi e wコ ン ト ロ ー ル に 表 示 す る 例 で す が 、 各 所 にWi n d o w sフ ォ ー ム の ク ラ ス 、 す な わ ち. N E T F r a m e w o r kの ク ラ ス ラ イ ブ ラ リ を 利 用 し て い る の が わ か り ま す 。Wi n d o w sフ ォ ー ム ア プ リ ケ ー シ ョ ン を 作 成 す る と い う こ と は 、. N E T F r a m e w o r kのWi n d o w sフ ォ ー ム の ク ラ ス ラ イ ブ ラ リ を 活 用 す る と い う こ と に 他 な り ま せ ん 。

4.3 Windowsフォームの代表的なクラスと 

ドキュメント内 NetCOBOL for .NET 応用編 (ページ 100-104)