バグ #6265
完了LSO0020(チェックデジット)について MODULE11以外
0%
説明
20260410:HOUJIN以外対応
チェックデジットの元ネタ
LSO0020P
LSM0010P
MODULE11のチェックデジットの算出時の「11-[余り]」の計算が抜けております。
また、「プロパティ.値の1桁目~6桁目に・・・」の桁の数え方が現行オンラインと逆になっている様です。
現行オンライン・・・左から
オープン化後 ・・・右から
※MODULE11だけではなく全体的にそうなっていると思われます。

ファイル
| clipboard-202602191534-c5frc.png (84 KB) clipboard-202602191534-c5frc.png | 鈴木 友博, 2026-02-19 03:34 午後 | ||
| clipboard-202602261228-rik5i.png (1.59 KB) clipboard-202602261228-rik5i.png | 渡邉 拓英, 2026-02-26 12:28 午後 | ||
| clipboard-202602261228-pd8q6.png (11.2 KB) clipboard-202602261228-pd8q6.png | 渡邉 拓英, 2026-02-26 12:28 午後 | ||
| clipboard-202604101501-gh0sd.png (2.4 KB) clipboard-202604101501-gh0sd.png | 渡邉 拓英, 2026-04-10 03:01 午後 | ||
| clipboard-202607231325-0ktqx.png (169 KB) clipboard-202607231325-0ktqx.png | 渡邉 拓英, 2026-07-23 01:25 午後 | ||
| clipboard-202608041708-ybhom.png (23.5 KB) clipboard-202608041708-ybhom.png | 渡邉 拓英, 2026-08-04 05:08 午後 |
渡邉 拓英 さんが8ヶ月前に更新 · 編集済み
DR7
/* =============================================== * */
/* ** 7DR CHECK OR GENERATE ** * */
/* =============================================== * */
DO ;
SHO = INSPECT_FLD_WRK_N / 7 ;
AMARI = INSPECT_FLD_WRK_N - (SHO * 7) ;
GENERATE_CD = AMARI_C ;
END ;
case CheckDigitTypes.DR7:
// プロパティ.検査値に、プロパティ.値 ÷ 7 の余りをセットする。
decRemainder = new BigDecimal(7);
devRes = decVal.remainder(decRemainder);
CheckDigitValue = devRes.toString();
break;
渡邉 拓英 さんが8ヶ月前に更新 · 編集済み
MODULE10 ・・・OK
WHEN (MOD='10')
/* =============================================== * */
/* ** MODULE 10 CHECK OR GENERATE ** * */
/* =============================================== * */
DO ;
SUMMARY_AREA = 0 ;
DO II=1 TO 15 BY 2 ;
SUMMARY_AREA_W = INSPECT_FLD_WRK_O(II) * 2 ;
SUMMARY_AREA = SUMMARY_AREA + SUMMARY_AREA_O(1)
+ SUMMARY_AREA_O(2) ;
END ;
DO II=2 TO 14 BY 2 ;
SUMMARY_AREA = SUMMARY_AREA + INSPECT_FLD_WRK_O(II) ;
END ;
SHO = SUMMARY_AREA / 10 ;
AMARI = SUMMARY_AREA - (SHO * 10) ;
IF AMARI = 0
THEN
DO ;
GENERATE_CD = '0' ;
END ;
ELSE
DO ;
AMARI = 10 - AMARI ;
GENERATE_CD = AMARI_C ;
END ;
END ;
case CheckDigitTypes.MODULE10:
// プロパティ.値の奇数桁に2を、偶数桁に1を掛ける。
// 各桁の結果が2桁の場合は、十の位と一の位に分けて足し合わせる。
// 各桁の合計を計算する。
// 合計を10で割り、余り①を求める。
// プロパティ.検査値に、10 - 余り①をセットする。但し、余り① = 0 の場合は0を戻り値にセットする。
i = 15;
intVal = 0;
intSumVal = 0;
for (char c : zeroPadValue.toCharArray()) {
if (i % 2 == 1) {
// 奇数
intVal = (Character.getNumericValue(c) * 2);
} else {
// 偶数
intVal = (Character.getNumericValue(c) * 1);
}
intSumVal += (intVal % 10) + (intVal / 10);
// カウンタ
i--;
}
// 余り
intVal = intSumVal % 10;
if (intVal == 0) {
CheckDigitValue = intVal.toString();
} else {
intVal = (10 - intVal);
CheckDigitValue = intVal.toString();
}
break;
for (char c : zeroPadValue.toCharArray())
15桁先頭0埋め・・・[0000000000XXXXX]
i>>>15 右から1文字目 15 % 2 7余り1→奇数 計算は違うけど、結果OK
i>>>14 右から2文字目 15 % 2 7余り0→偶数 計算は違うけど、結果OK
i>>>13 右から3文字目 15 % 2 6余り1→奇数 計算は違うけど、結果OK
i % 2 == 1
↓が正解?
(15- i + 1) % 2 == 1
渡邉 拓英 さんが8ヶ月前に更新 · 編集済み
NINISHI ・・・OK
WHEN (MOD='NI')
/* =============================================== * */
/* ** NI SPECIAL ** * */
/* =============================================== * */
DO ;
SUMMARY_AREA = 0 ;
DO II=1 TO 15 BY 2 ;
SUMMARY_AREA = SUMMARY_AREA
+ INSPECT_FLD_WRK_O(II) * 2 ;
END ;
DO II=2 TO 14 BY 2 ;
SUMMARY_AREA = SUMMARY_AREA + INSPECT_FLD_WRK_O(II) ;
END ;
SHO = SUMMARY_AREA / 10 ;
AMARI = SUMMARY_AREA - (SHO * 10) ;
IF AMARI = 0
THEN
DO ;
GENERATE_CD = '0' ;
END ;
ELSE
DO ;
AMARI = 10 - AMARI ;
GENERATE_CD = AMARI_C ;
END ;
END ;

