Function gen(m2, f2, mw, fw) As Single
Dim year As Integer
g1 = 0
For year = 5 To 99
g1 = g1 + 10 ^ (-4) * rev(year, m2, f2, mw, fw) / (1 + 0.032) ^ (year - 5)
Next
gen = g1
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) * 24
fw1(5) = fc(age) * 21
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, m2, f2, mw, fw) As Single
Dim r1 As Single
Dim r2 As Single
Dim r3 As Single
Dim age As Integer
r1 = 0
For age = 16 To 65
r2 = 12 * m2(year, age) * mw(year, age)
r3 = 12 * f2(year, age) * fw(year, age)
r1 = r1 + rate(year) * (r2 + r3)
Next
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 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 #3
For year = 0 To 99
Write #3, year, Int(rev(year, m2, f2, mw, fw) / 1000) / 10
Next
Close #3
For n = 1 To 5
year = 5 * n
Debug.Print Int(rev(year, m2, f2, mw, fw) * 10 ^ (-2)) * 10 ^ (-2)
Next
For n = 3 To 6
year = 10 * n
Debug.Print Int(rev(year, m2, f2, mw, fw) * 10 ^ (-2)) * 10 ^ (-2)
Next
Debug.Print gen(m2, f2, mw, fw)
For year = 5 To 99
Debug.Print rate(year)
Next
End Sub
最終更新:2009年02月28日 20:49