FORTRAN Evaluation

	Some good features (especially of FORTRAN90)

	1. Improved Readability
	   a. Free-form statements
	   b. Introduction of attributes as part of type specification
		parameter
		dimension
		target
		pointer
		intent
	   c. Recursive subprograms
	   d. added control statements and derived data types
		Exit
		Case
	   e. Relatively simple syntax

	2. Improved Writeability
	   a. Enhanced orthogonality
	  	Array-valued functions
		Array assignments
		No separate type specification for Dummy Arguments
	   b. Enhanced expressivity
		Array operations and Array intrinsic functions
		Assumed-Shape and Allocatable arrays for dynamic allocation
		Array Constructors
		Introduction of attributes
		Internal subprograms
	   c. Easy file accessing
	   d. Recursion and Derived data types
	   e. Compile-time initialization of local variables 
	      (for retaining their values for subsequent subprogram calls)
	   f. Separate pointer assignment operator (good and bad)
	   
	3. Improved Reliability
	   a. Disallowing Implicit types
	   b. Distinct block terminator and exact pairing
		End if
		End Do
		End Function
		End Subprogram
	   c. Error status checking argument in many intrinsic functions
		Allocate (,STAT=Err)
		Read (, , IOSTAT=ios)
		Write (, , IOSTAT=ios)
	   d. Function names need to be assigned a value before returning
		(Good and Bad)
	   e. Case-insensitive)
	   f. Redundancy
		COMMON Statements
		EQUIVALENCE (Within one program unit alone)
		Array Conformability in terms of shape only

	4. Some bad features
	   a. Feature Multiplicity
		integer A(10)	or	Integer A
		              	   	Dimension A(10)
		            	or	Integer, dimension(10) :: A
		real*8 RR
		double precision RR
	   b. Confusing syntax
		Difference between Computed GOTO and Assigned GOTO
			GOTO (10,20,30), K	! Computed GOTO
				! K must be 1 or 2 or 3
				! Else unpredictable at best.
			GOTO K, (10,20,30)	! Assigned GOTO
	   c. Lack of Dereferencing operator (Good or Bad)
	   d. Inadequate run-time error checking although it can be
	      overriden by use of compile-qualifiers:
		NoBounds
		NoOverflow
	   e. Inconsistent use of function name within the function body.
		in assignment and
		in recursive calls (when it is recursive)
	   f. Lack of statement terminator
	      necessitating a continuation specifier (&)