DECLARE SUB MTAX6 (III!, wage!, tax!, LTAX!, MEN!)
DECLARE SUB LTAX6 (III!, wage!, tax!, LTAX!)
DECLARE SUB Mtax7 (II, W, tax!, LTAX!, MEN!)
DECLARE SUB LTAX7 (II, W, tax, LTAX)
DECLARE SUB PREMIUM.59 (NN!, wage!, PB!(), PR!(), PREMIUM!)
DECLARE SUB KYUYO.49 (wage!, income!, WB!(), WR!(), II!, LKY!)
DECLARE SUB TAXRATE (n!, taxbase!, tax!, A(), T())
'-------------共稼ぎ世帯の税負担の変化------------------------------
CLS
PRINT TIME$
CONST MM = 9

DIM ITAXM(MM), ITAXL(MM), LTAXM(MM), LTAXL(MM), SHOUHI(MM)
DIM bunpu(MM), VAT(MM), ITAXM6(MM), LTAXM6(MM), ITAXL6(MM), LTAXL6(MM)
DIM SHARED age(MM), MEN(MM), KODOMO(MM), EDU(MM), MWAGE(MM), LWAGE(MM)
DIM SHARED MNENKIN(MM), LNENKIN(MM), mshaho(MM), LSHAHO(MM)
DIM SHARED sonpo(MM), seiho(MM), incomel(MM), roujin(MM)
'data read
OPEN "c:bunpu.txt" FOR INPUT AS #1: FOR I = 1 TO MM: INPUT #1, bunpu(I): NEXT I
OPEN "c:\KODOMO.txt" FOR INPUT AS #2: FOR I = 1 TO MM: INPUT #2, KODOMO(I): NEXT I
OPEN "c:\setai.txt" FOR INPUT AS #3: FOR I = 1 TO MM: INPUT #3, MEN(I): NEXT I
OPEN "c:\roujin.txt" FOR INPUT AS #4: FOR I = 1 TO MM: INPUT #4, roujin(I): NEXT I
OPEN "c:\1622.txt" FOR INPUT AS #5: FOR I = 1 TO MM: INPUT #5, EDU(I): NEXT I
OPEN "c:\MWAGE.txt" FOR INPUT AS #6: FOR I = 1 TO MM: INPUT #6, MWAGE(I): MWAGE(I) = MWAGE(I) / 10000: NEXT I
OPEN "c:\LWAGE.txt" FOR INPUT AS #7: FOR I = 1 TO MM: INPUT #7, LWAGE(I): LWAGE(I) = LWAGE(I) / 10000: NEXT I
OPEN "c:\MNENKIN.txt" FOR INPUT AS #8: FOR I = 1 TO MM: INPUT #8, MNENKIN(I): MNENKIN(I) = MNENKIN(I) / 10000: NEXT I
OPEN "c:\LNENKIN.txt" FOR INPUT AS #9: FOR I = 1 TO MM: INPUT #9, LNENKIN(I): LNENKIN(I) = LNENKIN(I) / 10000: NEXT I
OPEN "c:\MSHAHO.txt" FOR INPUT AS #10: FOR I = 1 TO MM: INPUT #10, mshaho(I): mshaho(I) = mshaho(I) / 10000: NEXT I
OPEN "c:\LSHAHO.txt" FOR INPUT AS #11: FOR I = 1 TO MM: INPUT #11, LSHAHO(I): LSHAHO(I) = LSHAHO(I) / 10000: NEXT I
OPEN "c:\SONPO.txt" FOR INPUT AS #12: FOR I = 1 TO MM: INPUT #12, sonpo(I): sonpo(I) = sonpo(I) / 10000: NEXT I
OPEN "c:\SEIHO.txt" FOR INPUT AS #13: FOR I = 1 TO MM: INPUT #13, seiho(I): seiho(I) = seiho(I) / 10000: NEXT I
OPEN "c:\shouhi.TXT" FOR INPUT AS #14: FOR I = 1 TO MM: INPUT #14, SHOUHI(I): SHOUHI(I) = SHOUHI(I) / 10000: NEXT I
OPEN "c:\age.TXT" FOR INPUT AS #15: FOR I = 1 TO MM: INPUT #15, age(I): NEXT I

