公司統一編號驗證
國稅局目前網頁上不提供,這是從其他部落格找到的,我稍微修改過。
工具:PowerBuilder
先來看一段驗證公式(來源:酷!學園):
以下是powerbuilder版本的程式碼
先建立一個 function 物件 f_checktaxid , 回傳值為 Boolean
傳入參數為 as_taxid 型態為 String
程式碼如下:
程式看起來就沒那麼複雜咧?
工具:PowerBuilder
先來看一段驗證公式(來源:酷!學園):
(一) 長度:共八位,,全部為數字型態。
(二) 計算公式
1、各數字分別乘以1,2,1,2,4,1。
2、公式如下:
_D1D2D3D4D5D6D7D8
x 1 2 1 2 1 2 4 1 (第一列 * 第二列)
_A1B1A2B2A3B3A4B4 (Bx:相乘後的十位數)
+ C1 C2 C3 C4 (Cx:相乘後的個位數)
_X1X2X3X4X5X6X7X8 (Xx:相加後的十位數)
+ Y7 (Yx:相加後的個位數)
Z1=X1+X2+X3+X4+X5+X6+X7+X8 或
Z1=X1+X2+X3+X4+X5+X6+Y7+X8
3、當第 7 位數為 7 者,可取相加之倒數第二位取 0 及 1 來計算如 Z1 及 Z2 計算其和。
4、假如 Z1 或 Z2 能被 10 整除,則表示營利事業統一編號正確。
(三) 範例 ( 以 00238778 為例 )以上如果你可以馬上看得懂,我真的很佩服你。
_00238778
x12121241 (第一列 * 第二列)
_00268128 (Bx:相乘後的十位數)
+ 48 (Cx:相乘後的個位數)
_00268518 (Xx:相加後的十位數)
+ 0 (Yx:相加後的個位數)
Z1=0+0+2+6+8+5+1+8=30或
Z2=0+0+2+6+8+5+0+8=29
因 30 能被 10 整除,故營利事利統一編號正確。
以下是powerbuilder版本的程式碼
先建立一個 function 物件 f_checktaxid , 回傳值為 Boolean
傳入參數為 as_taxid 型態為 String
程式碼如下:
//********************************************************
// 統一編號驗證
//********************************************************
// 輸入統一編號字串,合法字串者回傳true,否則為false
// Argument:
// as_taxid : String 統一編號字串
// Return:
// Boolean : 合法為true,否則為false
//********************************************************
integer li_base[8] = {1,2,1,2,1,2,4,1} // 積數
integer li_no , li_tmp
Long ll_totl
// 檢查NULL值
if isnull(as_taxid) then Return false
// 檢查是否為8位元數字
if not IsAllArabic(as_taxid) or len(as_taxid) <> 8 then Return false
// 乘上積數並總和
for li_no = 1 to 8
li_tmp = integer(mid(as_taxid , li_no , 1)) * li_base[li_no]
ll_totl += truncate(li_tmp / 10 , 0) + mod(li_tmp , 10)
next
// 驗證總和值
if (mod(ll_totl , 10) = 0) OR (mod(ll_totl , 10) = 9 AND mid(as_taxid , 7 , 1) = "7") then
// 合法
Return True
end if
Return false
程式看起來就沒那麼複雜咧?
留言