program main
	implicit none
	!変数定義
	integer(kind=4),parameter:: neq=2 ! 方程式の本数。<-
	integer(kind=4),parameter:: nmax=100 ! タイムステップ数　<-

	real(kind=8),parameter:: eps=1.0d-10

	external ex2 ! 外部関数を使うぞ宣言

	real(kind=8),dimension(neq):: y0 , yn
	real(kind=8) x0,xn,dx

	real(kind=8),dimension(neq,12) :: work

	integer(kind=4) ierr,i,n,iseed
	!===========================
	! y(x) = dy/dx
	!===========================
	!初期値のセット
	n=0 ! 
	x0=0.0d0 ! xの初期値。今回の計算では時間を表す。
	dx=0.01d0 ! 時間刻み幅。あんま細かくすると計算が長くなる。
	! yの初期値。
	y0(1)=1.0d0 ! 初期の気持ち(私→友) <-
	y0(2)=1.0d0 ! 初期の気持ち(友→私) <- 
	!初期値を標準出力に出す
	write(*,'(i5,5f18.10)') n,x0,y0(1)
	!書き込みファイルオープン
	open(10,file='result.txt')
	!ループ開始
	do n=1,nmax
		xn=x0+dx
		!ルンゲさんを召喚。
		call runge(neq,ex2,x0,xn,y0,yn,eps,ierr,work)
		!次ステップの為にデータ更新
		x0=xn
		do i=1,neq
			y0(i)=yn(i)
		end do
		!データを画面 & ファイルに吐く。
		write(*,'(i5,5f18.10)') n,x0,y0(1),y0(2)
		write(10,'(i5,5f18.10)') n,x0,y0(1),y0(2)
	end do
	!ファイル閉じ閉じ
	close(10)
	!お疲れ様でした。
end program main
!======================
!解く関数
!======================
real(kind=8) function ex2(i,x,y)
	implicit none

	integer(kind=4),parameter:: neq=2 ! 方程式の本数

	integer(kind=4) i
	real(kind=8) x
	real(kind=8),dimension(neq):: y
	if(i == 1) then 
		ex2 = y(1) + y(2) ! 自分の気持ちの変化(対象の式) <-
	end if
	if(i == 2) then
		ex2 = - y(2) - y(1) ! 相手の気持ちの変化(対象の式) <- 対象の式2
	end if
	!お疲れ様でした。
	return
end function ex2