case CheckDigitTypes.NINISHI:
// プロパティ.値の奇数桁に2を、偶数桁に1を掛ける。
// 各桁の合計を計算する。
// 合計を10で割り、余り①を求める。
// プロパティ.検査値に、10 - 余り①をセットする。但し、余り① = 0 の場合は0をプロパティ.検査値にセットする。
i = 15;
intVal = 0;
intSumVal = 0;
for (char c : zeroPadValue.toCharArray()) {
if (i % 2 == 1) {
// 奇数
intVal = (Character.getNumericValue(c) * 2);
} else {
// 偶数
intVal = (Character.getNumericValue(c) * 1);
}
intSumVal += intVal;
// カウンタ
i--;
}
// 余り
intVal = intSumVal % 10;
if (intVal == 0) {
CheckDigitValue = intVal.toString();
} else {
intVal = (10 - intVal);
CheckDigitValue = intVal.toString();
}
break;
渡邉 拓英 さんが8ヶ月前に更新 · 編集済み
YOSYA ・・・OK
WHEN (MOD='YO')
/* =============================================== * */
/* ** YO SPECIAL ** * */
/* =============================================== * */
DO ;
/* ----------------------------------------------- * */
IF (INSPECT_FLD_WRK_O(10) = 9 )
& (INSPECT_FLD_WRK_O(11) = 9 )
& (INSPECT_FLD_WRK_O(12) >= 5 )
THEN INSPECT_FLD_WRK_O(10) = 0 ;
ELSE
DO ;
RESULT = '1' ;
GOTO MOD_LAST ;
END ;
/* ----------------------------------------------- * */
SUMMARY_AREA = 0 ;
DO II=1 TO 15 BY 2 ;
SUMMARY_AREA = SUMMARY_AREA
+ INSPECT_FLD_WRK_O(II) * 2 ;
END ;
DO II=2 TO 14 BY 2 ;
SUMMARY_AREA = SUMMARY_AREA + INSPECT_FLD_WRK_O(II) ;
END ;
SHO = SUMMARY_AREA / 10 ;
AMARI = SUMMARY_AREA - (SHO * 10) ;
IF AMARI = 0
THEN
DO ;
GENERATE_CD = '0' ;
END ;
ELSE
DO ;
AMARI = 10 - AMARI ;
GENERATE_CD = AMARI_C ;
END ;
/* ----------------------------------------------- * */
INSPECT_FLD_WRK_O(10) = 9 ;
/* ----------------------------------------------- * */
END ;
case CheckDigitTypes.YOSYA:
// 傭車会社コード
// プロパティ.値のチェックをする。
// 10文字目 = 9 且つ、11文字目 = 9 且つ、12文字目 >= 5 の場合、10文字目を0にする。
char chars[] = zeroPadValue.toCharArray();
if (chars[10-1] == '9' &&
chars[11-1] == '9' &&
Integer.parseInt(String.valueOf(chars[12-1])) >= 5) {
chars[10-1] = '0';
zeroPadValue = new String(chars);;
} else {
// 上記以外はエラー
throw new Exception();
}
// 奇数桁に2を、偶数桁に1を掛ける。
// 各桁の合計を計算する。
// 合計を10で割り、余り①を求める。
// プロパティ.検査値に、10 - 余り①をセットする。但し、余り① = 0 の場合は0をプロパティ.検査値にセットする。
i = 15;
intVal = 0;
intSumVal = 0;
for (char c : zeroPadValue.toCharArray()) {
if (i % 2 == 1) {
// 奇数
intVal = (Character.getNumericValue(c) * 2);
} else {
// 偶数
intVal = (Character.getNumericValue(c) * 1);
}
intSumVal += intVal;
// カウンタ
i--;
}
// 余り
intVal = intSumVal % 10;
if (intVal == 0) {
CheckDigitValue = intVal.toString();
} else {
intVal = (10 - intVal);
CheckDigitValue = intVal.toString();
}
break;
渡邉 拓英 さんが8ヶ月前に更新 · 編集済み
JYUGYOIN ・・・OK
WHEN (MOD='JY')
/* =============================================== * */
/* ** JY SPECIAL ** * */
/* =============================================== * */
DO ;
SUMMARY_AREA = 0 ;
DO II=1 TO 15 BY 2 ;
SUMMARY_AREA = SUMMARY_AREA
+ INSPECT_FLD_WRK_O(II) * 3 ;
END ;
DO II=2 TO 14 BY 2 ;
SUMMARY_AREA = SUMMARY_AREA + INSPECT_FLD_WRK_O(II) ;
END ;
SHO = SUMMARY_AREA / 10 ;
AMARI = SUMMARY_AREA - (SHO * 10) ;
GENERATE_CD = AMARI_C ;
END ;
case CheckDigitTypes.JYUGYOIN:
// 従業員コード
// プロパティ.値の奇数桁に3を、偶数桁に1を掛ける。
// 各桁の合計を計算する。
// 合計を10で割り、余り①を求める。
// プロパティ.検査値に、10 - 余り①をセットする。但し、余り① = 0 の場合は0をプロパティ.検査値にセットする。
i = 15;
intVal = 0;
intSumVal = 0;
for (char c : zeroPadValue.toCharArray()) {
if (i % 2 == 1) {
// 奇数
intVal = (Character.getNumericValue(c) * 3);
} else {
// 偶数
intVal = (Character.getNumericValue(c) * 1);
}
// 確認
// intSumVal += (intVal % 10) + (intVal / 10);
intSumVal += intVal;
// カウンタ
i--;
}
// 余り
intVal = intSumVal % 10;
CheckDigitValue = intVal.toString();
break;
渡邉 拓英 さんが8ヶ月前に更新 · 編集済み
DR9 ・・・NG>>>修正済み
全ての桁の値を合計する。
合計した値を9で割ったあまりをプロパティ.検査値にセットする。
WHEN (MOD='09')
/* =============================================== * */
/* ** MODULE 09 CHECK OR GENERATE ** * */
/* =============================================== * */
DO ;
DO II=GENERATE_LENG TO 1 BY -1 ;
KAZU_C = SUBSTR(INSPECT_FLD,II,1);
WA = WA + KAZU;
END ;
SHO = WA / 9;
AMARI = WA - (SHO * 9);
GENERATE_CD = AMARI_C;
END ;
case CheckDigitTypes.DR9:
// プロパティ.検査値に、プロパティ.値 ÷ 9 の余りをセットする。
decRemainder = new BigDecimal(9);
devRes = decVal.remainder(decRemainder);
CheckDigitValue = devRes.toString();
break;
修正済み
case CheckDigitTypes.DR9:
for (char c : zeroPadValue.toCharArray()) {
intSumVal += Character.getNumericValue(c);
}
// プロパティ.検査値に、プロパティ.値 ÷ 9 の余りをセットする。
intVal = intSumVal % 9;
CheckDigitValue = intVal.toString();
break;
渡邉 拓英 さんが8ヶ月前に更新 · 編集済み
MODULE06・・・NG>>>PG修正済み
1桁目(一番右)・・・×1
2桁目 ・・・×2
3桁目 ・・・×3
4桁目 ・・・×1
5桁目 ・・・×2
6桁目 ・・・×3
7桁目 ・・・×1
8桁目 ・・・×2
9桁目 ・・・×3
10桁目 ・・・×1
11桁目 ・・・×2
12桁目 ・・・×3
13桁目 ・・・×1
14桁目 ・・・×2
15桁目(一番左)・・・×3
// プロパティ.値の1・4・7・10・13桁目に3を、2・5・8・11・14桁目に2を、3・6・9・12・15桁目に1を掛ける
// 各桁の結果の一の位を足し合わせる。
// プロパティ.検査値に、足し合わせた結果の一の位をセットする。
・・・OK
・・・NG
・・・OK
DCL I PIC '(0001)9' INIT(3);
WHEN (MOD='06')
/* =============================================== * */
/* ** MODULE 06 CHECK OR GENERATE ** * */
/* =============================================== * */
DO ;
DO II = GENERATE_LENG TO 1 BY -1 ;
IF I �= 3
THEN
DO;
I = I + 1;
END;
ELSE
DO;
I = 1;
END;
KAZU_C = SUBSTR(INSPECT_FLD,II,1);
SEKI = KAZU * I;
SHO = SEKI / 10;
SEKI = SEKI - (SHO * 10);
WA = WA + SEKI;
END ;
SHO = WA / 10;
AMARI = WA - (SHO * 10);
GENERATE_CD = AMARI;
END ;
case CheckDigitTypes.MODULE06:
// 6桁特殊チェック
// プロパティ.値の1・4・7・10・13桁目に3を、2・5・8・11・14桁目に2を、3・6・9・12・15桁目に1を掛ける
// 各桁の結果の一の位を足し合わせる。
// プロパティ.検査値に、足し合わせた結果の一の位をセットする。
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 1]) * 3);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 4]) * 3);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 7]) * 3);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 10]) * 3);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 13]) * 3);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 2]) * 2);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 5]) * 2);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 8]) * 2);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 11]) * 2);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 14]) * 2);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 3]) * 1);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 6]) * 1);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 9]) * 1);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 12]) * 1);
intSumVal += intVal;
intSumVal = intSumVal % 10;
CheckDigitValue = intSumVal.toString();
break;
訂正後
case CheckDigitTypes.MODULE06:
// 6桁特殊チェック
// プロパティ.値の1・4・7・10・13桁目に3を、2・5・8・11・14桁目に2を、3・6・9・12・15桁目に1を掛ける
// 各桁の結果の一の位を足し合わせる。
// プロパティ.検査値に、足し合わせた結果の一の位をセットする。
//15
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 1]) * 1); // ※一番右
intSumVal += intVal % 10;
//12
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 4]) * 1);
intSumVal += intVal % 10;
//9
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 7]) * 1);
intSumVal += intVal % 10;
//6
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 10]) * 1);
intSumVal += intVal % 10;
//3
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 13]) * 1);
intSumVal += intVal % 10;
//14
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 2]) * 2);
intSumVal += intVal % 10;
//11
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 5]) * 2);
intSumVal += intVal % 10;
//8
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 8]) * 2);
intSumVal += intVal % 10;
//5
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 11]) * 2);
intSumVal += intVal % 10;
//2
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 14]) * 2);
intSumVal += intVal % 10;
//13
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 3]) * 3);
intSumVal += intVal % 10;
//10
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 6]) * 3);
intSumVal += intVal % 10;
//7
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 9]) * 3);
intSumVal += intVal % 10;
//4
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 12]) * 3);
intSumVal += intVal % 10;
//1
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 15]) * 3); // ※一番左
intSumVal += intVal % 10;
intSumVal = intSumVal % 10;
CheckDigitValue = intSumVal.toString();
break;
渡邉 拓英 さんが8ヶ月前に更新 · 編集済み
MODULE11 ・・・修正済み ※別チケット
case CheckDigitTypes.MODULE11:
// モジューロ11
// プロパティ.値の1桁目~6桁目に (10 - n桁目)を掛ける。
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 1]) * (10 - 1));
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 2]) * (10 - 2));
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 3]) * (10 - 3));
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 4]) * (10 - 4));
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 5]) * (10 - 5));
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 6]) * (10 - 6));
intSumVal += intVal;
// 1桁目~6桁目の合計を計算する。
// 合計を11で割り、余り①を求める。
intSumVal = intSumVal % 11;
// プロパティ.検査値に、余り①をセットする。
// 但し、余り① = 0 又は余り① = 1 の場合は0をプロパティ.検査値にセットする。
if (intSumVal == 0 || intSumVal == 1) {
intSumVal = 0;
}
CheckDigitValue = intSumVal.toString();
break;
渡邉 拓英 さんが8ヶ月前に更新 · 編集済み
HOUJIN・・・???
スライド 1
https://www.houjin-bangou.nta.go.jp/documents/checkdigit.pdf

