アットウィキロゴ

32 世代支払保険料

Function gen(ystart As Single, m2, f2, mw, fw) As Single
Dim year As Integer
Dim age As Integer
g1 = 0
For year = 5 To 99
age = 100 + year - ystart
h = 1
If age > 65 Then h = 0
If age > 65 Then age = 65
If age < 16 Then h = 0
If age < 16 Then age = 16
g2 = rev(year, age, m2, f2, mw, fw)
If h = 0 Then g2 = 0
g1 = g1 + g2 / (1 + 0.032) ^ (year - 5)
Next
gen = Int(g1 / 10 ^ 2) / 10 ^ 2
End Function
Function rate(year As Integer) As Single
Dim r1 As Single
Dim y1 As Single
r1 = 0.1358
y1 = year
If y1 > 18 Then y1 = 17
If y1 < 4 Then y1 = 3
r1 = r1 + (y1 - 3) * 0.00354
rate = r1
End Function
Function wage(sex As Integer, year As Integer, age As Integer, g As Single, mc, fc) As Single
Dim n As Integer
Dim mw1(0 To 99) As Single
Dim fw1(0 To 99) As Single
Dim y1 As Integer
Dim w1 As Single
mw1(5) = mc(age) * 25
fw1(5) = fc(age) * 13
For y1 = 6 To year
mw1(y1) = (1 + g) * mw1(y1 - 1)
fw1(y1) = (1 + g) * fw1(y1 - 1)
Next
If sex = 1 Then w1 = mw1(year)
If sex = 2 Then w1 = fw1(year)
wage = w1
End Function
Function rev(year As Integer, age As Integer, m2, f2, mw, fw) As Single
Dim r1 As Single
Dim r2 As Single
Dim r3 As Single
r1 = 0
r2 = 12 * m2(year, age) * mw(year, age)
r3 = 12 * f2(year, age) * fw(year, age)
r1 = r1 + rate(year) * (r2 + r3)
rev = r1
End Function
Private Sub Command1_Click()
Dim a1 As Single
Dim a2 As Single
Dim a3 As Single
Dim a4 As Single
Dim ystart As Single
Dim year As Integer
Dim age As Integer
Dim m2(-3 To 99, 16 To 65) As Single
Dim f2(-3 To 99, 16 To 65) As Single
Dim mw(0 To 99, 16 To 65) As Single
Dim fw(0 To 99, 16 To 65) As Single
Open "c:/simple/gdata/厚生年金被保険者.txt" For Input As #1
Do Until EOF(1)
Input #1, a1, a2, a3, a4
year = a1
age = a2
m2(year, age) = a3
f2(year, age) = a4
Loop
Close #1
n = 3
Dim mc(16 To 65) As Single
Dim fc(16 To 65) As Single
Open "c:/simple/data/標準報酬.txt" For Input As #2
Do Until EOF(2)
Input #2, a1, a2, a3
age = Int(a1) + 1
mc(age) = a2
fc(age) = a3
Loop
Close #2
Dim g As Single
g = 0.021
For year = 0 To 99
For age = 16 To 65
mw(year, age) = wage(1, year, age, g, mc, fc)
fw(year, age) = wage(2, year, age, g, mc, fc)
Next
Next
Open "c:/simple/gdata/世代支払保険料.txt" For Output As #44
For ystart = 0 To 199
Write #44, ystart, gen(ystart, m2, f2, mw, fw)
Next
Close #44
For ystart = 0 To 199
Debug.Print ystart, gen(ystart, m2, f2, mw, fw)
Next
End Sub
最終更新:2009年03月02日 00:32