CLOSE
FOR I = 1 TO MM
'PRINT bunpu(I); : PRINT USING "#####.#"; MWAGE(I); MNENKIN(I); LNENKIN(I); MSHAHO(I); LSHAHO(I); SONPO(I); SEIHO(I)
NEXT I
FOR I = 1 TO MM
'h5
 W = LWAGE(I)
 CALL LTAX6(I, W, ITAXL6(I), LTAXL6(I))
 W = MWAGE(I)
 M = KODOMO
 CALL MTAX6(I, W, ITAXM6(I), LTAXM6(I), M)
 TAX6(I) = ITAXM6(I) + ITAXL6(I) + LTAXM6(I) + LTAXL6(I)
'reform
  W = LWAGE(I)
  CALL LTAX7(I, W, ITAXL(I), LTAXL(I))
  W = MWAGE(I)
  M = KODOMO
  CALL Mtax7(I, W, ITAXM(I), LTAXM(I), M)
  TAX7(I) = ITAXM(I) + ITAXL(I) + LTAXM(I) + LTAXL(I)
  VAT(I) = SHOUHI(I) * (3 / 103)
  MPC(I) = SHOUHI(I) / (MWAGE(I) + LWAGE(I) + MNENKIN(I) + LNENKIN(I) - TAX6(I))
  ASHOUHI(I) = MPC(I) * (MWAGE(I) + LWAGE(I) + MNENKIN(I) + LNENKIN(I) - TAX7(I))
  VAT5(I) = ASHOUHI(I) * (.05 / 1.03)
  BTOTAL(I) = ITAXM6(I) + ITAXL6(I) + LTAXM6(I) + LTAXL6(I) + VAT(I)
  ATOTAL(I) = ITAXM(I) + ITAXL(I) + LTAXM(I) + LTAXL(I) + VAT5(I)
