! 3.3.f90 ! 13:47 2014-08-15 ! $Id: 3.3.f90 1.2 2024/10/30 12:49:43 s Exp $ ! age(i) : i年目の年齢 ! p(i), probability : i年目に亡くなる確率 ! x(i) : i年目のキャッシュフロー ! r, rate : 金利 ! df(i), discount factor : i年目の割引係数 ! pv(i), pp * x * df : i年目のキャッシュフローの期待現在価値 implicit none integer :: i,iend,istart,n integer :: age(0:100) real(8) :: r real(8), dimension(0:100) :: df,p,pv,x,pp character(10) :: keisen character(50) :: fmt1 ! input r = 0.08 istart = 90 iend = 101 n = iend - istart age(0:n)=[ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101] p(0:n) =[0.07,0.08,0.09,0.10,0.10,0.10,0.10,0.10,0.10,0.07,0.05,0.04] x(0:n) =[ 0.0,10e3,10e3,10e3,10e3,10e3,10e3,10e3,10e3,10e3,10e3,10e3] pp(0:n) =[ 1.0, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] ! calculation do i = 1, n pp(i) = pp(i - 1) -p(i - 1) end do do i=0,n df(i) = 1 / (1 + r) ** i end do pv(0:n) = pp(0:n) * x(0:n) * df(0:n) ! output keisen = '--------' print *, '3.3.f90' print '(9a8)', 'i','age','p','pp','annuity','df','pv' print '(9a8)', (keisen,i=1,7) fmt1='(i8,i8,f8.2,f8.2,i8,f8.2,i8)' print fmt1,(i,age(i),p(i),pp(i),int(x(i)),df(i),int(pv(i)),i=0,n) print '(9a8)', (keisen,i=1,7) print '(a8,f16.2,i32)','total',sum(p(0:n)),int(sum(pv(0:n))) end ! end