システムタイトル:
 ・部品表からの製品の質量の管理

業種:
 ・金融業

システム概要:
 ・汎用機上のCOBOLプログラムの2000年問題の調査と対応(それ以外もあったが、ここではそれだけに絞る)を行うことになった。コンパイルリストから該当箇所をマークする、という地味な作業が予定されていた。
 ・コンパイルリスト(印刷イメージ)をPCにテキストデータで転送し、Excelで読み込み、怪しそうな行を洗い出すツールの作成をを提案し、採用された。

システム構成:
 ・大型汎用機 富士通M780。
 ・そのころから、専用端末や専用エミュレータではなく、PCにLANカードを差したものが大型汎用機に接続できるようになっていた。そのPCは富士通製だった記憶がある。
 ・古い話なので、Excel 95 だったか、5だったか、ちょっと定かではないが、たぶん5だったかと思う。

留意点:
 ・COBOLのコンパイラの印刷結果にはページ数やページ制御文字があったため、除外するようにした。
 ・更に参照行/参照先行などの情報もあった。それはとことん利用するようにした。COBOLには集団項目というものが使えるが、個別の項目が怪しければ集団項目も怪しくなるようにしたり、DATA DIVISION のどこ(展開されたCOPY句の中も含めて)かを特定できるようにした。
 ・怪しい行はセルに色を塗り、上部に集め、該当箇所だけを印刷した。

その他:
 ・当時の処理能力はたいしたことはなく、時間がかかったため、夜間に作業を実施した。朝にはできている、というような状態であった。処理の高速化、と言うモノは全く考えていなかった。というより、まだよく知らなかったという事情もある。
 ・ツールとして業務で使ったのはそれが初めてであった。
 ・Excelでそんなことできるんだ、と周囲では結構評判がよかった。
 ・そのツールはHDDの故障などで紛失した模様。もしかすると、Windows NT バックアップという領域に、今も残っているかも(当時、自宅ではWindows NT 4.0 Workstation を使っていた。懐かしい・・。今もOSのCD-ROMとライセンス番号は取ってある。もちろん正規版だ。)しれない。

VBAのクラスモジュールを使ったものとして、最も導入効果が高いのが共通関数の構築だろう。

先日の講習会でも、過去に使ったものを見せて解説したりもしたが、それを配布して慣れていただくのが一番手っ取り早いのではないかと思う。そこで、講習会参加者には共通関数として構築したクラスモジュール群を、講習後のアンケートに答えた方全員に配布することにした。

参加していない人でも、細かい解説抜きでよければ、共通関数の簡素版(呼び出し用サンプルプログラム付き)を配布しようかとは考えている。
2008/7/25 夜 からその週末に配布予定なので、それまでにメールtech-note*mail.goo.ne.jp 宛て *を@に修正してください。ささやかなスパム対策です)を頂ければ配布しようかとは思う。ただし「渡してオシマイ」だと参考情報を収集し、今後どうするかを考えることもできない。よって、事前アンケート/使用してのアンケートに確実に答えて下さる方に限定する。
名乗りを上げていただいた方に、まず事前アンケートを行う所存である。

VBAには Property Get / Let / Set がある。使ったことのある方はいらっしゃるだろうか?

こんな使い方があるので紹介する。

例えば
Public Const CL_START_ROW As Long = 6     'データ開始行

などと、固定値をConst値として持つことは簡単である。


しかし、
Public Const CL_COLOR_RED As Long = RGB( 255, 0, 0 )      '赤色

などというのはエラーになる。しかし、各所でわざわざRGB関数を記述するのも分かりにくい。

こんな場合

Public Function CL_COLOR_RED() As Long
   CL_COLOR_RED = RGB( 255, 0, 0 )     '赤色
End Function

という定義もできるが、本来関数的に作るモノではない。

そういう場合
Public Property Get CL_COLOR_RED() As Long
   CL_COLOR_RED = RGB( 255, 0, 0 )     '赤色
End Property

という定義にしておくと違和感は小さくなる。


Property は基本的に Get と Set / Let と対(Property名は同一)で使うか、Getを単独で使うことが想定されている。今回は後者の一例である。
今回の例は本来的な使い方ではないのかもしれないが、こういう事もできる。