NEXT I
'----------------------print out-------------------------------------------
OPEN "c:\case1.csv" FOR OUTPUT AS #1
 PRINT #1, "所得階層"; ","; " -400"; ","; "400 - 500 "; ", "; "500 - 600";
 PRINT #1, ",", "600-700"; ","; "700-800"; ","; "800-900"; ","; "900 - 1000";
 PRINT #1, ","; "1000-1250"; ","; "1250-"
 PRINT #1, "夫給与収入"; : FOR I = 1 TO MM: PRINT #1, ","; MWAGE(I); : NEXT I: PRINT #1, ""
 PRINT #1, " 夫年金"; : FOR I = 1 TO MM: PRINT #1, ","; MNENKIN(I); : NEXT I: PRINT #1, " "
 PRINT #1, "妻給与収入"; : FOR I = 1 TO MM: PRINT #1, ","; LWAGE(I); : NEXT I: PRINT #1, " "
 PRINT #1, " 妻年金"; : FOR I = 1 TO MM: PRINT #1, ","; LNENKIN(I); : NEXT I: PRINT #1, ""
 PRINT #1, "改革前"
 PRINT #1, "夫所得税"; : FOR I = 1 TO MM: PRINT #1, ","; ITAXM6(I); : NEXT I: PRINT #1, ""
 PRINT #1, "夫住民税"; : FOR I = 1 TO MM: PRINT #1, ","; LTAXM6(I); : NEXT I: PRINT #1, ""
 PRINT #1, "妻所得税"; : FOR I = 1 TO MM: PRINT #1, ","; ITAXL6(I); : NEXT I: PRINT #1, ""
 PRINT #1, "妻住民税"; : FOR I = 1 TO MM: PRINT #1, ","; LTAXL6(I); : NEXT I: PRINT #1, ""
 PRINT #1, "消費税", : FOR I = 1 TO MM: PRINT #1, ","; VAT(I); : NEXT I: PRINT #1, ""
 PRINT #1, "改革後"
 PRINT #1, "夫所得税"; : FOR I = 1 TO MM: PRINT #1, ","; ITAXM(I); : NEXT I: PRINT #1, ""
 PRINT #1, "夫住民税"; : FOR I = 1 TO MM: PRINT #1, ","; LTAXM(I); : NEXT I: PRINT #1, ""
 PRINT #1, "妻所得税"; : FOR I = 1 TO MM: PRINT #1, ","; ITAXL(I); : NEXT I: PRINT #1, ""
 PRINT #1, "妻住民税"; : FOR I = 1 TO MM: PRINT #1, ","; LTAXL(I); : NEXT I: PRINT #1, ""
 PRINT #1, "消費税", : FOR I = 1 TO MM: PRINT #1, ","; VAT5(I); : NEXT I: PRINT #1, ""
 PRINT #1, "減税額"
 PRINT #1, "夫所得税"; : FOR I = 1 TO MM: PRINT #1, ","; ITAXM6(I) - ITAXM(I); : NEXT I: PRINT #1, ""
 PRINT #1, "夫住民税"; : FOR I = 1 TO MM: PRINT #1, ","; LTAXM6(I) - LTAXM(I); : NEXT I: PRINT #1, ""
 PRINT #1, "妻所得税"; : FOR I = 1 TO MM: PRINT #1, ","; ITAXL6(I) - ITAXL(I); : NEXT I: PRINT #1, ""
 PRINT #1, "妻住民税"; : FOR I = 1 TO MM: PRINT #1, ","; LTAXL6(I) - LTAXL(I); : NEXT I: PRINT #1, ""
 PRINT #1, "消費税", : FOR I = 1 TO MM: PRINT #1, ","; VAT(I) - VAT5(I); : NEXT I: PRINT #1, ""
 PRINT #1, "TOTAL", : FOR I = 1 TO MM: PRINT #1, ","; BTOTAL(I) - ATOTAL(I); : NEXT I
CLOSE
STOP
END

    '----------------INCOME TAX DATA----------------------------------
WAGE.RATE55:
    DATA 0.4,0.3,0.2,0.10,0.05
WAGE.BRA59:
    DATA 0,165,330,600,1000,10000000000
WAGE.BRA7:
    DATA 0,180,360,660,1000,10000000000
PREM.RATE59:
    DATA 0.07,0.02
PREM.BRA59:
    DATA 0,500,100000000000000
TAX.RATE6:
   DATA 0.10,0.20,0.30,0.40,0.50
INCOME.BRA6:
   DATA 0,300,600,1000,2000,1000000000
INCOME.BRA7:
   DATA 0,330,900,1800,3000,1000000000
KTAX.RATE6:
   DATA 0.02,0.04
KINCOME.BRA6:
   DATA 0,550,1000000
KINCOME.BRA7:
   DATA 0,700,1000000
CTAX.RATE6:
   DATA 0.03,0.08,0.11
CINCOME.BRA6:
   DATA 0,160,550,10000000000
CINCOME.BRA7:
   DATA 0,200,700,10000000000
wage:
DATA  50434,138890,204633,267280,341540, 401582, 478360, 549825,623591
DATA 684962,763781,797166,872685,952430,1041963,1141467,1251195,1619716
DATA
MEN:
DATA 3.33,3,3.12,3.38,3.52,3.75,3.8,3.92,3.92,3.77,3.78,3.73,3.74,3.57
DATA 3.91,3.99,3.72,3.68
bunpu:
DATA 588,332,508,868,1203,1399,1246,1173,893,590,362,254,200
DATA 184,82,38,33,47

SUB KYUYO.49 (wage, income, WB(), WR(), II, LKY)
TT = 0
FOR I = 1 TO II
     IF wage > WB(I) AND wage <= WB(I + 1) THEN WAGE.DEDUCTION = TT + (wage - WB(I)) * WR(I)
     TT = TT + (WB(I + 1) - WB(I)) * WR(I)
    NEXT I
