「賞与の源泉徴収税額のプログラムもほしい」というかたがいらっしゃいましたので、 サンプルをつけておきます。
この程度のデータ量だと、謎解きの元気も出ませんので、 馬鹿みたいに表を組み込むことにしてしまいましたが、 データ入力の手間が省けるかもしれません。
使いかたは、 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, ","); } '