## Copy-Paste this Fortran text into some file named "mainpart.f"

``````
program main
real x1, x2, x3, y1, y2
x1 = 0.0
x2 = 2.0
x3 = 3.0
call sub1(x1, x2, x3, y1, y2)
print *, 'results are y1=', y1, ' y2=', y2
end

subroutine sub1(first, other, third, out, res)
real first, other, third, out, res
include 'globals.inc'
c start mixing all variables :
out = first*other + 3.0*third
res = sin(first) + cos(other)
first = 2.0 * first
third = 2.0/other
c now overwrite some values...
if (first.gt.other) then
first = cos(out)
other = F(out)
else
c ...in one or in all cases
first = exp(out)
other = G(out)
endif
end
subroutine sub2(x,y,z,N,o)
real a,x,y,z
integer n,o,i
dimension x(2*N),y(2*N),z(2*N)
C a normal loop:
a = 0.5 * X(20)
DO 200 i=5+o,N,2
C with an if-then and a goto
if (Z(i) .gt. 0.0) then
Z(i) = Z(i-1)-2*Z(i)+Y(i+1)
X(i) = 3*X(i) - Y(i+1)*Y(i-1)
else if (Z(i).lt.-10.0) then
Z(i) = -Z(i)
else
Z(i) = cos(X(i))
goto 100
endif
Y(i) = log(Z(i))
100     Y(i) = Y(i) + 1
200  continue
a = X(10) + a
C a while loop:
i = 1
DO while(i.lt.N+5)
i = i+5
Z(i) = Z(i-1)+Z(i+1)
X(i) = 3*X(i) - Y(i+1)*Y(i-1)
enddo
end

``````