BREWの画面部分のプログラムをExcelの仕様書から自動生成するという、シリーズ仕様書からプログラムソースを生成する方法の続きです。
前回までで、雛形サンプルの公開をしました。
なので、今度は雛形サンプルを読んで、ソースを出力する、マクロを作成すればOK!ってことになります。
で、そのマクロなのですが、今回は、どういうものを作るかについて説明します。
■概要
今回は、画面ソースと画面用イベント用ソースを書き出します。
ところが、画面と画面用イベントは、1対1に対応しません。
画面1個にたいして、イベント用のソースを分けてもかまわないし、
逆のことも言えるわけです。
ということで、コレを解決するために
画面定義から、画面用の作業シートと、イベント用の作業シート
を別々に作成することにしました。
(なお、作業用シートは作業開始時に作成され、終了時に削除されます)
以下、作業シートごとに、説明します。
■画面用作業シート
画面用作業シートは、1画面に1つできます。
シート名は、日本語の画面名に@を付けたものです。
こんな感じのシートです
![](https://www.geocities.jp/xmldtp/bw_ex6_gamen1.jpg)
(全体を入れるため、縮小し、一部の桁の幅を縮小しています)
画面、メニュー、イベントが、横に並んでいます。
なお、M桁に、この画面で使うイベントクラスが並んでいます。
本来ここではないのですが、バグのためか、Z桁以上が入れられないので、
むりやり、ここに突っ込みました。
■画面イベント用作業シート
画面イベント用作業シートは、1イベントクラスに1つできます。
シート名は、イベントクラス名に@を付けたものです。
こんな感じのシートです
![](https://www.geocities.jp/xmldtp/bw_ex6_gamen1event.jpg)
(全体を入れるため、一部の桁の幅を拡大しています)
イベント関連の内容が並んでいます。
P.S いまのこの方式だと2つの画面から、同じ画面イベントファイルを参照する場合、
ヘッダファイルに1つしかかなないので、困ってしまいます。
参照される画面用に、たとえばG桁5行目あたりから書けばいいのですが、
それ以外にもやることがあって、複雑になってしまうので、今回は省略します。
■各シートと、書き出すファイルとの関係
上記のシートと、書き出すファイルの関係は以下のとおりです
<<1アプリ1つ>>
・アプリ用ソース(アプリ名.c)=>画面一覧シート
・アプリ用ヘッダ(アプリ名.h)=>画面一覧シート
・バージョンファイル(version.h)=>画面一覧シート
<<画面分できる>>
・画面用ソース(画面名.c)=>画面用作業シート(@画面名.c)
・画面用ヘッダ(画面名.h)=>画面用作業シート(@画面名.h)
<<イベントクラス分できる>>
・画面イベント用ソース(イベントクラス名.c)
=>画面イベント用作業シート(@イベントクラス名.c)
・画面イベント用ヘッダ(イベントクラス名.h)
=>画面イベント用作業シート(@イベントクラス名.h)
なお、この内容は、作業一覧シートに書き出されます。
■マクロの概要
マクロは、前処理のinitAppDataと後処理のFreeAppDataのところを作成します。
●前処理のinitAppDataの内容
(1)作業一覧シートをクリア
(2)シートに対して、以下の処理をする
(あ)シートが画面一覧だったら、
アプリ用ソース、ヘッダ、バージョンファイルの書き出し指示を
作業一覧シートに書き出す
(い)シートが画面定義だったら
画面名を保持し、画面用ソース、ヘッダの書き出し指示を
作業一覧シートに書き出す
(3)保持しておいた画面名をもとに、画面用作業シートを作成する
この中で、イベントがあれば、
画面イベント用作業シートも作成する
(4)保持しておいた画面名をもとに、画面用作業シートを検索し
画面イベント用作業シートを書き出す
実際のマクロのソースは、次回のこのシリーズで書きます。