Function exp(year As Single, mjk, fjk, mtime, ftime, jyo, macro) As Single
Dim p1 As Single
Dim m1 As Single
Dim p2 As Single
Dim f1 As Single
Dim e1 As Single
Dim age As Single
e1 = 0
For age = 60 To 99
p1 = mpen(year, age, mtime, jyo, macro)
m1 = mjk(year, age)
p2 = fpen(year, age, ftime, jyo, macro)
f1 = fjk(year, age)
e1 = e1 + p1 * m1 + p2 * f1
Next
exp = Int(e1 / 10 ^ 2) / 10 ^ 2
End Function
Function fpen(year As Single, age As Single, ftime, jyo, macro) As Single
Dim y1 As Integer
Dim y2 As Integer
Dim y3 As Integer
Dim t1 As Single
Dim w2 As Single
Dim j1 As Single
Dim j2 As Single
Dim m1 As Single
Dim m2 As Single
Dim m3 As Single
Dim g As Single
Dim s1 As Single
g = 0.021
s1 = 1
g = 0.021
y1 = year - age + 100
y2 = y1 + 65 - 100
For yp = 5 To y2
s1 = s1 * (1 + g)
Next
y3 = y2 + 1
If y3 < 5 Then y3 = 5
For yp = y3 To year
s1 = s1 * (1 + g + macro(yp))
Next
t1 = 12 * ftime(y1)
w2 = 1.3 * 21
n1 = year - age + 100
If n1 < 0 Then n1 = 0
j1 = jyo(n1) / 1000
If y1 < 51 Then j1 = 1.05 * j1
m2 = w2 * j1 * t1 * s1
fpen = m2
End Function
Function mpen(year As Single, age As Single, mtime, jyo, macro) As Single
Dim y1 As Integer
Dim y2 As Integer
Dim y3 As Integer
Dim t1 As Single
Dim w2 As Single
Dim j1 As Single
Dim j2 As Single
Dim m1 As Single
Dim m2 As Single
Dim m3 As Single
Dim g As Single
Dim s1 As Single
g = 0.021
s1 = 1
g = 0.021
y1 = year - age + 100
y2 = y1 + 65 - 100
For yp = 5 To y2
s1 = s1 * (1 + g)
Next
y3 = y2 + 1
If y3 < 5 Then y3 = 5
For yp = y3 To year
s1 = s1 * (1 + g + macro(yp))
Next
t1 = 12 * mtime(y1)
If y1 < 0 Then y1 = 0
t1 = 12 * mtime(y1)
w2 = 1.8 * 24
n1 = year - age + 100
If n1 < 0 Then n1 = 0
j1 = jyo(n1) / 1000
If y1 < 51 Then j1 = 1.05 * j1
m2 = w2 * j1 * t1 * s1
mpen = m2
End Function
Private Sub Command1_Click()
Dim year As Single
Dim age As Single
Dim y1 As Integer
Dim a1 As Single
Dim a2 As Single
Dim a3 As Single
Dim a4 As Single
Dim a5 As Single
Dim mtime(0 To 140) As Single
Dim ftime(0 To 140) As Single
Dim mjk(-5 To 99, 0 To 99) As Single
Dim fjk(-5 To 99, 0 To 99) As Single
Dim mw(-5 To 99, 60 To 65) As Single
Dim fw(-5 To 99, 60 To 65) As Single
Dim jyo(0 To 199) As Single
Dim macro(0 To 99) As Single
Open "c:/simple/gdata/女子通算年金加入年数.txt " For Input As #7
Do Until EOF(7)
Input #7, a1, a2
year = a1
ftime(year) = a2
Loop
Close #7
Open "c:/simple/gdata/男子通算年金加入年数.txt " For Input As #77
Do Until EOF(77)
Input #77, a1, a2
year = a1
mtime(year) = a2
Loop
Close #77
Open "c:/simple/gdata/通算年金受給者.txt" For Input As #2
Do Until EOF(2)
Input #2, a1, a2, a3, a4
year = a1
age = a2
mjk(year, age) = a3
fjk(year, age) = a4
Loop
Close #2
Open "c:/simple/data/乗数.txt" For Input As #5
Do Until EOF(5)
Input #5, a1, a2
age = a1
jyo(age) = a2
Loop
Close #5
For age = 0 To 27
jyo(age) = jyo(27)
Next
For age = 47 To 199
jyo(age) = jyo(47)
Next
Open "c:/simple/gdata/マクロスライド.txt" For Input As #22
Do Until EOF(22)
Input #22, a1, a2
year = a1
macro(year) = a2
Loop
Close #22
Open "c:/simple/gdata/通算年金受給額.txt" For Output As #44
For year = 0 To 99
Write #44, year, exp(year, mjk, fjk, mtime, ftime, jyo, macro)
Next
Close #44
Dim n As Integer
For n = 1 To 5
year = 5 * n
Debug.Print year, exp(year, mjk, fjk, mtime, ftime, jyo, macro)
Next
For n = 3 To 6
year = 10 * n
Debug.Print year, exp(year, mjk, fjk, mtime, ftime, jyo, macro)
Next
End Sub
最終更新:2009年03月01日 22:04