##はじめに
この記事では、VB6.0からjavaに移行する際に、私がはまったところ、苦労した所を書いていきます。
###文字列を抜き出し(Left)
VB6.0では10文字入った変数の11文字目を取る処理を書いてもエラーになりません。(0~11文字目を取得する処理の場合0~10文字目までが取れます。)
そのため、javaに移行する処理通り書いてしまうと文字数チェックエラー(StringIndexOutOfBoundsException)が出てしまう可能性があります。
そのため、文字列を抜き出す前に、文字数チェックを入れることでエラーを回避することができます。
VBソース
'abcが入ります。
test = Left("abc", 4)
javaソース
test = "abc";
if (test.length() >= 4) {
// 4文字以上の場合は4文字までtest2に入れる
test2 = test.substring(0, 4);
} else {
// 4文字未満の場合そのまま入れる
test2 = test;
}
##LenB
LenBとは、指定された文字列の半角文字を1バイト、全角文字を2バイトとして計算し、バイト数の合計を返します。
javaで上記のような、対応するには文字列を「Shift_JIS」コードに変えて、合計バイト数を取ることによりLenBと同じ実装ができます。
文字コードのバイト数について
別サイト様リンク
##ソースコードを読む点での注意点
VB6.0を使っていた時代は、処理の先頭で処理内で、使う変数を全部宣言することが多いです。
そのため、宣言していても実際使われてない変数があったり、かなり奥のほうで密かに使われてたりする事があります。(私の入った案件だけかもしれませんが。。。)
また、VB6.0のコントロールと現在のVB.NETのコントロールで動きは同じだけど、名称が違うものがいくつかあります。
VB6.0、VB.NETコントロールの名称の違い
別サイト様リンク
##最後に
移行前のソースコードを読んだとき、何でこんな無駄な処理を入れているのか、なぜ昔あったメソッドが現在無くなってしまったのかなど、疑問に思うことが多いと思いますが、その処理やメソッドが昔に使わないといけなかった理由を調べると、プログラマーの歴史に触れられたようです楽しいので、移行で少し疲れたら気分転換に調べて見るといいかもしれません。