IF WAGE.DEDUCTION < LKY THEN WAGE.DEDUCTION = LKY
income = wage - WAGE.DEDUCTION: IF income < 0 THEN income = 0
END SUB

SUB LTAX6 (III, wage, tax, LTAX)
DIM SB(14), SR(13), A(20), T(20), WB(20), WR(20), KB(20), KR(20), CB(20), CR(20)
jj = III
n = 5: NN = 2: CC = 3: KK = 2: II = 5
RESTORE INCOME.BRA6: FOR I = 1 TO n + 1: READ A(I): NEXT I
RESTORE TAX.RATE6: FOR I = 1 TO n: READ T(I): NEXT I
RESTORE CINCOME.BRA6: FOR I = 1 TO CC + 1: READ CB(I): NEXT I
RESTORE CTAX.RATE6: FOR I = 1 TO CC: READ CR(I): NEXT I
RESTORE KINCOME.BRA6: FOR I = 1 TO KK + 1: READ KB(I): NEXT I
RESTORE KTAX.RATE6: FOR I = 1 TO KK: READ KR(I): NEXT I
RESTORE WAGE.BRA59: FOR I = 1 TO II + 1: READ WB(I): NEXT I
RESTORE WAGE.RATE55: FOR I = 1 TO II: READ WR(I): NEXT I
teigaku = 0
NDED = 0
LROUNEN = 0
rounen = 0
nincome = 0
rouhai = 0
LROUHAI = 0
income = 0
haitoku = 0
LKY = 65
CALL KYUYO.49(wage, income, WB(), WR(), II, LKY)
IF LNENKIN(jj) > 0 THEN
    teigaku = 100
    IF age(jj) < 65 THEN teigaku = 50
    nincome = MNENKIN(jj) - teigaku
    IF nincome < 0 THEN nincome = 0
    IF nincome <= 360 THEN NDED = nincome * .25
    IF 360 < nincome AND nincome <= 720 THEN NDED = 360 * .25 + (nincome - 360) * .15
    IF 720 < nincome THEN NDED = 360 * .25 + (720 - 360) * .15 + (nincome - 720) * .05
    NDED = NDED + teigaku
    IF NDED < 140 THEN NDED = 140
    IF age(jj) < 65 THEN NDED = 70
    nincome = LNENKIN(jj) - NDED
    IF nincome < 0 THEN nincome = 0
    income = income + nincome
END IF
incomel(jj) = income
kiso = 35
DEDUCTION = kiso + LSHAHO(jj)
taxbase = income - DEDUCTION
CALL TAXRATE(n, taxbase, tax, A(), T())
kiso = 31
LDEDUCTION = kiso + LSHAHO(jj)
LBASE = income - LDEDUCTION
CALL TAXRATE(CC, LBASE, CTAX, CB(), CR())
CALL TAXRATE(KK, LBASE, PTAX, KB(), KR())
LTAX = CTAX + PTAX
END SUB

