賞与に対する源泉徴収税額の算出表の計算例

「賞与の源泉徴収税額のプログラムもほしい」というかたがいらっしゃいましたので、 サンプルをつけておきます。

この程度のデータ量だと、謎解きの元気も出ませんので、 馬鹿みたいに表を組み込むことにしてしまいましたが、 データ入力の手間が省けるかもしれません。

使いかたは、 awk の BEGIN セクションで init() を実行した後で、 下記のように呼び出します。

  tax(m, h) .. 賞与に対する源泉徴収税額の算出率を求める
	m = 前月中の社会保険料控除後の給与等の金額 (円)
	h = 扶養親族等の数 (h < 0 のときは、乙欄適用)
ただし、下記の場合は、例外で、 所得税法第 186 条第 1 号 ロ、第 2 号 ロ、第 2 項 で、 通常の給与の一部として計算することになっています。

  a) 社会保険料控除後の給与等の前月中の給与等の金額がない
  b) 社会保険料控除後で比較して、賞与が前月中の給与等の 10 倍を越える


function tax(m, h) {	# 賞与に対する源泉徴収税率
  if (h < 0)
	return tax_o(m)
  return tax_k(m, h)
}

function tax_k(m, h,  i) {	# 甲表
  m /= 1000
  if (m < 0)
	return 0
  if (h > 7)
	h = 7
  for (i = 154; m < tab1[i + h + 1] + 0; i -= 9)
	;
  return tab1[i] + 0
}
function tax_o(m,  i) {	# 乙表
  m /= 1000
  if (m < 0)
	return 0
  for (i = 7; m < tab2[i + 1] + 0; i -= 2)
	;
  return tab2[i] + 0
}
function init() {
  # 平成 11 年 4 月 1 日以後の賞与に対する源泉徴収税額の算出率の表
  # 甲表
  split("\
 0,    0,    0,    0,    0,    0,    0,    0,    0,\
 2,   65,   89,  123,  159,  195,  228,  259,  289,\
 4,   71,   98,  140,  180,  219,  254,  288,  322,\
 6,   77,  115,  248,  248,  248,  286,  324,  363,\
 8,   85,  365,  393,  417,  441,  465,  488,  512,\
10,  371,  401,  427,  452,  478,  504,  530,  556,\
12,  410,  438,  466,  494,  522,  551,  582,  610,\
14,  498,  498,  514,  545,  579,  610,  640,  669,\
16,  682,  704,  725,  747,  769,  790,  812,  834,\
18,  715,  739,  763,  787,  811,  836,  861,  886,\
20,  749,  774,  800,  825,  851,  877,  903,  930,\
22,  786,  813,  839,  867,  895,  923,  950,  978,\
24,  827,  856,  886,  915,  944,  973, 1002, 1032,\
26,  875,  906,  937,  968,  999, 1030, 1061, 1092,\
28,  951,  983, 1016, 1048, 1081, 1114, 1146, 1179,\
30, 1331, 1356, 1382, 1407, 1432, 1457, 1482, 1508,\
32, 1471, 1498, 1526, 1554, 1582, 1610, 1638, 1665,\
35, 1745, 1778, 1811, 1844, 1877, 1910, 1943, 1976", tab1, ",")
  # 乙表
  split("\
10,   0,\
20, 278,\
30, 510,\
35, 563", tab2, ",");
}
'