現行ソース不明?
case CheckDigitTypes.HOUJIN:
// 法人番号 (※13桁ある)
// プロパティ.値を右から12桁の文字列にする。
// 計算値 ← ((右から数えて偶数桁の数字の合計) × 2 + (右から数えて奇数桁の数字の合計)) ÷ 9 の小数1桁目をセットする。
// 偶数
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 2]) * 2);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 4]) * 2);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 6]) * 2);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 8]) * 2);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 10]) * 2);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 12]) * 2);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 14]) * 2);// 0
intSumVal += intVal;
// 奇数
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 1]) * 1);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 3]) * 1);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 5]) * 1);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 7]) * 1);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 9]) * 1);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 11]) * 1);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 13]) * 1);
intSumVal += intVal;
intVal = (Character.getNumericValue(zeroPadValue.toCharArray()[15 - 15]) * 1);// 0
intSumVal += intVal;
// 余り
intSumVal = intSumVal % 9;
// 小数部1桁
intSumVal = intSumVal * 10 / 9;
// 9 - 計算値
intSumVal = 9 - intSumVal;
// プロパティ.検査値 ← 9 - 計算値 をセットする。
CheckDigitValue = intSumVal.toString();
break;
渡邉 拓英 さんが3ヶ月前に更新 · 編集済み
- ファイル clipboard-202608041708-ybhom.png を追加
法人番号
https://www.houjin-bangou.nta.go.jp/kensaku-kekka.html