SUB LTAX7 (III, wage, tax, LTAX)
'------------------- WOMEN TAX---------------------------------
DIM SB(14), SR(13), A(20), T(20), WB(20), WR(20), KB(20), KR(20), CB(20), CR(20)
jj = III
n = 5: NN = 2: CC = 3: KK = 2: II = 5
RESTORE INCOME.BRA7: FOR I = 1 TO n + 1: READ A(I): NEXT I
RESTORE TAX.RATE6: FOR I = 1 TO n: READ T(I): NEXT I
RESTORE CINCOME.BRA7: FOR I = 1 TO CC + 1: READ CB(I): NEXT I
RESTORE CTAX.RATE6: FOR I = 1 TO CC: READ CR(I): NEXT I
RESTORE KINCOME.BRA7: FOR I = 1 TO KK + 1: READ KB(I): NEXT I
RESTORE KTAX.RATE6: FOR I = 1 TO KK: READ KR(I): NEXT I
RESTORE WAGE.BRA7: FOR I = 1 TO II + 1: READ WB(I): NEXT I
RESTORE WAGE.RATE55: FOR I = 1 TO II: READ WR(I): NEXT I
LKY = 65
teigaku = 0
NDED = 0
LROUNEN = 0
rounen = 0
nincome = 0
rouhai = 0
LROUHAI = 0
income = 0
haitoku = 0
CALL KYUYO.49(wage, income, WB(), WR(), II, LKY)
IF LNENKIN(jj) > 0 THEN
    teigaku = 100
    IF age(jj) < 65 THEN teigaku = 50
    nincome = MNENKIN(jj) - teigaku
    IF nincome < 0 THEN nincome = 0
    IF nincome <= 360 THEN NDED = nincome * .25
    IF 360 < nincome AND nincome <= 720 THEN NDED = 360 * .25 + (nincome - 360) * .15
    IF 720 < nincome THEN NDED = 360 * .25 + (720 - 360) * .15 + (nincome - 720) * .05
    NDED = NDED + teigaku
    IF NDED < 140 THEN NDED = 140
    IF age(jj) < 65 THEN NDED = 70
    nincome = LNENKIN(jj) - NDED
    IF nincome < 0 THEN nincome = 0
    income = income + nincome
'    PRINT lnenkin(jj); teigaku; nincome
END IF
incomel(jj) = income
kiso = 38
DEDUCTION = kiso + LSHAHO(jj)
taxbase = income - DEDUCTION
CALL TAXRATE(n, taxbase, tax, A(), T())
kiso = 33
LDEDUCTION = kiso + LSHAHO(jj)
LBASE = income - LDEDUCTION
CALL TAXRATE(CC, LBASE, CTAX, CB(), CR())
CALL TAXRATE(KK, LBASE, PTAX, KB(), KR())
LTAX = CTAX + PTAX
END SUB

SUB MTAX6 (III, wage, tax, LTAX, MEN)
DIM SB(14), SR(13), A(20), T(20), PB(15), PR(15)
DIM WB(20), WR(20), KB(20), KR(20), CB(20), CR(20)
jj = III
n = 5: NN = 2: CC = 3: KK = 2: II = 5
RESTORE INCOME.BRA6: FOR I = 1 TO n + 1: READ A(I): NEXT I
RESTORE TAX.RATE6: FOR I = 1 TO n: READ T(I): NEXT I
RESTORE CINCOME.BRA6: FOR I = 1 TO CC + 1: READ CB(I): NEXT I
RESTORE CTAX.RATE6: FOR I = 1 TO CC: READ CR(I): NEXT I
RESTORE KINCOME.BRA6: FOR I = 1 TO KK + 1: READ KB(I): NEXT I
RESTORE KTAX.RATE6: FOR I = 1 TO KK: READ KR(I): NEXT I
RESTORE PREM.BRA59: FOR I = 1 TO NN + 1: READ PB(I): NEXT I
RESTORE PREM.RATE59: FOR I = 1 TO NN: READ PR(I): NEXT I
RESTORE WAGE.BRA59: FOR I = 1 TO II + 1: READ WB(I): NEXT I
RESTORE WAGE.RATE55: FOR I = 1 TO II: READ WR(I): NEXT I
teigaku = 0
NDED = 0
LROUNEN = 0
rounen = 0
nincome = 0
rouhai = 0
LROUHAI = 0
income = 0
haitoku = 0
seisubai = 0
CALL KYUYO.49(wage, income, WB(), WR(), II, LKY)
IF MNENKIN(jj) > 0 THEN
    teigaku = 100
    IF age(jj) < 65 THEN teigaku = 0
    nincome = MNENKIN(jj) - teigaku: IF nincome < 0 THEN NIINCOME = 0
    IF nincome <= 360 THEN NDED = nincome * .25
    IF 360 < nincome AND nincome <= 720 THEN NDED = 360 * .25 + (nincome - 360) * .15
    IF 720 < nincome THEN NDED = 360 * .25 + (720 - 360) * .15 + (nincome - 720) * .05
    NDED = NDED + teigaku
    IF NDED < 140 THEN NDED = 140
    IF age(jj) < 65 THEN NDED = 70
    nincome = MNENKIN(jj) - NDED
    IF nincome < 0 THEN nincome = 0
    income = income + nincome
