第4章 NetCOBOL for .NETによる
画面プログラムの作成
4.1 Windowsフォームアプリケーションの概要
4.2 NetCOBOL for .NETとWindowsフォームアプリケーション
4.3 Windowsフォームの代表的なクラスと利用方法
4.4 Windowsフォームからサブプログラムの呼出し
4.5 Windowsフォームアプリケーションの作成
4.1 Windowsフォームアプリケーションの概要
4.1 Windowsフォームアプリケーションの概要
4.1.1 Windowsフォームと
Windowsフォームアプリケーション
Wi n d o w s フ ォ ー ム と は 、 Wi n d o w s ア プ リ ケ ー シ ョ ン の た め に 、 . N E T F r a m e w o r k が 提 供 し て い る 画 面 を 作 成 ・ 実 行 す る た め の フ レ ー ム ワ ー ク で す 。 Windowsフ ォ ー ムの 機能は 、す べてク ラス で提供 され てお り 、 .NET Framework上 の言 語であ れば 、種類 に関 係なく 利用 するこ と が で き ま す 。 ま た 、 Windowsフ ォ ーム を利用 する アプリ ケー ション を、 「 Windowsフ ォ ームア プリ ケーシ ョン 」と呼 びま す。 Wi n d o w s フ ォ ー ム ア プ リ ケ ー シ ョ ン は 、 Wi n d o w s の 機 能 を 十 分 に 利 用 で き る 形 式 で 、 コ ン ソ ー ル ア プ リ ケ ー シ ョ ン や Webア プリ ケー ション と 比 較 し て 、 画 面 設 計 や 機 能 的 に 自 由 度 が 高 い ア プ リ ケ ー シ ョ ン を 開 発 す る こ と が で き ま す 。 Wi n d o w s フ ォ ー ム ア プ リ ケ ー シ ョ ン は 、 い わ ゆ る イ ベ ン ト ド リ ブ ン ( イ ベ ン ト 駆 動 型 ) で す 。 「 ボ タ ン の ク リ ッ ク 」 「 画 面 の ロ ー ド 」 な ど 、 イ ベ ン ト ご と に 手 続 き を 記 述 し ま す 。 し か し 、 通 常 は す べ て の 処 理 を イ ベ ン ト 手 続 き に 記 述 す る の で は な く 、 デ ー タ ア ク セ ス や ビ ジ ネ ス ロ ジ ッ ク を ク ラ ス に ま と め て お き 、 Windows フ ォ ー ム か ら 呼 び 出 し ま す 。 こ う す る こ と で 、 プ ロ グ ラ ム の 再 利 用 性 を 高 め る こ と が で き ま す 。.Net Framework
Visual Studio .NET
Windowsフォームデザイナ コードエディタ Windowsフォーム クラス ビルド ソースプログラム 実行 .NET Framework基本クラス
CLR(Common Language Runtime:共通言語ランタイム) CLS準拠のプログラム
図 4 . 1 . 1 W i n d o w s フ ォ ー ム ア プ リ ケ ー シ ョ ン の 開 発 イ メ ー ジ
Wi n d o w s フ ォ ー ム を 使 用 し た ア プ リ ケ ー シ ョ ン 開 発 の 、 基 本 的 な パ タ ー ン に つ い て 説 明 し ま す 。 ま ず 、 Visual Stu dio の デザイ ナを 利用し て、 G U I で 画 面 デ ザ イ ン や プ ロ パ テ ィ の 設 定 な ど を 行 い ま す ( コ ー ド 記 述 で の プ ロ パ テ ィ 設 定 も 可 能 )。 そ の後、 Windowsフ ォ ームの イベ ント手 続き な ど の ア プ リ ケ ー シ ョ ン の 動 作 を 、 コ ー ド エ デ ィ タ で 記 述 し ま す 。
コ ー デ ィ ン グ 終 了 後 、 Visual Stu dio を 利用し て、 ビルド /実行 /デバ ッ グ を 行 い ま す 。 こ の 手 順 は 、 .NET Framewo rkの 各言 語を 通し て共通 で す 。
4.1.2 Windowsフォームアプリケーションの運用形式
Wi n d o w s フ ォ ー ム ア プ リ ケ ー シ ョ ン の 運 用 形 式 と し て は 、 ス タ ン ド ア ロ ン 、 ク ラ イ ア ン ト サ ー バ 、 XML Webサ ー ビ スク ライア ント があり ま す 。4.1 Windowsフォームアプリケーションの概要 .NET Framework Windows Windows Server SQL Server .NET Framework Windows Server XML Webサービス アプリケーション .NET Framework Windows .NET Framework Windows MDB スタンドアロン クライアントサーバ XML Webサービスクライアント 図 4 . 1 . 2 W i n d o w s フ ォ ー ム ア プ リ ケ ー シ ョ ン の 運 用 形 式 ス タ ン ド ア ロ ン は 、 1台 の Windows環 境 で完 結し た形式 で、 データ ベ ー ス な ど も ロ ー カ ル に 保 持 し て い ま す 。 ク ラ イ ア ン ト サ ー バ は 、 デ ー タ を サ ー バ 上 に 配 置 し 、 ア プ リ ケ ー シ ョ ン を ク ラ イ ア ン ト に 配 置 す る 形 式 で す 。 複 数 の ク ラ イ ア ン ト で デ ー タ を 共 有 で き る の が 特 徴 で す 。 X M L We b サ ー ビ ス ク ラ イ ア ン ト は 、 比 較 的 新 し い 形 式 で す 。 We b サ ー ビ ス と 呼 ば れ る 、 ビ ジ ネ ス ロ ジ ッ ク を ま と め た ア プ リ ケ ー シ ョ ン を We b 上 に 配 置 し 、 ク ラ イ ア ン ト か ら X M L We b サ ー ビ ス を 利 用 し ま す 。 3 階 層 の シ ス テ ム を 構 築 で き る 利 点 が あ り ま す 。 X M L We b サ ー ビ ス に は 、 X M L や S O A P と い っ た 技 術 が 使 わ れ て い ま す が 、 .NET Framewo rkに は、 XML Webサ ー ビス へアク セス するた めの イ ン タ フ ェ ー ス ク ラ ス を 自 動 生 成 す る 機 能 が 提 供 さ れ て い る た め 、 複 雑 な 手 続 き を 記 述 す る こ と な く 、 通 常 の ク ラ ス を 扱 う よ う に XML We bサ ー ビ ス に ア ク セ ス す る こ と が で き ま す 。
4.2 NetCOBOL for .NETと
Windowsフォームアプリケーション
N e t C O B O L の Wi n d o w s フ ォ ー ム ア プ リ ケ ー シ ョ ン の 概 要 N e t C O B O L f o r . N E T で も 、 Wi n d o w s フ ォ ー ム ア プ リ ケ ー シ ョ ン を 構 築 す る こ と が で き ま す 。 「 4.1 Windows フ ォ ー ム ア プ リ ケ ー シ ョ ン の 概 要 」 で 説 明 し た よ う に 、 Wi n d o w s フ ォ ー ム の 機 能 は . N E T F r a m e w o r k で 提 供 さ れ る た め 、 N e t C O B O L f o r . N E T か ら も 、 他 の 言 語 と 同 様 に 、 Wi n d o w s フ ォ ー ム の 機 能 を フ ル に 活 用 す る こ と が で き ま す 。 Windowsクアイアント .NET Framework(マネージコード) NetCOBOlL for .NETプロジェクトCOBOLサブプログラム 他言語作成クラス .NET Framework クラス Windowsフォーム アンマネージコード COBOL作成クラス 図 4 . 2 . 1 W i n d o w s フ ォ ー ム ア プ リ ケ ー シ ョ ン の 構 成 N e t C O B O L f o r . N E T の Wi n d o w s ア プ リ ケ ー シ ョ ン か ら は 、 ク ラ ス だ け で は な く 、 COBOL サ ブプ ログラ ムや アンマ ネー ジコー ドを 呼び出 す こ と も 可 能 で す 。 特 に COBOLサ ブ プログ ラム は、い わゆ る手続 き型 のプロ グラ ム形式 と な り ま す の で 、 Windows版 Ne tCOB OLや 他 のプ ラット フォ ームで 作 成 さ れ た COBO Lソ ー ス をサ ブプロ グラ ム化し 、 Windowsフ ォ ーム から 呼 び 出 す こ と で 、 既 存 資 産 を 有 効 に 活 用 す る こ と も 可 能 で す 。
4.2 NetCOBOL for .NETとWindowsフォームアプリケーション
4.2.1 Windowsフォームの構造
Wi n d o w s フ ォ ー ム は ビ ジ ュ ア ル な デ ザ イ ナ で デ ザ イ ン す る た め 、 一 見 バ イ ナ リ の フ ァ イ ル で 構 成 さ れ て い る イ メ ー ジ が あ り ま す 。 し か し 、 画 面 デ ザ イ ン な ど は テ キ ス ト 形 式 で フ ァ イ ル に 保 存 さ れ て い ま す 。 ま た 同 時 に 、 イ ベ ン ト 手 続 き に つ い て も 同 じ フ ァ イ ル に 保 存 さ れ ま す 。 定 義 フ ァ イ ル は 、 実 際 に は ク ラ ス 定 義 形 式 の COBOLソ ー スであ り、 図 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段落)
ク ラ ス 定 義 は 、 COBOLの オ ブジェ クト 指向プ ログ ラミン グ機 能で追 加 さ れ た 構 文 で す 。 ク ラ ス は 、 そ の ク ラ ス か ら 生 成 さ れ る オ ブ ジ ェ ク ト ( イ ン ス タ ン ス ) の 動 作 と 属 性 を 定 義 し た も の で す 。 オ ブ ジ ェ ク ト 指 向 プ ロ グ ラ ミ ン グ の 機 能 に は 、 任意 のク ラス を継承 し て 新 し い ク ラ ス を 作 成 す る 機 能 が あ り ま す 。 Windows ア プ リケー シ ョ ン で は 、 .NET Frameworkク ラ スラ イブラ リに 用意さ れて いる 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)
こ の 環 境 部 (ENV IR O NMENT D IVISI ON) を 含む 、ソー ス単 位内で 使 わ れ る ク ラ ス 名 や プ ロ パ テ ィ 名 を 指 定 し ま す 。 ま た 、 .NET Framework の ク ラ ス 名 (外 部 名 )を、 ソー ス単位 内で 参照す るた めの名 前 (内部名 )と 対 応 付 け て 指 定 し ま す 。 し た が っ て 、 リ ボ ジ ト リ 段 落 は ク ラ ス を 利 用 す る 上 で 非 常 に 重 要 で す 。 デ ザ イ ナ を 利 用 し て フ ォ ー ム 上 に 配 置 し た コ ン ト ロ ー ル の ク ラ ス や プ ロ パ テ ィ は 、 デ ザ イ ナ が 自 動 的 に リ ポ ジ ト リ 段 落 に 必 要 な 情 報 を 追 加 し ま す 。 ま た 、 Visual Studio .NETエ ディ タのIntelliSen se機 能 でも、 コン ト ロ ー ル の プ ロ パ テ ィ の 外 部 名 に 対 応 す る 内 部 名 を リ ポ ジ ト リ 段 落 に 追 加 で き ま す 。 リ ポ ジ ト リ 段 落 で 使 用 す る ク ラ ス 指 定 子 や プ ロ パ テ ィ 指 定 子 に つ い て は 、 「 3.3.3 ク ラ ス 名 や プ ロ パ テ ィ 名 な ど の 宣 言 」 を 参 照 し て く だ さ い 。
( 4 ) オブジェクト定義(OBJECT)
オ ブ ジ ェ ク ト の デ ー タ や メ ソ ッ ド を 定 義 す る 領 域 で す 。 Windows フ ォ ー ム の 画 面 に 関 連 し た メ ソ ッ ド や デ ー タ (フォ ーム 上のコ ント ロール へ の 参 照 を 保 持 す る 作 業 領 域 や イ ベ ン ト ハ ン ド ラ と な る メ ソ ッ ド な ど ) は 、 テ ン プ レ ー ト や デ ザ イ ナ で 自 動 的 に 生 成 さ れ ま す が 、 必 要 に 応 じ て 独 自 の メ ソ ッ ド や デ ー タ を 定 義 す る こ と が で き ま す 。( 5 ) InitializeComponentメソッド
画 面 の レ イ ア ウ ト を 作 成 す る 手 続 き が 記 述 さ れ ま す 。 こ の 手 続 き は デ ザ イ ナ が 自 動 生 成 し ま す 。 デ ザ イ ナ で 設 計 し た 画 面 の レ イ ア ウ ト は 、 こ の メ ソ ッ ド 内 に 記 述 さ れ た COBOL 手 続き とコメ ント によっ て表 現され てい るため 、デ ザイナ 以 外 で こ の 手 続 き を 変 更 す る と 、 デ ザ イ ナ が 画 面 レ イ ア ウ ト を 復 元 で き な く な る 場 合 が あ り ま す 。 こ の た め 、 こ の メ ソ ッ ド 内 の 手 続 き (コメン ト 行 含 む )を直 接変 更して はい けませ ん。( 6 ) イベントハンドラメソッド定義
Wi n d o w s フ ォ ー ム で 作 成 す る Wi n d o w s ア プ リ ケ ー シ ョ ン は 、 「 ボ タ ン4.2 NetCOBOL for .NETとWindowsフォームアプリケーション が ク リ ッ ク さ れ た 」 な ど の 動 作 を 契 機 (イベン ト )として 、手 続きを 実行 し ま す 。 こ の 契 機 を イ ベ ン ト と い い ま す 。 従 来 の 上 か ら 下 に 処 理 が 流 れ て い く 手 続 き 型 プ ロ グ ラ ミ ン グ モ デ ル と は 異 な り 、 イ ベ ン ト 駆 動 型 プ ロ グ ラ ミ ン グ モ デ ル に よ っ て ア プ リ ケ ー シ ョ ン を 作 成 し ま す 。 イ ベ ン ト ハ ン ド ラ は 、 メ ソ ッ ド と し て 実 装 さ れ ま す 。 イ ベ ン ト ハ ン ド ラ メ ソ ッ ド と コ ン ト ロ ー ル が 発 行 す る イ ベ ン ト と の 関 連 付 け は デ ザ イ ナ が 行 っ て お り 、 InitializeCo mponentメ ソ ッド 内に 必要な 情報 が自動 生成 さ れ ま す 。 デ ザ イ ナ は 、 イ ベ ン ト ハ ン ド ラ メ ソ ッ ド 定 義 の 最 小 限 の 手 続 き を 自 動 的 に 生 成 す る の で 、 プ ロ グ ラ マ ー は 、 メ ソ ッ ド 定 義 の デ ー タ 部 や 手 続 き 部 を 記 述 す る だ け で 済 み ま す 。 イ ベ ン ト ハ ン ド ラ の プ ロ グ ラ ム 例
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 コ ン ト ロ ー ル に デ ー タ を 表 示 す る 例 ( 一 部 ) こ の サ ン プ ル リ ス ト は 、 フ ァ イ ル か ら 読 み 取 っ た デ ー タ を ListViewコ ン ト ロ ー ル に 表 示 す る 例 で す が 、 各 所 に Windowsフ ォ ー ムの クラス 、す な わ ち .NET Framewo rkの クラ スラ イブ ラリを 利用 してい るの がわか り ま す 。 Windowsフ ォ ー ムア プリケ ーシ ョンを 作成 すると いう こと は 、 .NET Frameworkの Windowsフ ォ ームの クラ スライ ブラ リを活 用す る と い う こ と に 他 な り ま せ ん 。
4.3 Windowsフォームの代表的なクラスと
利用方法
4.3.1 名前空間とは
Wi n d o w s フ ォ ー ム の 代 表 的 な ク ラ ス を 知 る 前 に 、 名 前 空 間 に つ い て 説 明 し ま す 。 . N E T F r a m e w o r k の ク ラ ス は 、 関 連 す る ク ラ ス が グ ル ー プ 化 さ れ 、 階 層 化 し 管 理 さ れ て い ま す 。 こ の 階 層 化 さ れ た ク ラ ス の 各 階 層 を 「 名 前 空 間 」 と 呼 び ま す 。 そ れ ぞ れ の 名 前 空 間 に は 、 そ れ ぞ れ の 名 前 空 間 で 使 用 で き る ク ラ ス が 定 義 さ れ て い ま す 。System.Windows.Forms.Button
右端のピリオド名前空間
型
(クラスなど)
System Windows Forms Button System Web UI WebControls Button 同じクラス名でも 名前空間が異なる ■WindowsフォームのButtonクラス ■WebフォームのButtonクラス 図 4 . 3 . 1 名 前 空 間 と ク ラ ス 名 前 空 間 は 、 ク ラ ス の 階 層 を 表 す と と も に 、 ク ラ ス を 識 別 し て い ま す 。 .NET Frameworkプ ラッ トフォ ーム 上には 大量 のクラ スが 提供さ れ て い る た め 、 特 徴 が 似 た 同 じ 名 前 の ク ラ ス が あ る 場 合 が あ り ま す 。 そ の よ う な ク ラ ス を 、 名 前 空 間 で 識 別 す る こ と に な り ま す 。 . N E T F r a m e w o r k の リ フ ァ レ ン ス で は 、 ク ラ ス が ど の 名 前 空 間 に 属 す る か 明 記 さ れ て い ま す 。4.3 Windowsフォームの代表的なクラスと利用方法
4.3.2 System.Windows.Forms名前空間
Wi n d o w s フ ォ ー ム で 中 心 と な る 名 前 空 間 は 、 S y s t e m . Wi n d o w s . F o r m s 名 前 空 間 で す 。 Sy stem.Windows.Forms名 前 空間 にある 一部 のコン トロ ー ル に つ い て 簡 単 な 知 識 が あ れ ば 、 Windowsフ ォ ームア プリ ケーシ ョン を 作 成 す る こ と は で き ま す 。 し か し 、 Sy stem.Windows.Forms名 前 空間 の 詳 細 を 知 る こ と で 、 よ り 高 度 な Windowsフ ォー ムアプ リケ ーショ ンを 構 築 す る こ と が で き ま す 。 図 4 . 3 . 2 S y s t e m . W i n d o w s . F o r m s の リ フ ァ レ ン ス S y s t e m . Wi n d o w s . F o r m s 名 前 空 間 を . N E T F r a m e w o r k の リ フ ァ レ ン ス で 参 照 す る と 、 多 少 わ か り に く い 解 説 が 続 い て い ま す 。 こ こ を 正 確 に 覚 え る 必 要 は あ り ま せ ん 。 Sy stem.Windows.Forms名 前 空 間は 、以下 のよ う な 機 能 が 用 意 さ れ て い る こ と を 雰 囲 気 で つ か ん で い れ ば 問 題 あ り ま せ ん 。 Control,User Control,and Form
Wi n d o w s フ ォ ー ム に 関 す る 最 も 基 本 的 な 機 能 で す 。
基 本 機 能 を 提 供 す る ク ラ ス な ど で す 。 ユ ー ザ が 独 自 の コ ン ト ロ ー ル を 作 成 す る た め の 機 能 も あ り ま す 。 Controls Wi n d o w s フ ォ ー ム に 貼 り 付 け る 各 コ ン ト ロ ー ル の ク ラ ス を 提 供 し ま す 。 コ ン ト ロ ー ル と は 、 デ ー タ 入 力 の テ キ ス ト ボ ッ ク ス な ど 、 情 報 表 示 の ラ ベ ル 、 リ ス ト ボ ッ ク ス な ど 、 イ ベ ン ト (動作 )を 発生さ せる 部品の こ と で す 。 Co mponen ts コ ン ト ロ ー ル と し て は 、 用 意 さ れ て い な い メ ニ ュ ー や ヘ ル プ 機 能 な ど で す 。
Co mmon Dialog Boxes
Wi n d o w s で 共 通 化 さ れ た コ モ ン ダ イ ア ロ グ を 呼 び 出 す 機 能 で す 。 コ モ ン ダ イ ア ロ グ と は 、 例 え ば 、 「 フ ァ イ ル を 開 く 」 「 フ ォ ン ト の 選 択 」 「 色 の 選 択 」 な ど 、 多 く の プ ロ グ ラ ム で 利 用 さ れ る 機 能 を 、 一 貫 し た ユ ー ザ イ ン タ フ ェ ー ス を 実 現 す る た め に Windowsが 提 供 して いるも の で す 。
4.3 Windowsフォームの代表的なクラスと利用方法
4.3.3 代表的なクラス
( 1 ) Formクラス
名 前 空 間 :Sy stem.Windows.Forms ア プ リ ケ ー シ ョ ン の ト ッ プ レ ベ ル ウ ィ ン ド ウ と な る ク ラ ス で す 。 F o r m ク ラ ス で は 、 さ ま ざ ま な ウ ィ ン ド ウ を 作 成 で き ま す 。 通 常 は デ ザ イ ナ で ウ ィ ン ド ウ ( フ ォ ー ム ) の 作 成 と プ ロ パ テ ィ の 設 定 な ど を 行 う た め 、 プ ロ グ ラ ム の 手 続 き で F o r m ク ラ ス を 使 用 す る こ と は あ ま り あ り ま せ ん 。 ウ ィ ン ド ウ の 表 示 位 置 や サ イ ズ の 変 更 、 モ ー ダ ル /モ ード レス の設定 変 更 な ど を 使 用 し た い 場 合 は 、 Formク ラ ス を 利 用し ます。 な お 、 作 成 さ れ た Formオ ブ ジ ェ ク ト内 からF o r mク ラ ス (自 分自身 )の オ ブ ジ ェ ク ト や メ ソ ッ ド を 利 用 す る 場 合 は 、 オ ブ ジ ェ ク ト 名 に 定 義 済 み の オ ブ ジ ェ ク ト の 「 SELF」 を 使用 しま す。 使用例 F o r m の タ イ ト ル ( Te x t プ ロ パ テ ィ ) を 指 定 し た 文 字 列 に 変 更 す る 例 【 ク ラ ス 宣 言 】 I D E N T I F I C A T I O N D I V I S I O N . C L A S S - I D . F o r m 1 A S " W i n F o r m S a m p l e 1 . F o r m 1 " I N H E R I T S C L A S S - F O R M . 【 リ ポ ジ ト リ 段 落 】 R E P O S I T O R Y . C L A S S C L A S S - F O R M A S " S y s t e m . W i n d o w s . F o r m s . F o r m " P R O P E R T Y P R O P - T E X T A S " T e x t " 【 手 続 き 部 ( F o r m _ L o a d ) 】 * フ ォ ー ム の T e x t プ ロ パ テ ィ ( タ イ ト ル の ) 変 更 S E T P R O P - T E X T O F S E L F T O N " フ ォ ー ム サ ン プ ル " . 解説 ク ラ ス 宣 言 で は 、 Sy stem.Windo ws.Forms.Formク ラ ス を継 承した F o r m 1 ク ラ ス の 宣 言 を 行 っ て い ま す 。 F o r m ク ラ ス の 宣 言 は 、 通 常 は デ ザ イ ナ が 自 動 生 成 し ま す 。 リ ポ ジ ト リ 段 落 で は 、 参 照 す る ク ラ ス の 内 部 名 の 設 定 を 行 い ま す が 、 F o r m に 関 連 す る 主 な ク ラ ス や プ ロ パ テ ィ は 、 デ ザ イ ナ が 自 動 生 成 し ま す 。 手 続 き 部 で は 、 Formク ラス のオブ ジェ クトで ある 自分自 身 (SELF)の Te x t プ ロ パ テ ィ に 値 を 設 定 し て い ま す 。起 動 時 に タ イ ト ル を 設 定 図 4 . 3 . 3 ( 1 ) F o r m ク ラ ス の 使 用 例
( 2 ) Labelクラス
名 前 空 間 :Sy stem.Windows.Forms L a b e l ク ラ ス は 、 L a b e l コ ン ト ロ ー ル を 表 す ク ラ ス で す 。 L a b e l コ ン ト ロ ー ル は 、 フ ォ ー ム 上 に 配 置 さ れ た 部 品 の 説 明 や 操 作 の 解 説 な ど に 利 用 さ れ ま す 。 大 半 の プ ロ パ テ ィ は 、 デ ザ イ ナ で 設 定 さ れ る ケ ー ス が ほ と ん ど で す が 、 Textプ ロ パテ ィは 、状況 によ ってプ ログ ラムか ら設 定する こ と も あ り ま す 。 Textプロ パテ ィの利 用方 法は、 Formプ ロ パテ ィのサ ン プ ル と ほ ぼ 同 様 で す 。( 3 ) TextBoxクラス
名 前 空 間 :Sy stem.Windows.Forms Te x t B o x ク ラ ス は 、 Te x t B o x コ ン ト ロ ー ル を 表 す ク ラ ス で す 。 L a b e l が 表 示 専 用 な の に 対 し 、 TextBoxコ ン トロ ールに はキ ーボー ドな どから 単 一 行 や 複 数 行 の デ ー タ の 入 力 が 可 能 で す 。 ま た 、 Passw ordCharプ ロ パ テ ィ を 利 用 す る と 、 入 力 さ れ た 文 字 を 直 接 表 示 せ ず 、 別 の 文 字 (*な ど ) で 文 字 の 個 数 だ け を 表 示 さ せ る よ う に 設 定 す る こ と が で き ま す 。 プ ロ グ ラ ム か ら は 、 Textプ ロ パテ ィの 値の設 定や 参照、 Enabledプ ロ パ テ ィ を 利 用 し た 入 力 の 可 否 の 制 御 、 Key Pressイ ベ ン ト や Key Downイ ベ ン ト を 利 用 し た 入 力 デ ー タ の 確 認 な ど の 処 理 が よ く 行 わ れ ま す 。4.3 Windowsフォームの代表的なクラスと利用方法 使用例 Te x t B o x コ ン ト ロ ー ル に 入 力 さ れ た 文 字 列 を 取 得 す る 例 【 リ ポ ジ ト リ 段 落 】 R E P O S I T O R Y . C L A S S C L A S S - T E X T B O X A S " S y s t e m . W i n d o w s . F o r m s . T e x t B o x " P R O P E R T Y P R O P - T E X T A S " T e x t " 【 O B J E C T 定 義 の D A T A D I V I S I O N 】 W O R K I N G - S T O R A G E S E C T I O N . 0 1 t x t U s e r I D O B J E C T R E F E R E N C E C L A S S - T E X T B O X . 0 1 t x t P a s s w o r d O B J E C T R E F E R E N C E C L A S S - T E X T B O X . 【 メ ソ ッ ド の D A T A D I V I S I O N 】 W O R K I N G - S T O R A G E S E C T I O N . 0 1 U S E R - I D P I C N ( 1 0 ) . 0 1 U S E R - P W D P I C N ( 1 0 ) . 【 メ ソ ッ ド の 手 続 き 部 】 S E T U S E R - I D T O P R O P - T E X T O F t x t U s e r I D . S E T U S E R - P W D T O P R O P - T E X T O F t x t P a s s w o r d . 解説 Te x t B o x コ ン ト ロ ー ル を デ ザ イ ナ で 追 加 す る と 、 リ ポ ジ ト リ 段 落 に S y s t e m . Wi n d o w s . F o r m s . Te x t B o x ク ラ ス が 追 加 さ れ ま す 。 ま た 、 O B J E C T 定 義 の D ATA D I V I S I O N に は 、 Te x t B o x コ ン ト ロ ー ル に 設 定 さ れ た name(ID)プ ロ パ ティ の内容 と同 じ名前 で、 オブジ ェク ト変数 が 追 加 さ れ ま す 。 し た が っ て 、 ク ラ ス 内 で 追 加 さ れ た TextBoxコ ントロ ー ル が 使 用 で き る こ と に な り ま す 。 手 続 き 部 で は 、 TextBoxコ ントロ ール に入力 され た文字 列を 変数に 取 り 込 む 処 理 を 記 述 し て い ま す 。 な お 、 こ の 例 は 、 TextBoxコ ントロ ール の MaxLengthプ ロパ ティで 、 入 力 で き る 文 字 数 を 10文 字に 制限 して いるこ とを 前提と して います 。
( 4 ) Buttonクラス
名 前 空 間 :Sy stem.Windows.Forms B u t t o n ク ラ ス は 、 B u t t o n コ ン ト ロ ー ル を 表 す ク ラ ス で す 。 B u t t o n コ ン ト ロ ー ル は コ マ ン ド ボ タ ン と も 呼 ば れ 、 ク リ ッ ク し て 処 理 を 開 始 す る 際 に 利 用 さ れ ま す 。 プ ロ グ ラ ム か ら は 、 Enabledプ ロパ ティ を利用 した 、クリ ック の可否 の 制 御 が 行 わ れ る こ と が あ り ま す 。 ま た 、 通 常 は Clickイ ベン トに B u t t o n コ ン ト ロ ー ル が ク リ ッ ク さ れ た 場 合 の 手 続 き を 記 述 し ま す 。 使用例 B u t t o n コ ン ト ロ ー ル を ク リ ッ ク 不 可 に す る 例 【 リ ポ ジ ト リ 段 落 】 R E P O S I T O R Y . C L A S S C L A S S - B U T T O N A S " S y s t e m . W i n d o w s . F o r m s . B u t t o n " P R O P E R T Y P R O P - E N A B L E D A S " E n a b l e d " 【 O B J E C T 定 義 の D A T A D I V I S I O N 】 W O R K I N G - S T O R A G E S E C T I O N . 0 1 b t n L o g i n O B J E C T R E F E R E N C E C L A S S - B U T T O N . 【 メ ソ ッ ド の 手 続 き 部 】 S E T P R O P - E N A B L E D O F b t n L o g i n T O B " 0 " . 解説 B u t t o n コ ン ト ロ ー ル を デ ザ イ ナ で 追 加 す る と 、 リ ポ ジ ト リ 段 落 に S y s t e m . Wi n d o w s . F o r m s . B u t t o n ク ラ ス が 追 加 さ れ ま す 。 ま た 、 S y s t e m . B o o l e a n 構 造 体 型 と い う 、 t r u e ま た は f a l s e を 保 持 す る ク ラ ス も 追 加 さ れ ま す 。 O B J E C T 定 義 の D ATA D I V I S I O N に は 、 B u t t o n コ ン ト ロ ー ル に 設 定 さ れ た name (ID)プ ロ パテ ィの 内容と 同じ 名前で 、オ ブジェ クト 変数が 追 加 さ れ ま す 。 し た が っ て 、 ク ラ ス 内 で 追 加 さ れ た Buttonコ ント ロール が 使 用 で き る こ と に な り ま す 。 手 続 き 部 で は 、 Buttonコ ント ロール の Enabled プ ロ パティ には 、 S y s t e m . B o o l e a n 型 の 値 を 設 定 す る 必 要 が あ り ま す が 、 f a l s e を 意 味 す る B”0”を 代 入し ていま す。
( 5 ) MessageBoxクラス
名 前 空 間 :Sy stem.Windows.Forms M e s s a g e B o x ク ラ ス は 、 メ ッ セ ー ジ ボ ッ ク ス を 表 示 す る た め の ク ラ ス で す 。 Sy stem.Windo ws.Forms 名 前空 間に属 しま すが、 コン トロー ルで は あ り ま せ ん 。 メ ッ セ ー ジ ボ ッ ク ス を 表 示 す る た め の メ ソ ッ ド は 、 M e s s a g e B o x ク ラ ス の 静 的 メ ソ ッ ド と し て 提 供 さ れ て お り 、 M e s s a g e B o x ク ラ ス の イ ン ス タ ン ス を 生 成 す る こ と な く 、 呼 び 出 す こ と が で き ま す 。 プ ロ グ ラ ム か ら は 、 Showメ ソ ッド を利 用して メッ セージ ボッ クスを 表 示 す る 処 理 を 記 述 し ま す が 、 パ ラ メ ー タ ー に よ り メ ッ セ ー ジ 文 の ほ か 、 メ ッ セ ー ジ ボ ッ ク ス の タ イ ト ル や ボ タ ン の 形 状 、 ア イ コ ン の 形 式 な ど を 指 定 す る こ と も で き ま す 。4.3 Windowsフォームの代表的なクラスと利用方法 使用例 メ ッ セ ー ジ ボ ッ ク ス を 表 示 す る 例 【 リ ポ ジ ト リ 段 落 】 R E P O S I T O R Y . C L A S S C L A S S - M E S S A G E B O X A S " S y s t e m . W i n d o w s . F o r m s . M e s s a g e B o x " E N U M E N U M - M E S S A G E B O X B U T T O N S A S " S y s t e m . W i n d o w s . F o r m s . M e s s a g e B o x B u t t o n s " P R O P E R T Y P R O P - Y E S N O C A N C E L A S " Y e s N o C a n c e l " E N U M E N U M - D I A L O G R E S U L T A S " S y s t e m . W i n d o w s . F o r m s . D i a l o g R e s u l t " P R O P E R T Y P R O P - Y E S A S " Y e s " P R O P E R T Y P R O P - N O A S " N o " P R O P E R T Y P R O P - C A N C E L A S " C a n c e l " 【 メ ソ ッ ド の D A T A D I V I S I O N 】 W O R K I N G - S T O R A G E S E C T I O N . 0 1 W K - M E S S A G E B O X B U T T O N S O B J E C T R E F E R E N C E E N U M - M E S S A G E B O X B U T T O N S . 0 1 W K - D I A L O G R E S U L T O B J E C T R E F E R E N C E E N U M - D I A L O G R E S U L T . 【 メ ソ ッ ド の 手 続 き 部 】 S E T W K - M E S S A G E B O X B U T T O N S T O P R O P - Y E S N O C A N C E L O F E N U M - M E S S A G E B O X B U T T O N S . I N V O K E C L A S S - M E S S A G E B O X " S h o w " U S I N G N " ク リ ッ ク ! " N " S a m p l e " W K - M E S S A G E B O X B U T T O N S R E T U R N I N G W K - D I A L O G R E S U L T . E V A L U A T E W K - D I A L O G R E S U L T W H E N P R O P - Y E S O F E N U M - D I A L O G R E S U L T I N V O K E C L A S S - M E S S A G E B O X " S h o w " U S I N G N " 「 は い 」 が ク リ ッ ク " N " ク リ ッ ク 結 果 " W H E N P R O P - N O O F E N U M - D I A L O G R E S U L T I N V O K E C L A S S - M E S S A G E B O X " S h o w " U S I N G N " 「 い い え 」 が ク リ ッ ク " N " ク リ ッ ク 結 果 " W H E N P R O P - C A N C E L O F E N U M - D I A L O G R E S U L T I N V O K E C L A S S - M E S S A G E B O X " S h o w " U S I N G N " 「 キ ャ ン セ ル 」 が ク リ ッ ク " N " ク リ ッ ク 結 果 " E N D - E V A L U A T E . 解説 メ ッ セ ー ジ ボ ッ ク ス を 表 示 す る だ け で あ れ ば 、 リ ポ ジ ト リ 段 落 に M e s s a g e B o x ク ラ ス の 内 部 名 を 指 定 し 、 手 続 き 部 で S h o w メ ソ ッ ド を 利 用 す る だ け で 、 メ ッ セ ー ジ ボ ッ ク ス を 表 示 で き ま す 。 「 は い 」 「 い い え 」 な ど の ボ タ ン を 表 示 し た り 、 ア イ コ ン を 表 示 し た り す る 場 合 、 メ ッ セ ー ジ 以 外 の パ ラ メ ー タ ー を 指 定 す る 必 要 が あ り ま す 。 例 で は 、 「 は い 」 「 い い え 」 「 キ ャ ン セ ル 」 の 3つの ボタ ンを表 示 す る た め に 、 MessageboxButtons列 挙体の YesNoC ancelメ ン バ を指 定 し て い ま す 。 ま た 、 戻 り 値 と し て DialogResult 列 挙 体 が 返 さ れ ま す 。 し た が っ て 、 リ ポ ジ ト リ 段 落 に Mess agebox Buttons列 挙 体と
D i a l o g R e s u l t 列 挙 体 お よ び そ れ ぞ れ の 列 挙 体 の メ ン バ ( プ ロ パ テ ィ ) の 内 部 名 を 宣 言 し て い ま す 。 手 続 き 部 で は 、 メ ッ セ ー ジ ボ ッ ク ス を 表 示 し て い ま す が 、 列 挙 体 の 参 照 は 直 接 メ ソ ッ ド の パ ラ メ ー タ ー に 指 定 で き な い た め 、 列 挙 体 の 参 照 を 格 納 す る 列 挙 型 変 数 を 利 用 し て い ま す 。 図 4 . 3 . 3 ( 2 ) M e s s a g e B o x ク ラ ス の 使 用 例
( 6 ) OpenFileDialogクラス、SaveFileDialogクラス
名 前 空 間 :Sy stem.Windows.Forms O p e n F i l e D i a l o g ク ラ ス は 、 O p e n F i l e D i a l o g コ ン ト ロ ー ル を 表 す ク ラ ス で 、 SaveFileDialo gク ラス は、 SaveFileDialogコ ン ト ロー ルを表 すク ラ ス で す 。 そ れ ぞ れ の ク ラ ス は 、 フ ァ イ ル を 選 択 す る ダ イ ア ロ グ ボ ッ ク ス を 表 示 す る 機 能 を 持 ち ま す 。 こ れ ら の ク ラ ス は 、 Windowsの コ モン ダイア ログ ボック スを 表示す る 機 能 を も ち 、 こ れ に よ り 、 Windows標 準 の U Iを 利 用 す る こ と が でき ま す 。 こ れ ら の ク ラ ス は 、 一 般 の コ ン ト ロ ー ル の よ う に フ ォ ー ム 上 に 貼 り 付 い た 形 で 表 示 さ れ ま せ ん (た だ し、デ ザイ ン時に はこ れらの クラ スを使 用 し て い る こ と が わ か る よ う に デ ザ イ ナ 上 に 表 示 さ れ ま す ) 。 O p e n F i l e D i a l o g ク ラ ス と S a v e F i l e D i a l o g は 非 常 に 良 く 似 て い ま す が 、 O p e n F i l e D i a l o g は 主 に 既 存 の フ ァ イ ル を 開 く こ と を 目 的 と し て い る の に 対 し 、 SaveFileDialo gは 保存 する ファ イルを 選択 するこ とを 目的と して い る た め 、 メ ソ ッ ド の 動 作 や プ ロ パ テ ィ が 異 な り ま す 。 プ ロ グ ラ ム か ら は 、 ShowDialog メ ソッ ドでフ ァイ ルを開 く (保存す る ) ダ イ ア ロ グ ボ ッ ク ス を 表 示 し 、 FileNameプ ロ パテ ィで、 ダイ アログ ボ ッ ク ス で 指 定 さ れ た フ ァ イ ル 名 を パ ス 付 き で 受 け 取 り ま す 。 ま た 、 F i l t e r プ ロ パ テ ィ を 指 定 し て お く と 、 開 く フ ァ イ ル の 拡 張 子 を 指 定 す る4.3 Windowsフォームの代表的なクラスと利用方法 こ と が で き ま す 。 使用例 メ ッ セ ー ジ ボ ッ ク ス を 表 示 す る 例 【 リ ポ ジ ト リ 段 落 】 R E P O S I T O R Y . C L A S S C L A S S - O P E N F I L E D I A L O G A S " S y s t e m . W i n d o w s . F o r m s . O p e n F i l e D i a l o g " E N U M E N U M - D I A L O G R E S U L T A S " S y s t e m . W i n d o w s . F o r m s . D i a l o g R e s u l t " P R O P E R T Y P R O P - O K A S " O K " P R O P E R T Y P R O P - F I L E N A M E A S " F i l e N a m e " P R O P E R T Y P R O P - F I L T E R A S " F i l t e r " " 【 メ ソ ッ ド の D A T A D I V I S I O N 】 W O R K I N G - S T O R A G E S E C T I O N . 0 1 W K - D I A L O G R E S U L T O B J E C T R E F E R E N C E E N U M - D I A L O G R E S U L T . 【 メ ソ ッ ド の 手 続 き 部 】 S E T P R O P - F I L T E R O F o p e n F i l e D i a l o g 1 T O N " * . t x t ¦ * . t x t " . I N V O K E o p e n F i l e D i a l o g 1 " S h o w D i a l o g " R E T U R N I N G W K - D I A L O G R E S U L T . I F W K - D I A L O G R E S U L T = P R O P - O K O F E N U M - D I A L O G R E S U L T T H E N S E T P R O P - T E X T O F t x t F i l e N a m e T O P R O P - F I L E N A M E O F o p e n F i l e D i a l o g 1 E N D - I F . TextBoxコントロール (Name:txtFileName) ファイルが存在 する場合 ファイルが存在 しない場合 図 4 . 3 . 3 ( 3 ) O p e n F i l e D i a l o g ク ラ ス の 使 用 例
解説 リ ポ ジ ト リ 段 落 に は 、 OpenFile D ialogク ラス への 参照が 自動 的に追 加 さ れ ま す 。 ShowDialo gメ ソッ ドの 戻り 値のた めの 、 DialogResult列 挙 体 の 宣 言 と 、 OpenFileDi alogク ラス からフ ァイ ル名を 受け 取るた め の FileNameプ ロ パティ 、フ ァイル タイ プを指 定す る Filterプ ロ パテ ィ を 宣 言 し て い ま す 。
メ ソ ッ ド の DATA DI V ISIO Nで は、 ShowDialogメ ソッド の戻 り値を 受 け 取 る た め の 変 数 を 宣 言 し て い ま す 。 メ ソ ッ ド の 手 続 き 部 で は 、 フ ァ イ ル を 開 く ダ イ ア ロ グ ボ ッ ク ス で 使 用 す る フ ィ ル タ (拡 張 子の 指 定 )の設 定 後 、 ShowDialog メ ソ ッ ド を呼 出 し 、 O K が ク リ ッ ク さ れ た 場 合 、 フ ァ イ ル 名 を Te x t B o x コ ン ト ロ ー ル ( t x t F i l e N a m e ) の テ キ ス ト プ ロ パ テ ィ に 代 入 す る 処 理 を 記 述 し て い ま す 。
4.4 Windowsフォームからサブプログラムの呼出し
4.4 Windowsフォームから
サブプログラムの呼出し
4.4.1 サブプログラムの構造
サ ブ プ ロ グ ラ ム を 作 成 す る 場 合 、 呼 出 し 元 プ ロ グ ラ ム と 同 じ プ ロ ジ ェ ク ト 内 に サ ブ プ ロ グ ラ ム を 作 成 す る 方 法 と 、 呼 出 し 元 プ ロ グ ラ ム と 別 の プ ロ ジ ェ ク ト と し て サ ブ プ ロ グ ラ ム を 作 成 す る (サ ブプロ グラ ムを独 立 し て 作 成 す る )方 法があ りま す。 ソリューション プロジェクト Windowフォーム サブプログラム プロジェクト サブプログラム 同一アセンブリとして生成 プログラム DLL プロジェクト Windowフォーム プログラム プログラムとDLLとして生成 図 4 . 4 . 1 サ ブ プ ロ グ ラ ム の 構 造 呼 出 し 元 と 同 じ プ ロ ジ ェ ク ト に サ ブ プ ロ グ ラ ム を 作 成 す る 場 合 、 呼 出 し 元 と 同 じ プ ロ グ ラ ム と し て 生 成 さ れ る た め 、 他 の プ ロ グ ラ ム な ど か ら の 再 利 用 が 難 し く な り ま す 。 た だ し 、 内 部 的 に サ ブ プ ロ グ ラ ム が 結 合 さ れ て い る た め 、 実 行 時 に オ ー バ ヘ ッ ド が 発 生 す る こ と が あ り ま せ ん 。 サ ブ プ ロ グ ラ ム を 独 立 し て 作 成 し た 場 合 、 独 立 し た DLLと して 作成さ れ る た め 、 複 数 の プ ロ グ ラ ム か ら 呼 出 し が 可 能 で す 。 た だ し 、 プ ロ グ ラ ム の 実 行 時 に サ ブ プ ロ グ ラ ム で あ る DLLが 呼び 出さ れるた め、 サブプ ロ グ ラ ム の 呼 出 し が オ ー バ ヘ ッ ド と な る こ と が あ り ま す 。4.4.2 サブプログラムの呼出し方法
( 1 ) 同一プロジェクトのサブプログラムを呼び出す
プ ロ ジ ェ ク ト に サ ブ プ ロ グ ラ ム が 追 加 (新規作 成 )されて いる 場合、 プ ロ ジ ェ ク ト 内 の COBOLプ ロ グラム から CALL文 で サブ プロ グラム 名を 指 定 し て 呼 び 出 す こ と が で き ま す 。 特 別 な 設 定 は 必 要 あ り ま せ ん 。 た だ し 、 開 発 環 境 上 で サ ブ プ ロ グ ラ ム を 新 規 作 成 す る と 、 P R O G R A M - I D 段 落 に 、 ” プ ロ ジ ェ ク ト 名 . フ ァ イ ル 名 ” の 形 式 の 外 部 名 が 付 加 さ れ ま す 。 CALL文 には 正確な 外部 名を指 定す る必要 があ ります 。 ソ ー ス フ ァ イ ル に サ ブ プ ロ グ ラ ム が 登 録 さ れ て い れ ば 呼 出 し 可 能 図 4 . 4 . 2 ( 1 ) プ ロ ジ ェ ク ト 内 の サ ブ プ ロ グ ラ ム4.4 Windowsフォームからサブプログラムの呼出し
( 2 ) 独立したプロジェクトのサブプログラムを呼び出す
独 立 し た プ ロ ジ ェ ク ト の サ ブ プ ロ グ ラ ム は 、 事 前 に DLLと して 作成さ れ て い る 必 要 が あ り ま す 。 サ ブ プ ロ グ ラ ム の DLL を 呼 び出 すに は、呼 出 し 元 の 手 続 き を 含 む プ ロ ジ ェ ク ト の 参 照 設 定 に 、 サ ブ プ ロ グ ラ ム が 格 納 さ れ た DLLを 追加 する必 要が ありま す。 同一プ ロジ ェクト のサ ブプロ グ ラ ム を 呼 び 出 す 場 合 と 異 な る の は 、 こ の 参 照 設 定 の み で す 。 し た が っ て 、 C A L L 文 で 簡 単 に サ ブ プ ロ グ ラ ム を 呼 出 す こ と が で き ま す 。 参照設定を右クリックし、 [参照の追加]を選択 [参照]タブを右クリックし、 呼び出すDLLを選択 DLLが追加される 図 4 . 4 . 2 ( 2 ) 参 照 設 定 の 追 加( 3 ) サブプログラム呼出しのサンプル
次 の 例 は 、 サ ブ プ ロ グ ラ ム を 呼 び 出 す メ ソ ッ ド の 例 と 呼 び 出 さ れ る サ ブ プ ロ グ ラ ム の 例 で す 。 【 サ ブ プ ロ グ ラ ム を 呼 び 出 す メ ソ ッ ド 例 】 M E T H O D - I D . b t n C a l l S u b 1 _ C l i c k P R I V A T E . D A T A D I V I S I O N . W O R K I N G - S T O R A G E S E C T I O N . 0 1 U S E R I D P I C N ( 5 ) . 0 1 P A S S W D P I C N ( 5 ) . 0 1 C H K - F L G P I C X ( 2 ) . 0 1 t m p S t r O B J E C T R E F E R E N C E C L A S S - S T R I N G . L I N K A G E S E C T I O N . 0 1 s e n d e r O B J E C T R E F E R E N C E C L A S S - O B J E C T . 0 1 e O B J E C T R E F E R E N C E C L A S S - E V E N T A R G S . P R O C E D U R E D I V I S I O N U S I N G B Y V A L U E s e n d e r e . * ユ ー ザ I D と パ ス ワ ー ド は 5 文 字 以 内 に 制 限 し て い る と す る 。 S E T U S E R I D T O P R O P - T E X T O F t x t U s e r I D . S E T P A S S W D T O P R O P - T E X T O F t x t P a s s W D . C A L L " s u b C a l l e d " U S I N G U S E R I D P A S S W D R E T U R N I N G C H K - F L G . * 外 部 名 を 明 に 指 定 し て い る 場 合 * C A L L " W i n F o r m S a m p l e 4 . s u b C a l l e d " * U S I N G U S E R I D P A S S W D * R E T U R N I N G C H K - F L G . 【 呼 び 出 さ れ る サ ブ プ ロ グ ラ ム ( 一 部 ) 】 I D E N T I F I C A T I O N D I V I S I O N . P R O G R A M - I D . s u b C a l l e d . * 外 部 名 を 明 に 指 定 し て い る 例 * P R O G R A M - I D . s u b C a l l e d A S " W i n F o r m S a m p l e 4 . s u b C a l l e d " . E N V I R O N M E N T D I V I S I O N . C O N F I G U R A T I O N S E C T I O N . S P E C I A L - N A M E S . R E P O S I T O R Y . D A T A D I V I S I O N . W O R K I N G - S T O R A G E S E C T I O N . L I N K A G E S E C T I O N . 0 1 U S E R I D P I C N ( 5 ) . 0 1 P A S S W D P I C N ( 5 ) . 0 1 C H K - F L G P I C X ( 2 ) . P R O C E D U R E D I V I S I O N U S I N G U S E R I D P A S S W D R E T U R N I N G C H K - F L G . ・ ・ ・ ・ ・ ・ ・4.5 Windowsフォームアプリケーションの作成
4.5 Windowsフォームアプリケーションの作成
実 際 に Windowsフ ォ ー ムア プリケ ーシ ョンを 作成 します 。4.5.1 プログラム概要
C O B O L の 索 引 フ ァ イ ル を 読 み 込 ん で 、 C S V 形 式 の フ ァ イ ル に 変 換 す る Windowsフ ォ ームア プリ ケーシ ョン を作成 しま す。フ ァイ ルの指 定に は 、 コ モ ン ダ イ ア ロ グ ボ ッ ク ス を 使 用 し 、 GUIで 選 択が でき るよう にし ま す 。 「ファイルを開く」ダイアログ 「名前を付けて保存」ダイアログ クリックすると、索引ファイル からCSVファイルを作成する サブプログラムを呼び出す 図 4 . 5 . 1 W i n d o w s フ ォ ー ム ア プ リ ケ ー シ ョ ン の 実 行 イ メ ー ジ 作 成 す る Windowsフ ォ ーム アプリ ケー ション は、 ボタン をク リック す る と 、 2章で 作成 したコ ンソ ールア プリ ケーシ ョン (索引 ファ イルを CSV フ ァ イ ル に 変 換 す る プ ロ グ ラ ム )を サブ プログ ラム として 活用 し、 Wi n d o w s フ ォ ー ム か ら 呼 び 出 せ る よ う に し ま す 。4.5.2 プロジェクトの作成
¾ 手 順 1 N e t C O B O L f o r . N E T を 起 動 し 、 起 動 画 面 の [ フ ァ イ ル ] メ ニ ュ ー よ り[ 新 規 作 成 ] - [ プ ロ ジ ェ ク ト ] を 選 択 し ま す 。 ¾ 手 順 2 [ プ ロ ジ ェ ク ト の 種 類 ] よ り 「 C O B O L プ ロ ジ ェ ク ト 」 、 [ テ ン プ レ ー ト ] フ レ ー ム よ り 「 Windowsア プ リケ ーシ ョン」 を選 択し、 [プ ロ ジェ ク ト 名 ]、 [ソ リ ュー ション 名 ]の 両 テ キス トボッ クス に 「 CNVFIL EWIN」 な ど 任意 の名称 を入 力し、 [場 所 ]の テ キス トボッ ク ス に プ ロ ジ ェ ク ト の 作 成 フ ォ ル ダ を 指 定 後 、 「 OK」ボ タン をクリ ッ ク し ま す 。
4.5 Windowsフォームアプリケーションの作成 ¾ 手 順 3 手 順 2で 指定 した テンプ レー トに従 って 、プロ ジェ クトが 自動 生成さ れ ま す (生成 直後 の画面 イメ ージで す )。Windowsフ ォー ムデ ザイナ ウ イ ン ド ウ に 初 期 状 態 の Windowsフ ォー ムが表 示さ れてい ます 。 ¾ 手 順 4 Wi n d o w s フ ォ ー ム 内 に 、 「 ツ ー ル ボ ッ ク ス 」 か ら コ ン ト ロ ー ル を 選 択 し 、 下 図 の よ う に 配 置 し ま す 。 Te x t B o x コ ン ト ロ ー ル B u t t o n コ ン ト ロ ー ル L a b e l コ ン ト ロ ー ル ツ ー ル ボ ッ ク ス か ら コ ン ト ロ ー ル を 選 択 し て 貼 り 付 け る O p e n F i l e D i a l o g コ ン ト ロ ー ル S a v e F i l e D i a l o g コ ン ト ロ ー ル
¾ 手 順 5 コ ン ト ロ ー ル の 配 置 が 完 了 し た ら 、 各 コ ン ト ロ ー ル の プ ロ パ テ ィ を 設 定 し ま す 。 コ ン ト ロ ー ル を ク リ ッ ク す る と 表 示 さ れ る プ ロ パ テ ィ ウ ィ ン ド ウ で 、 プ ロ パ テ ィ を 設 定 し ま す 。 各 コ ン ト ロ ー ル に 設 定 す る プ ロ パ テ ィ は 、 次 の と お り で す 。 [ l a b e l 1 ] の プ ロ パ テ ィ 表 示 [ l a b e l 1 ] コ ン ト ロ ー ル を ク リ ッ ク b u t t o n 1 l a b e l 1 t e x t B o x 1 b u t t o n 2 b u t t o n 3 l a b e l 2 t e x t B o x 2
4.5 Windowsフォームアプリケーションの作成 コ ン ト ロ ー ル プ ロ パ テ ィ 値 l a b e l 1 T e x t 入 力 フ ァ イ ル l a b e l 2 T e x t 出 力 フ ァ イ ル t e x t B o x 1 N a m e t x t I n f i l e t e x t B o x 2 N a m e t x t O u t f i l e N a m e b t n O p e n b u t t o n 1 T e x t " . . . " N a m e b t n S a v e b u t t o n 2 T e x t " . . . " N a m e b t n O u t b u t t o n 3 T e x t " C S V 出 力 " o p e n F i l e D i a l o g 1 I n i t i a l D i r e c t o r y " . " s a v e F i l e D i a l o g 1 I n i t i a l D i r e c t o r y " . " ¾ 手 順 6 プ ロ パ テ ィ の 設 定 が 完 了 し た ら 、 コ ー ド エ デ ィ タ ウ ィ ン ド ウ で 、 コ ー デ ィ ン グ を 行 い ま す 。
コ ー デ ィ ン グ が 必 要 な の は 、 button コ ン ト ロ ー ル (btnOpen 、 btnSave 、 b t n O u t ) の C l i c k イ ベ ン ト で す 。 フ ォ ー ム 上 の b u t t o n コ ン ト ロ ー ル を 直 接 ダ ブ ル ク リ ッ ク す る と 、 Clickイ ベン トのコ ード エディ タに カーソ ル が 遷 移 す る の で 、 処 理 を 追 加 し ま す 。 な お 、 他 の イ ベ ン ト の コ ー デ ィ ン グ を 行 う 際 は 、 下 図 の よ う に 、 対 象 と な る コ ン ト ロ ー ル を 選 択 し た 状 態 で 、 プ ロ パ テ ィ ウ ィ ン ド ウ 内 の イ ベ ン ト の ア イ コ ン を ク リ ッ ク す る と 、 イ ベ ン ト 一 覧 が 表 示 さ れ ま す 。 こ こ で 、 該 当 の イ ベ ン ト を ダ ブ ル ク リ ッ ク す る と 、 選 択 し た イ ベ ン ト の コ ー ド エ デ ィ タ に カ ー ソ ル が 遷 移 し ま す 。
任 意 の イ ベ ン ト を ダ ブ ル ク リ ッ ク す る と イ ベ ン ト の コ ー ド ウ イ ン ド ウ に カ ー ソ ル が 遷 移 [ イ ベ ン ト ] ボ タ ン を ク リ ッ ク す る と イ ベ ン ト が 一 覧 表 示 さ れ る ま た 、 リ ポ ジ ト リ 段 落 に ク ラ ス 名 や プ ロ パ テ ィ 名 を 宣 言 し た り 、 デ ー タ 部 に 作 業 領 域 を 定 義 し た り す る 必 要 が あ る か も 知 れ ま せ ん 。 な お 、 コ ン ト ロ ー ル を 設 定 す る た め に 必 要 な ク ラ ス 名 や プ ロ パ テ ィ 名 の 宣 言 は 、 コ ン ト ロ ー ル を フ ォ ー ム 上 に 配 置 し た タ イ ミ ン グ で 自 動 的 に 生 成 さ れ ま す 。 次 の ソ ー ス を 参 考 に 、 コ ー デ ィ ン グ を 行 っ て く だ さ い 。 btnOut_Clickイベントに次の処理を追加 M E T H O D - I D . b t n O u t _ C l i c k P R I V A T E . D A T A D I V I S I O N . W O R K I N G - S T O R A G E S E C T I O N . 0 1 W - E N V V A L U E P I C X ( 2 4 0 ) . L I N K A G E S E C T I O N . 0 1 s e n d e r O B J E C T R E F E R E N C E C L A S S - O B J E C T . 0 1 e O B J E C T R E F E R E N C E C L A S S - E V E N T A R G S . P R O C E D U R E D I V I S I O N U S I N G B Y V A L U E s e n d e r e . * > 環 境 変 数 に フ ァ イ ル を 設 定 D I S P L A Y " S Y O P F " U P O N E N V - N A M E . S E T W - E N V V A L U E T O P R O P - T E X T O F t x t I n f i l e . D I S P L A Y W - E N V V A L U E U P O N E N V - V A L U E . D I S P L A Y " C S V F I L E " U P O N E N V - N A M E . S E T W - E N V V A L U E T O P R O P - T E X T O F t x t O u t f i l e . D I S P L A Y W - E N V V A L U E U P O N E N V - V A L U E . * > フ ァ イ ル 変 換 呼 び 出 し C A L L " C N V F I L E " . I N V O K E C L A S S - M E S S A G E B O X " S h o w " U S I N G S E L F N " 処 理 が 終 了 し ま し た " . E N D M E T H O D b t n O u t _ C l i c k .
4.5 Windowsフォームアプリケーションの作成 btnOpen_Clickイベントに次の処理を追加 M E T H O D - I D . b t n O p e n _ C l i c k P R I V A T E . D A T A D I V I S I O N . W O R K I N G - S T O R A G E S E C T I O N . 0 1 W - R E T O B J E C T R E F E R E N C E E N U M - D I A L O G R E S U L T . L I N K A G E S E C T I O N . 0 1 s e n d e r O B J E C T R E F E R E N C E C L A S S - O B J E C T . 0 1 e O B J E C T R E F E R E N C E C L A S S - E V E N T A R G S . P R O C E D U R E D I V I S I O N U S I N G B Y V A L U E s e n d e r e . * > ダ イ ア ロ グ 表 示 I N V O K E o p e n F i l e D i a l o g 1 " S h o w D i a l o g " U S I N G S E L F R E T U R N I N G W - R E T . I F W - R E T = P R O P - O K O F E N U M - D I A L O G R E S U L T T H E N S E T P R O P - T E X T O F t x t I n f i l e T O P R O P - F I L E N A M E O F o p e n F i l e D i a l o g 1 E N D - I F . E N D M E T H O D b t n O p e n _ C l i c k . btnSave_Clickイベントに次の処理を追加 な お 、 上 記 イ ベ ン ト の 処 理 で 必 要 な ク ラ ス 、 プ ロ パ テ ィ 、 機 能 を 追 加 し ま す 。 M E T H O D - I D . b t n S a v e _ C l i c k P R I V A T E . D A T A D I V I S I O N . W O R K I N G - S T O R A G E S E C T I O N . 0 1 W - R E T O B J E C T R E F E R E N C E E N U M - D I A L O G R E S U L T . L I N K A G E S E C T I O N . 0 1 s e n d e r O B J E C T R E F E R E N C E C L A S S - O B J E C T . 0 1 e O B J E C T R E F E R E N C E C L A S S - E V E N T A R G S . P R O C E D U R E D I V I S I O N U S I N G B Y V A L U E s e n d e r e . * > ダ イ ア ロ グ 表 示 I N V O K E s a v e F i l e D i a l o g 1 " S h o w D i a l o g " U S I N G S E L F R E T U R N I N G W - R E T . I F W - R E T = P R O P - O K O F E N U M - D I A L O G R E S U L T T H E N S E T P R O P - T E X T O F t x t O u t f i l e T O P R O P - F I L E N A M E O F s a v e F i l e D i a l o g 1 E N D - I F . E N D M E T H O D b t n S a v e _ C l i c k . SPECIAL-NAMES句 に次のソースを追加 S P E C I A L - N A M E S . E N V I R O N M E N T - N A M E I S E N V - N A M E E N V I R O N M E N T - V A L U E I S E N V - V A L U E .
REPOSITORY句に次の処理を追加 以 上 で ソ ー ス の 追 加 は 完 了 で す 。 R E P O S I T O R Y . : E N U M E N U M - D I A L O G R E S U L T A S " S y s t e m . W i n d o w s . F o r m s . D i a l o g R e s u l t " : C L A S S C L A S S - M E S S A G E B O X A S " S y s t e m . W i n d o w s . F o r m s . M e s s a g e B o x " : P R O P E R T Y P R O P - F I L E N A M E A S " F i l e N a m e " P R O P E R T Y P R O P - O K A S " O K " . ¾ 手 順 7 次 に 、 第 2章 で作 成した ファ イル変 換の コンソ ール アプリ ケー ション の ソ ー ス プ ロ グ ラ ム を 、 Windowsフ ォ ームか ら呼 び出せ るよ うに、 サ ブ ル ー チ ン と し て 追 加 し ま す 。 [ ソ リ ュ ー シ ョ ン エ ク ス プ ロ ー ラ ] ウ ィ ン ド ウ よ り [ ソ ー ス フ ァ イ ル ] フ ォ ル ダ を 右 ク リ ッ ク し 、 [追 加 ]- [既 存項 目の追 加 ]を 選 択 しま す。表 示 さ れ る ダ イ ア ロ グ ボ ッ ク ス で 、 該 当 の プ ロ グ ラ ム (CSVOU T.cob) を 指 定 し て く だ さ い 。
4.5 Windowsフォームアプリケーションの作成 ¾ 手 順 8 [ ビ ル ド ] メ ニ ュ ー か ら [ ソ リ ュ ー シ ョ ン の ビ ル ド ] を 実 行 し て 、 翻 訳 エ ラ ー な ど が な い か 確 認 し ま す 。 ¾ 手 順 9 ビ ル ド が 正 常 実 行 し た ら 、 い よ い よ 実 行 で す 。 [デ バ ッグ ]メ ニ ュー か ら [デ バ ッグ なし で開始 ]を ク リッ クす ると、 Windowsフ ォ ームが 起動 し ま す 。 入 力 フ ァ イ ル 、 出 力 フ ァ イ ル を 指 定 し て 、 [CS V出 力 ]ボ タ ン を ク リ ッ ク し て く だ さ い 。 [ C S V 出 力 ] ボ タ ン を 押 す と 、 次 の メ ッ セ ー ジ ボ ッ ク ス が 表 示 さ れ ま す 。
C S V フ ァ イ ル の 出 力 結 果 は 、 下 図 の と お り で す 。
以 上 が 、 Windowsフ ォ ーム アプリ ケー ション によ るファ イル 変換プ ロ グ ラ ム の 作 成 手 順 で す 。
4.5 Windowsフォームアプリケーションの作成