1234567890123:false
1180003025406:true
5010401087192:true
5011002035714:true
7010005036081:true
2030002071984:true
2010005012780:true
2010005013259:true
7020002077986:true
7030001149785:true
3100003006808:true
1050001000118:true
1140001110394:true
1240002021985:true
1320003002043:true
1390001005116:true
4010101006478:true
4180301022085:true
4290001102333:true
5120002041991:true
6120101049662:true
7160002012962:true
7290002027238:true
9030001092117:true
9040003017970:true
2050002006410:true
6020002025327:true
5020001128668:true
渡邉 拓英 さんが3ヶ月前に更新 · 編集済み
@GetMapping("/6/u/{id}")
public String test6(
Model model,
HttpServletRequest request,
HttpSession httpSession,
RedirectAttributes redirectAttributes,
@PathVariable BigDecimal id) {
System.out.println("1234567890123" + ":" + func("1234567890123"));
System.out.println("1180003025406" + ":" + func("1180003025406"));
System.out.println("5010401087192" + ":" + func("5010401087192"));
System.out.println("5011002035714" + ":" + func("5011002035714"));
System.out.println("7010005036081" + ":" + func("7010005036081"));
System.out.println("2030002071984" + ":" + func("2030002071984"));
System.out.println("2010005012780" + ":" + func("2010005012780"));
System.out.println("2010005013259" + ":" + func("2010005013259"));
System.out.println("7020002077986" + ":" + func("7020002077986"));
System.out.println("7030001149785" + ":" + func("7030001149785"));
System.out.println("3100003006808" + ":" + func("3100003006808"));
System.out.println("1050001000118" + ":" + func("1050001000118"));
System.out.println("1140001110394" + ":" + func("1140001110394"));
System.out.println("1240002021985" + ":" + func("1240002021985"));
System.out.println("1320003002043" + ":" + func("1320003002043"));
System.out.println("1390001005116" + ":" + func("1390001005116"));
System.out.println("4010101006478" + ":" + func("4010101006478"));
System.out.println("4180301022085" + ":" + func("4180301022085"));
System.out.println("4290001102333" + ":" + func("4290001102333"));
System.out.println("5120002041991" + ":" + func("5120002041991"));
System.out.println("6120101049662" + ":" + func("6120101049662"));
System.out.println("7160002012962" + ":" + func("7160002012962"));
System.out.println("7290002027238" + ":" + func("7290002027238"));
System.out.println("9030001092117" + ":" + func("9030001092117"));
System.out.println("9040003017970" + ":" + func("9040003017970"));
System.out.println("2050002006410" + ":" + func("2050002006410"));
System.out.println("6020002025327" + ":" + func("6020002025327"));
System.out.println("5020001128668" + ":" + func("5020001128668"));
return "test";
}
private boolean func(String val) {
LSO0020 ls00020 = new LSO0020();
ls00020.setCheckDigitType(CheckDigitTypes.HOUJIN);
ls00020.setDataVlaue(val);
ls00020.inspectCheckDigit();
var res = ls00020.getResult();
return res;
}