END IF
kiso = 35: haigu = 35: haitoku = 35: fuyou = 35 * MEN
 IF age(jj) >= 65 AND income <= 1000 THEN rounen = 50
 IF age(jj) >= 75 THEN rouhai = 10
IF incomel(jj) > 35 THEN
    haigu = haigu - incomel(jj): IF haigu < 0 THEN haigu = 0
    BAI = incomel(jj) / 5
    seisubai = INT(BAI)
    haigu = 35 - seisubai * 5
    IF haigu < 0 THEN haigu = 0
END IF
PRINT incomel(jj), haigu
STOP

IF incomel(jj) > 0 THEN
   haitoku = haitoku - incomel(jj)
   IF haitoku < 0 THEN haitoku = 0
   BAIRITU = incomel(jj) / 5
   seisubai = INT(BAIRITU)
   haitoku = 35 - seisubai * 5
   IF haitoku < 0 THEN haitoku = 0
'   PRINT JJ; : PRINT USING "####.##"; HAITOKU; INCOMEL(JJ); BAIRITU; SEISUBAI
END IF
IF income <= 1000 THEN haitoku = 0
IF EDU(jj) = 1 THEN fuyou = fuyou + 15
IF EDU(jj) = 2 THEN fuyou = fuyou + 30
 seiho = seiho(jj)
 IF 2.5 < seiho AND seiho < 5 THEN seiho = 2.5 + (seiho - 2.5) * .5
 IF 5 < seiho AND seiho < 10 THEN seiho = 2.5 + 2.5 * .5 + (seiho - 5) * .25
 IF seiho > 5 THEN seiho = 5
 sonpo = sonpo(jj)
 IF 1 < sonpo AND sonpo <= 2 THEN sonpo = 1 + (sonpo - 1) * .5
 IF sonpo > 2 THEN sonpo = 1.5
 DEDUCTION = kiso + haigu + haitoku + mshaho(jj) + fuyou + seiho + sonpo + rounen + rouhai
 taxbase = income - DEDUCTION
CALL TAXRATE(n, taxbase, tax, A(), T())
'PRINT wage, income, taxbase, tax
PRINT kiso; haigu; haitoku; mshaho(jj); fuyou; seiho; sonpo; rounen; rouhai
seisubai = 0
kiso = 31: haigu = 31: haitoku = 31: fuyou = 31 * MEN
IF age(jj) >= 65 AND income <= 1000 THEN LROUNEN = 48
IF age(jj) >= 75 THEN LROUHAI = 5
IF MEN = 0 THEN haigu = 0
IF incomel(jj) > 31 THEN
    haigu = haigu - incomel(jj): IF haigu < 0 THEN haigu = 0
    BAI = incomel(jj) / 5
    seisubai = INT(BAI)
    haigu = 31 - seisubai * 5
    IF haigu < 0 THEN haigu = 0
END IF
IF incomel(jj) > 5 THEN
   haitoku = haitoku - incomel(jj)
   IF haitoku < 0 THEN haitoku = 0
   BAIRITU = (incomel(jj) - 10) / 5
   seisubai = INT(BAIRITU)
   haitoku = 31 - seisubai * 5
   IF haitoku < 0 THEN haitoku = 0
