! 10.7.f90 ! 2025-6-28 ! $Id: 10.7.f90 1.1 2025/06/28 11:50:32 s Exp $ program a ! 現在価格 s ! 先渡価格 f ! クーポン c ! 利子率 r1 ! 利子率 r2 ! キャッシュフロー流列 x ! 割引係数配列 d ! 現在価値 pv implicit none integer :: m real :: c, f, pv, r1, r2, s real :: d(3), x(3), xd(3) ! main call input(s, c, f, m, r1, r2, x) call calculation(m, r1, r2, d, x, xd, pv) call output(s, c, f, m, r1, r2, x, d, xd, pv) contains subroutine input(s, c, f, m, r1, r2, x) integer :: m real :: x(3), x1(3), x2(3), x3(3) real :: s, c, f, r1, r2 s = 920.0 c = 80.0 f = 940.0 m = 2 r1 = 0.07 r2 = 0.08 x1 = [ -s, 0.0, 0.0] ! 初期支出 x2 = [ 0.0, c, c] ! クーポン収入 x3 = [ 0.0, 0.0, f] ! 満期時収入 x = x1 + x2 + x3 end subroutine input subroutine calculation(m, r1, r2, d, x, xd, pv) integer :: m real :: d0, d1, d2, pv, r1, r2 real :: x(3), d(3), xd(3) d0 = 1.0 d1 = 1.0 / (1 + r1 / m) d2 = 1.0 / (1 + r2 / m) ** 2 d = [d0, d1, d2] xd = x * d pv = sum(xd) end subroutine calculation subroutine output(s, c, f, m, r1, r2, x, d, xd, pv) integer :: m real :: s, c, f, r1, r2, pv real :: x(3), d(3), xd(3) print *, "10.7.js" print *, "s", s print *, "c", c print *, "f", f print *, "r1", r1 print *, "r2", r2 print *, "m", m print *, "x", x print *, "d", d print *, "xd", xd print *, "pv", pv end subroutine output end program a