プロジェクト

全般

プロフィール

バグ #6265

完了

LSO0020(チェックデジット)について MODULE11以外

鈴木 友博 さんが8ヶ月前に追加. 3ヶ月前に更新.

ステータス:
終了
優先度:
急いで
担当者:
開始日:
期日:
進捗率:

0%

予定工数:
実開始日:
DD名:
INCLUDE:
DSN:
バグ区分:
仕様・設計ミス
QA分析:
方針(第一貨物):
実終了日:
ツールのバージョン:
AsIsSource行:
進捗計画:
設計・開発者:
画面ID:
機能区分:
機能ID:
レビュー指摘区分:
検査完了日:
検査依頼日:

説明

20260410:HOUJIN以外対応

チェックデジットの元ネタ
LSO0020P
LSM0010P

http://10.104.253.197/projects/3-dos/wiki/%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E7%A7%BB%E8%A1%8C%E6%96%B9%E9%87%9D

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 午後
clipboard-202602191534-c5frc.png
clipboard-202602261228-rik5i.png
clipboard-202602261228-pd8q6.png
clipboard-202604101501-gh0sd.png
clipboard-202607231325-0ktqx.png
clipboard-202608041708-ybhom.png

関連するチケット 3 (0件未完了 — 3件完了)

関連している 機能 #669: BR10040_開発_簡略受付入力終了鈴木 友博2025-05-232025-05-29

操作
関連している バグ #6554: LSO0020(チェックデジット)について MODULE11終了鈴木 友博

操作
関連している バグ #6554: LSO0020(チェックデジット)について MODULE11終了鈴木 友博

操作

渡邉 拓英 さんが8ヶ月前に更新 · 編集済み

  • ファイル clipboard-202602261228-rik5i.png を追加
  • ファイル clipboard-202602261228-pd8q6.png を追加
clipboard-202510241503-x93vq.png
clipboard-202510241532-6hvrb.png

新では、必ず15桁に0埋めする。
そのため、設計書の記述では、わからない。

1桁目(PL/1:文字で左1に、10-1を書ける)

「プロパティ.値の1桁目~6桁目に (10 - n桁目)を掛ける。」が曖昧。
1から6の関係とnの関係が不明

1桁目はどこ??

※おそらく6桁固定となる

i:1→6
(9+i)桁目に値 * (10-i)  (プロパティ.値の0埋めしていない1桁目)

渡邉 拓英 さんが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;

岡崎 誠 さんが7ヶ月前に更新 · 編集済み

  • 関連している 機能 #669: BR10040_開発_簡略受付入力 を追加

岡崎 誠 さんが7ヶ月前に更新 · 編集済み

  • 優先度 を 通常 から 急いで に変更

渡邉 拓英 さんが7ヶ月前に更新 · 編集済み

  • 関連している バグ #6554: LSO0020(チェックデジット)について MODULE11 を追加

渡邉 拓英 さんが7ヶ月前に更新 · 編集済み

  • 題名 を LSO0020(チェックデジット)について から LSO0020(チェックデジット)について MODULE11以外 に変更
  • 進捗計画 を 仕様・設計ミス にセット

渡邉 拓英 さんが7ヶ月前に更新 · 編集済み

渡邉 拓英 さんが7ヶ月前に更新 · 編集済み

  • ファイル clipboard-202604101501-gh0sd.png を追加
  • 説明 を更新 (差分)
clipboard-202511271121-yexg7.png

渡邉 拓英 さんが7ヶ月前に更新 · 編集済み

渡邉 拓英 さんが7ヶ月前に更新 · 編集済み

  • ステータス を 新規 から 移行完了 に変更
  • 担当者 を PM から 渡邉 拓英 に変更

渡邉 拓英 さんが3ヶ月前に更新 · 編集済み

  • ファイル clipboard-202607231325-0ktqx.png を追加

渡邉 拓英 さんが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ヶ月前に更新 · 編集済み

  • ステータス を 移行完了 から 定義作成中 に変更

渡邉 拓英 さんが3ヶ月前に更新 · 編集済み

  • ステータス を 定義作成中 から 終了 に変更

渡邉 拓英 さんが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;
  }

他の形式にエクスポート: Atom PDF