'   PRINT JJ; : PRINT USING "####.##"; HAITOKU; INCOMEL(JJ); BAIRITU; SEISUBAI
END IF
IF income <= 1000 THEN haitoku = 0
IF EDU(jj) > 0 THEN fuyou = fuyou + 15
IF EDU(jj) > 0 THEN fuyou = fuyou + 30
LDEDUCTION = kiso + haigu + haitoku + mshaho(jj) + fuyou + seiho + sonpo + LROUNEN + LROUHAI
LBASE = income - LDEDUCTION
CALL TAXRATE(CC, LBASE, CTAX, CB(), CR())
CALL TAXRATE(KK, LBASE, PTAX, KB(), KR())
LTAX = CTAX + PTAX
END SUB

SUB Mtax7 (III, wage, tax, LTAX, MEN)
'----------------------MAN TAX---------------------------
DIM SB(14), SR(13), A(20), T(20), PB(15), PR(15)
DIM WB(20), WR(20), KB(20), KR(20), CB(20), CR(20)
jj = III
n = 5: NN = 2: CC = 3: KK = 2: II = 5
RESTORE INCOME.BRA7: FOR I = 1 TO n + 1: READ A(I): NEXT I
RESTORE TAX.RATE6: FOR I = 1 TO n: READ T(I): NEXT I
RESTORE CINCOME.BRA7: FOR I = 1 TO CC + 1: READ CB(I): NEXT I
RESTORE CTAX.RATE6: FOR I = 1 TO CC: READ CR(I): NEXT I
RESTORE KINCOME.BRA7: FOR I = 1 TO KK + 1: READ KB(I): NEXT I
RESTORE KTAX.RATE6: FOR I = 1 TO KK: READ KR(I): NEXT I
RESTORE WAGE.BRA7: FOR I = 1 TO II + 1: READ WB(I): NEXT I
RESTORE WAGE.RATE55: FOR I = 1 TO II: READ WR(I): NEXT I
seisubai = 0
LKY = 65
teigaku = 0
NDED = 0
LROUNEN = 0
rounen = 0
nincome = 0
rouhai = 0
LROUHAI = 0
income = 0
haitoku = 0
CALL KYUYO.49(wage, income, WB(), WR(), II, LKY)
IF MNENKIN(jj) > 0 THEN
    teigaku = 100
    IF age(jj) < 65 THEN teigaku = 0
    nincome = MNENKIN(jj) - teigaku: IF nincome < 0 THEN NIINCOME = 0
    IF nincome <= 360 THEN NDED = nincome * .25
    IF 360 < nincome AND nincome <= 720 THEN NDED = 360 * .25 + (nincome - 360) * .15
    IF 720 < nincome THEN NDED = 360 * .25 + (720 - 360) * .15 + (nincome - 720) * .05
    NDED = NDED + teigaku
    IF NDED < 140 THEN NDED = 140
    IF age(jj) < 65 THEN NDED = 70
    nincome = MNENKIN(jj) - NDED
    IF nincome < 0 THEN nincome = 0
    income = income + nincome
END IF
 IF MEN < 0 THEN MEN = 0
 kiso = 38: haigu = 38: haitoku = 38: fuyou = 38 * MEN
 IF age(jj) >= 65 AND income <= 1000 THEN rounen = 50
 IF age(jj) >= 75 THEN rouhai = 10
IF 40 <= incomel(jj) AND incomel(jj) < 45 THEN haigu = 36
IF 45 <= incomel(jj) AND incomel(jj) < 50 THEN haigu = 31
IF 50 <= incomel(jj) AND incomel(jj) < 55 THEN haigu = 26
IF 55 <= incomel(jj) AND incomel(jj) < 60 THEN haigu = 21
IF 60 <= incomel(jj) AND incomel(jj) < 65 THEN haigu = 16
IF 65 <= incomel(jj) AND incomel(jj) < 70 THEN haigu = 11
IF 70 <= incomel(jj) AND incomel(jj) < 60 THEN haigu = 6
IF 75 <= incomel(jj) AND incomel(jj) < 65 THEN haigu = 3
IF 76 <= incomel(jj) THEN haigu = 0
IF incomel(jj) > 0 THEN
   haitoku = haitoku - incomel(jj)
   IF haitoku < 0 THEN haitoku = 0
   BAIRITU = incomel(jj) / 5
   seisubai = INT(BAIRITU)
   haitoku = 38 - seisubai * 5
   IF haitoku < 0 THEN haitoku = 0
