!head('BLOCK-IF statements')
!fc has a "block-structured" IF statement that is similar to that found in high
level languages such as Algol-68 and C. its syntax is:
)l2 IF(logical-expression) THEN
)l statement )l ...~ )l statement )l
ELSE )l statement )l ...~ )l statement )l 
ENDIF )l
!p if there are no statements between ELSE and ENDIF then the ELSE may be 
ommitted. an example is in order:
)l2a
      if (a.gt.b) then
         max=a
      else
         max=b
      endif
) )l2
 is equivalent to:
)l2a
      if (a.gt.b) goto 100
      max=b
      goto 101
100   max=a
101   continue
) )l2
the indentations are purely for ease in reading the code.
!head('the ELSEIF statement')
another new statement is the "ELSE~IF" statement that may appear inside
a block-structured IF statement. for example:
)l2a 
	i = abs(i)
	if (i.le.1) then
		ip = 0
	else if (i.le.10) then
		ip = 1
	else if (i.le.100) then
		ip = 2
	else if (i.le.1000)  then
		ip = 3
	else
		stop 'i too large'
	endif
) !p is equivalent to:
)l2a 
	i = abs(i)
	if (i.le.1) then
		ip = 0
	else
	if (i.le.10) then
		ip = 1
	else
	if (i.le.100) then
		ip = 2
	else
	if (i.le.1000)  then
		ip = 3
	else
		stop 'i too large'
	endif
	endif
	endif
	endif
) 
!head('DO statement changes')
The "DO" statement specification has been changed so that the "range" of
the "DO" loop may be executed zero times. for example:
)l2a
	j=0
	do 10 k=2,1
10	j=j+1
) !p results in the value of "j" being "0". previous compilers had the
option (and often took it) of executing the "DO" loop range at least 
once.
!p the "DO" statement may be used to loop backwards if the "increment"
value is negative. for example:
)l2a
	do 10 i=10,1,-1
	write(6,11) i
11	format(i5)
10	continue
) !p prints out 10, 9, 8, ..., 2, 1. this also may apply to "implied"
"DO"s in input/output statements.
!head('CALL statement extentions')
The CALL statement has been extended to allow IBM 360 style multiple returns
from subroutines. the proper way of doing this is:
)l2a
c
c	the following call returns to one of four places depending
c	upon the subroutine "subr"'s return statement
c
	call subr(a,b,c,*1,*10,*20)
	...
1	continue
	...
10	continue
	...
20	continue
	...
	end
	subroutine subr(a,b,c,*,*,*)
	...
	return
	...
	return 1
	...
	return 2
	...
	return 3
	end
) !p 
in addition to the above syntax the 360-style CALL statement returns with "&"
are accepted. 
