創廃業ダッシュボード」で使う法人番号。体系が気になって「法務局サイト」と「会社法人等番号」を元に、パーサーを実装。


法人番号パーサー
法人番号は13桁ですが、先頭1桁はチェックデジット、後ろ12桁から計算できるので実は不要です。(src on GitHub) // https://www.houjin-bangou.nta.go.jp/documents/checkdigit.pdf const isValid = (s) => { s = s.toString(); if (s.length != 13) { return false; } return s[0] == calcCheckDigit(s.substring(1, 13)); }; const calcCheckDigit = (s) => { if (s.length != 12) { return null; } let n1 = 0; let n2 = 0; for (let i = 0; i < 12; i += 2) { n1 += parseInt(s[i]); n2 += parseInt(s[i + 1]); } const c = 9 - (n1 * 2 + n2) % 9; return c; }; export { isValid, calcCheckDigit }; チェックデジットの計算、プログラムの練習によいですね。軽くテストコードを書いて、deno test でチェック! import * as t from "https://deno.land/std/testing/asserts.ts"; import { isValid } from "./CheckDigit.js"; Deno.test("simple", () => { t.assert(isValid("8700110005901")); t.assert(!isValid("8700110005902")); });

残り、12桁の内訳は、先頭4桁が主に登記所を表し、次の2桁で種別、残り6桁が通し番号や、地方公共団体コードなどとなっています。


日本で登記されている外国の企業一覧
種別401を全部取得したところ、現在全9593社ありました。 import { GBizINFO } from "./GBizINFO.js"; import { CSV } from "https://js.sabae.cc/CSV.js"; const gbiz = new GBizINFO(); const data = await gbiz.getBasicByKind(401); // 外国企業 9593社 2021-09-16 data.forEach((d) => d.cityID = d.cityID ? d.cityID.substring(d.cityID.length - 5) : ""); data.sort(gbiz.filterByCorporateID); console.log(JSON.stringify(data, null, 2), data?.length); await Deno.writeTextFile("data/foreigns.csv", CSV.stringify(data)); (src on GitHub)

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS