"以下に掲載がない場合"に該当する住所のカスタマバーコードキャラクタが生成されてしまう場合がある

文書番号 : 37327     文書種別 : 不具合     登録日 : 2014/05/21     最終更新日 : 2014/12/24
文書を印刷する
対象製品
JPAddress for .NET 1.0J
状況
修正済み
詳細
GetPostalBarCodeValueメソッドの第二引数に下二桁が"00"の郵便番号が設定されている場合、カスタマバーコードキャラクタが生成されてしまいます。
下二桁が"00"の郵便番号は「以下に掲載がない場合」に該当する代表番号で、カスタマバーコードは付番されないため、空の文字列を返すのが正しい動作となります。

参考:郵便番号・バーコードマニュアル - バーコードに必要な文字情報の抜き出し法
http://www.post.japanpost.jp/zipcode/zipmanual/p18.html

例えば、"東京都新島村字御子ノ花"は"東京都新島村以下に掲載がない場合"の住所に含まれ、この代表番号は1000400となり、カスタマバーコードは付番されません。
よって、GetPostalBarCodeValueメソッドは空の文字列を返す動作が正常ですが、GetPostalBarCodeValueメソッドのオーバーロードのうち第二引数に代表番号を指定すると不正な結果が返ります。

正:
GcJPAdddress1.GetPostalBarCodeValue("東京都新島村字御子ノ花1-2-3")
戻り値:空の文字列

誤:
GcJPAdddress1.GetPostalBarCodeValue("東京都新島村字御子ノ花1-2-3", "1000400")
戻り値:10004001-2-3
回避方法
この問題はService Pack 2(v1.0.2014.1114)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページからダウンロードできます。

Service Pack 2より前のバージョンでは次のいずれかの方法で回避可能です。

都道府県名、市区町村名、番地など正確な住所情報が判明している場合は、住所のみ第一引数に指定するオーバーロードを使用します。

不完全な住所情報と郵便番号を使用する場合は、GetPostalBarCodeValueメソッドを実行する前に郵便番号文字列のチェックを行い、下二桁が"00"の場合はGetPostalBarCodeValueメソッドを実行しないようにします。

【サンプルコード】
[Visual Basic]
Dim zipcode As String
Dim address As String
Dim postalBarcode As String = ""

zipcode = "1000400"
address = "新島村 字御子ノ花1-2-1"

If Not zipcode.EndsWith("00") Then
    postalBarcode = gcJPAddress1.GetPostalBarCodeValue(address, zipcode)
End If

[C#]
string zipcode;
string address;
string postalBarcode = "";

zipcode = "1000400";
address = "新島村 字御子ノ花 1-2-3";

if (!zipcode.EndsWith("00"))
{
    postalBarcode = gcJPAddress1.GetPostalBarCodeValue(address, zipcode);
}