2018/01/29

1/29/2018

はじめに

VisualBasic6.0ってご存知ですか?もうVBっていうとVB.netですから知らない方が大半でしょう。

MSのサイトではVB6.0は2008年に延長サポート終了していますから、10年も前に終わった言語なので仕方ないでしょう。

しかし、かつてVB6.0で作成されたプログラムは今も稼働しており結構現役だったりするようです。

日本では、平成や昭和といった和暦元号が使われていますが、2019/5/1より新元号に改正されることが決まっています。

ということで、和暦改正の影響をモロに被ってしまう、VB6.0ですが、どのような対応が出来るのか書いてみたいと思います。


日付文字列編集のFormat()は?

VB6.0では、日付を文字列化する際、Format()命令を使って文字列化していました。

このformat()はC言語におけるprintf()と同じく、指定された情報を指定した書式で編集してくれる命令ですが、書式中の「g」和暦元号編集、「e」和暦年編集が、和暦対応機能になります。

書式意味
g和暦ローマ字表記先頭1文字
gg和暦漢字表記先頭1文字
ggg和暦漢字表記
e和暦年部分
ee和暦年部分を2桁表記

これ、真っ向から和暦機能の影響を受けます。

具体的には2019/5/1は新しい和暦記号+5/1となるはずですが、現状で指定すると、平成表記になります。

? format("2019/5/1","gee/mm/dd")
H31/05/01

format()といえど、WindowsOSの機能を使っているのでOSのアップデートで対応してくれるかもしれませんが、10年も前に保守が終わっている製品の面倒を見てくれるかどうか、少々疑問ですね。

筆者としては、様式中の「g」「gg」「ggg」「e」「ee」表記の対応を内部的に行うformat()命令を作ることで対応可能と考えます。

VB6.0では基本命令であっても、次のように定義してしまえば、オーバーライド可能です。

オーバーライド後も、基本命令はVBA.Format()と表記してしまえばそのまま使えます。

Function Format(Expression As Variant, dformat as String ...) As Variant
End Function

実際に動作するものを作ってみましたが、少々勤務先との契約上で、このサイトに掲載できません。

必要なかたがおられましたら、連絡はこちらへ連絡ください。

おそらく有料いなると思いますが、対応可能です。


日付入力欄は?

VB6.0では、日付入力コントロール機能はありません。

標準機能では、TextBoxとLostForcusイベントにてFormat()命令で日付書式とする方法が取られていました。

Format()命令による動作であれば、先の対応で可能なのですが、この時代は、サードパーティー製のコントロールを使うことが多かったようです。

特にグレープシティー製のImtextやSpread製品はよく使われているようです。

こちは、グレープシティーのサイトに、対応方法の記載がありました。平成の次まではiniファイルによって対応可能なようです。


その他

上記の2つの対応は、もととなる日付が西暦であることが基本となります。

最近は無いと思いますが、日付を平成で管理しているシステムであれば、管理データは西暦にされることを強くお薦めします。

開き直って平成年を基準に、新元号に変換して表記するような対応も考えられはしますが、開発体制と含めて検討が必要でしょうね。


皆さん色々大変な業務をこなされていると思います。一緒に頑張っていきしょう。

ソース提供を始めました

和暦改正対応format()命令についてソース提供し始めました。

できるだけ低価格での売り渡しとし、提供ソース自体の再販売は控えてもらえるよう個別対応いたします。

詳細はこちらを参照ください。

それではお待ちしております。


0 コメント:

コメントを投稿