'   PRINT JJ; : PRINT USING "####.##"; HAITOKU; INCOMEL(JJ); BAIRITU; SEISUBAI
END IF
IF income <= 1000 THEN haitoku = 0
IF EDU(jj) = 1 THEN fuyou = fuyou + 15
IF EDU(jj) = 2 THEN fuyou = fuyou + 30
 seiho = seiho(jj)
 IF 2.5 < seiho AND seiho < 5 THEN seiho = 2.5 + (seiho - 2.5) * .5
 IF 5 < seiho AND seiho < 10 THEN seiho = 2.5 + 2.5 * .5 + (seiho - 5) * .25
 IF seiho > 5 THEN seiho = 5
 sonpo = sonpo(jj)
 IF 1 < sonpo AND sonpo <= 2 THEN sonpo = 1 + (sonpo - 1) * .5
 IF sonpo > 2 THEN sonpo = 1.5
 DEDUCTION = kiso + haigu + haitoku + mshaho(jj) + fuyou + seiho + sonpo + rounen + rouhai
 taxbase = income - DEDUCTION
CALL TAXRATE(n, taxbase, tax, A(), T())
'PRINT kiso; haigu; haitoku; mshaho(jj); fuyou; seiho; sonpo; rounen; rouhai
kiso = 33: haigu = 33: haitoku = 33: fuyou = 33 * MEN
IF age(jj) >= 65 AND income <= 1000 THEN LROUNEN = 48
IF age(jj) >= 75 THEN LROUHAI = 5
IF MEN = 0 THEN haigu = 0
IF incomel(jj) > 33 THEN haigu = 0
IF incomel(jj) > 10 THEN
   haitoku = haitoku - incomel(jj)
   IF haitoku < 0 THEN haitoku = 0
   BAIRITU = (incomel(jj) - 10) / 5
   seisubai = INT(BAIRITU)
   haitoku = 33 - seisubai * 5
   IF haitoku < 0 THEN haitoku = 0
'   PRINT jj; : PRINT USING "####.##"; haitoku; incomel(jj); BAIRITU; seisubai
END IF
IF income <= 1000 THEN haitoku = 0
IF EDU(jj) > 0 THEN fuyou = fuyou + 15
IF EDU(jj) > 0 THEN fuyou = fuyou + 30
LDEDUCTION = kiso + haigu + haitoku + mshaho(jj) + fuyou + seiho + sonpo + LROUNEN + LROUHAI
LBASE = income - LDEDUCTION
CALL TAXRATE(CC, LBASE, CTAX, CB(), CR())
CALL TAXRATE(KK, LBASE, PTAX, KB(), KR())
LTAX = CTAX + PTAX
END SUB

SUB PREMIUM.59 (NN, wage, PB(), PR(), PREMIUM)
FOR I = 1 TO NN
     IF wage > PB(I) AND wage <= PB(I + 1) THEN PREMIUM = PP + (wage - PB(I)) * PR(I)
     PP = PP + (PB(I + 1) - PB(I)) * PR(I)
    NEXT I
IF wage > 1000 THEN PREMIUM = 45
END SUB

    '----------------所得税額の計算----------------------------------
SUB TAXRATE (n, taxbase, tax, A(), T())
T = 0: tax = 0
    IF taxbase <= 0 THEN taxbase = 0
    FOR I = 1 TO n
     IF taxbase > A(I) AND taxbase <= A(I + 1) THEN tax = T + (taxbase - A(I)) * T(I): MT = T(I)
     T = T + (A(I + 1) - A(I)) * T(I)
    NEXT I
    IF tax < 0 THEN tax = 0
END SUB

