Function makeavgftime(byear As Single, f2by, fdeby, alpha, beta, gamma, theta) As Single
Dim age As Single
Dim car As Single
Dim mis(15 To 64, 1 To 49) As Single
Dim mos(15 To 64, 1 To 49) As Single
Dim z1 As Single
Dim z2 As Single
Dim z3 As Single
Dim v As Single
age = 15
mis(age, 1) = f2by(byear, age)
For age = 16 To 64
z1 = (1 - gamma(age - 1)) * f2by(byear, age - 1)
z2 = f2by(byear, age) - z1
If z2 < 0 Then z2 = 0
z3 = (1 - theta(age)) * z2
z4 = theta(age) * z2
mis(age, 1) = z3
z5 = 0
For car = 1 To 49
z5 = z5 + mos(age - 1, car)
Next
If z5 = 0 Then z5 = 1
v = z4 / z5
If v > 1 Then v = 1
For car = 2 To 49
mis(age, car) = (1 - gamma(age - 1)) * mis(age - 1, car - 1) + v * mos(age - 1, car - 1)
Next
For car = 1 To 49
mos(age, car) = (gamma(age - 1) - alpha(age - 1) - beta(age)) * mis(age - 1, car) + (1 - fdeby(byear, age) - v) * mos(age - 1, car)
Next
Next
z1 = 0
z2 = 0
For car = 25 To 49
z1 = z1 + mis(64, car) + mos(64, car)
z2 = z2 + car * (mis(64, car) + mos(64, car))
Next
makeavgftime = z2 / z1
End Function
Private Sub Command1_Click()
Dim byear As Single
Dim age As Single
Dim m2by(1900 To 2100, 15 To 69) As Single
Dim f2by(1900 To 2100, 15 To 69) As Single
Dim mdeby(1900 To 2100, 0 To 99) As Single
Dim fdeby(1900 To 2100, 0 To 99) As Single
Dim alpha(15 To 69) As Single
Dim beta(15 To 69) As Single
Dim gamma(15 To 69) As Single
Dim theta(15 To 65) As Single
Dim avgftime(1985 To 2100) As Single
Open "c:/hagetaka/gdata/変形生命表.txt " For Input As #117
Do Until EOF(117)
Input #117, a1, a2, a3, a4
byear = a1
age = a2
mdeby(byear, age) = a3
fdeby(byear, age) = a4
Loop
Close #117
Open "c:/nagoya/data/女子脱退力.txt " For Input As #2
Do Until EOF(2)
Input #2, a1, a2, a3, a4
age = a1
gamma(age) = a2
alpha(age) = a3
beta(age) = a4
Loop
Close #2
Open "c:/nagoya/data/再加入率.txt " For Input As #3
Do Until EOF(3)
Input #3, a1, a2, a3, a4
age = a1
theta(age) = a3
Loop
Close #3
Open "c:/hagetaka/gdata/変形厚生年金被保険者.txt " For Input As #116
Do Until EOF(116)
Input #116, a1, a2, a3, a4
byear = a1
age = a2
m2by(byear, age) = a3
f2by(byear, age) = a4
Loop
Close #116
For byear = 1990 To 2034
avgftime(byear) = makeavgftime(byear, f2by, fdeby, alpha, beta, gamma, theta)
Next
Open "c:/hagetaka/gdata/女子平均加入年数1.txt " For Output As #132
For byear = 1990 To 2100
Write #132, byear, avgftime(byear)
Next
Close #132
End Sub
最終更新:2010年03月13日 10:19