モジュール:学校コード検査
モジュールの解説[作成]
local p = {}
function p.Main( frame )
-- 何も入力されてない場合、何も返さない
if frame.args[1] == nil or frame.args[1] == "" then
return ""
else
local targetid = frame.args[1]
-- アルファベット大文字1 + 半角数字12桁から構成されているか確認
if #targetid == 13 and string.match( targetid , "%u%d%d%d%d%d%d%d%d%d%d%d%d" ) ~= nil then
-- それら13桁を分割
local c_type = string.sub( targetid , 1 , 2 )
local c_pref = string.sub( targetid , 3 , 4 )
local c_div = string.sub( targetid , 5 , 5 )
local c_scnf = string.sub( targetid , 6 , 6 )
local c_ckd = string.sub( targetid , 13 , 13 )
-- 最初2桁が「学校種」のいずれかに合致するか確認
if ( c_type == "A1" or c_type == "A2" or c_type == "B1" or c_type == "C1" or c_type == "C2" or c_type == "D1" or c_type == "D2" or c_type == "E1" or c_type == "F1" or c_type == "F2" or c_type == "G1" or c_type == "H1" or c_type == "H2" ) and
-- 3~4桁目が都道府県番号01~47のいずれかに合致するか確認
( string.match( c_pref , "0[1-9]" ) ~= nil or string.match( c_pref , "[1-3][0-9]" ) ~= nil or string.match( c_pref , "4[0-7]" ) ~= nil ) and
-- 5桁目が「設置区分」1〜3のいずれかに合致するか確認
( c_div == "1" or c_div == "2" or c_div == "3" ) and
-- 学校番号の確認。2桁目以降の数字に制限はないため、1桁目が0でないことのみ確認
c_scnf ~= "0" then
-- 検査数字の確認
local ck_1 = 0
local ck_2 = ""
if string.sub( targetid , 1 , 1 ) == "A" then
ck_2 = 1
elseif string.sub( targetid , 1 , 1 ) == "B" then
ck_2 = 2
elseif string.sub( targetid , 1 , 1 ) == "C" then
ck_2 = 3
elseif string.sub( targetid , 1 , 1 ) == "D" then
ck_2 = 4
elseif string.sub( targetid , 1 , 1 ) == "E" then
ck_2 = 5
elseif string.sub( targetid , 1 , 1 ) == "F" then
ck_2 = 6
elseif string.sub( targetid , 1 , 1 ) == "G" then
ck_2 = 7
elseif string.sub( targetid , 1 , 1 ) == "H" then
ck_2 = 8
end
local ck_3 = tonumber( string.sub( targetid , 2 , 2 ) )
local ck_4 = tonumber( string.sub( targetid , 3 , 3 ) )
local ck_5 = tonumber( string.sub( targetid , 4 , 4 ) )
local ck_6 = tonumber( string.sub( targetid , 5 , 5 ) )
local ck_7 = tonumber( string.sub( targetid , 6 , 6 ) )
local ck_8 = tonumber( string.sub( targetid , 7 , 7 ) )
local ck_9 = tonumber( string.sub( targetid , 8 , 8 ) )
local ck_10 = tonumber( string.sub( targetid , 9 , 9 ) )
local ck_11 = tonumber( string.sub( targetid , 10 , 10 ) )
local ck_12 = tonumber( string.sub( targetid , 11 , 11 ) )
local ck_13 = tonumber( string.sub( targetid , 12 , 12 ) )
local ckd_1 = ck_1
local ckd_2 = ""
local ckd_3 = ck_3
local ckd_4 = ""
local ckd_5 = ck_5
local ckd_6 = ""
local ckd_7 = ck_7
local ckd_8 = ""
local ckd_9 = ck_9
local ckd_10 = ""
local ckd_11 = ck_11
local ckd_12 = ""
local ckd_13 = ck_13
if ck_2 * 2 >= 10 then
ckd_2 = ck_2 * 2 - 9
else
ckd_2 = ck_2 * 2
end
if ck_4 * 2 >= 10 then
ckd_4 = ck_4 * 2 - 9
else
ckd_4 = ck_4 * 2
end
if ck_6 * 2 >= 10 then
ckd_6 = ck_6 * 2 - 9
else
ckd_6 = ck_6 * 2
end
if ck_8 * 2 >= 10 then
ckd_8 = ck_8 * 2 - 9
else
ckd_8 = ck_8 * 2
end
if ck_10 * 2 >= 10 then
ckd_10 = ck_10 * 2 - 9
else
ckd_10 = ck_10 * 2
end
if ck_12 * 2 >= 10 then
ckd_12 = ck_12 * 2 - 9
else
ckd_12 = ck_12 * 2
end
local ckd_sum = ckd_1 + ckd_2 + ckd_3 + ckd_4 + ckd_5 + ckd_6 + ckd_7 + ckd_8 + ckd_9 + ckd_10 + ckd_11 + ckd_12 + ckd_13
local ckd_mod = ckd_sum % 10
local ckd_result = ""
if ckd_mod == 0 then
ckd_result = 0
else
ckd_result = 10 - ckd_mod
end
if ckd_result == tonumber( c_ckd ) then
return frame.args[1]
else
return "[[Category:Infoboxに不備のある学校記事]]"
end
else
return "[[Category:Infoboxに不備のある学校記事]]"
end
else
return "[[Category:Infoboxに不備のある学校記事]]"
end
end
end
return p
|
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia