@section(Appendix A: Compile Errors)
 
@begin(format, flushright)
@i(These appendicies showing f77 
error messages were originally compiled
for subject 2.10 by John Kyratzoglou and
Dan Ottenheimer)

@end(format)


@BEGIN(DESCRIPTION) 
ASSIGNMENT TO AN UNDIMENSIONED ARRAY
@\An assumed array name was used, where the array name was not declared
in a declaration statement.

BAD ARGUMENT TYPE TO INTRINSIC FUNCTION
@\A function reference was made, using an intrinsic function name,
but the argument list does not agree in order, number or type with the 
intrinsic function requirements.

BAD MAGIC NUMBER
@\For a FORTRAN file the extension must be @B<.f>. For a C file the 
extension must be @B<.c>.

DECLARATION ERROR DECLARATION AMONG EXECUTABLES
@\The order of the statements was not as specified in 
the FORTRAN Language Reference Manual. The statement found out of order is 
ignored.
@begin(example) 
        Example :
                 N = 10
                 REAL X(N)
@end(example)
Here an executable statement precedes  a declaration statement.

DECLARATION ERROR DECLARATION :INCOPATIBLE TYPE DECLARATION
@\The same variable appears in more than one but different data type 
declaration statements. As an example,
@begin(example)
       REAL X(5)
       INTEGER X(5)
@end(example)

DECLARATION ERROR FOR AN ENTITY, USED AS VARIABLE
@\An entity has been used incorrectly; for example, the name of a 
subprogram was used where an arithmetic expression is required.

DECLARATION ERROR FOR ENTITY: INCONSISTENT EQUIVALENCE
    @\EQUIVALENCE statements specify inconsistent relationships between
variables or array elements. As an example,
@example{
EQUIVALENCE (A(1), A(2))}

DECLARATION ERROR LENGTH MUST BE A POSITIVE INTEGER CONSTANT
@\An unacceptable length has been specified in a data type declaration.
This statement is not allowed.
@begin(example)
  Examples:
           INTEGER NUM*3
           CHARACTER*  NAME
@end(example)

DECLARATION ERROR FOR VARIABLE, IMPROPERLY DIMENSIONED ARRAY
@\A reference was made to an adjustable array in a context where such
a reference is not allowed. Example:
@begin(example)
         parameter(nc=20, nchar=3)
         real x(n)
@end(example)
The variable n specified  giving the array size must be either 
initialized in the parameter statement or must be subprogram dummy 
argument or appear in common.

DO LOOP OR BLOCK IF NOT CLOSED
@\The terminal statement of a DO loop or the END IF statement of an 
IF block was not found.

EXECUTION ERROR ENDIF OUT OF PLACE
@\Invalid control structure using ELSEIF, ELSE, or ENDIF. The order 
of the above statements is incorrect.

EXECUTION ERROR LABEL ALREADY DEFINED
@\The same label appears on more than one statement.

EXECUTION ERROR, UNCLASSIFIABLE STATEMENT
@\Compiler cannot figure out what kind of statement it is.  Sometimes
caused by misspelled keywords or unbalanced quotes that create nonsense
statement fragments.

EXECUTION ERROR, UNLABELED FORMAT STATEMENT
@\A required label in a format statement was ommitted.

FLOATING EXCEPTION DURING CONSTANT EVALUATION
@\The specified value of a constant is too large or too small to 
be represented.

IMPOSSIBLE CONVERSION @begin(multiple)
@\An expression that must be arithmetic(INTEGER, REAL, LOGICAL) was
of type CHARACTER.

An expression that must be of type CHARACTER was another data type.

A variable is not declared properly.
@end(multiple)

IMPOSSIBLE STORAGE CLASS 8 IN ROUTINE
@\Often caused by attempt
to use a non-array variable as an array.  Often paired with
"DECLARATION ERROR" message.

INVALID CONTROL ACCESS FOR STATEMENT
@\The ACCESS= keyword specified in an I/O statement was the one assumed
when the file was created.

INVALID CONTROL END FOR STATEMENT 
@\The END=keyword was used illegally in a WRITE or direct access READ
statement.

LABEL ALREADY THAT OF A FORMAT
@\Labels of executable statements have been confused with labels of
FORMAT statements or with labels of non executable statements.

LOGICAL DATUM ASSIGNED TO A REAL VARIABLE
@\In a data statement a logical constant was assigned to a real variable.
Example:
@example( data bzro /.true./)

LD:@i(filename): CANNOT OPEN
@\File type of @i(filename) was not specified during the creation 
of a FORTRAN or C file. As a result during the execution of the shell
command 
@begin(example)
      % f77 for.
    or
      % f77 for
@end(example)
the file could not be opened and compiled.

LOCAL VARIABLE "X" NEVER USED
@\A particular variable was referenced but never used in the program.

MISSING END STATEMENT
@\An END statement was missing at the end of the last input file.

MISSING STATEMENT NUMBER
      @\Reference has been made to statement label that is not defined in the
program unit.

MORE DATA VALUES THAN DATA ITEMS
@\The number of variables or array elements to be initialized must
match the number of constants specified in data initialization.

NAME " name " TRUNCATED TO 16
@\" name " was longer than 16 characters and has been truncated.

NONDIGIT IN STATEMENT NUMBER FIELD
@\An improperly formed statement label(namely one containing letters)
has been detected in columns 1 to 5 of an initial line. The statement label
was ignored. 
 
NONLOGICAL EXPRESSION IN IF STATEMENT
@\An expression that must be of type LOGICAL  was another data type.

NONLOGICAL OPERANT OF LOGICAL OPERATOR
@\An invalid operation was specified as .AND. of two real variables.

NUMERIC DATUM ASSIGNED TO A CHARACTER VARIABLE
@\Character data with a length greater than one was initialize with 
a numeric value in a DATA statement. As an example:
@example{
character*10 name
data name /14/}

REPEATED KEYWORD
@\Each keyword subparameter in an I/O statement or auxiliary I/O
statement can be specified only once.

SUBSCRIPTS ON A SIMPLE VARIABLE
@\A variable that is not defined as an array cannot appear with subscripts.

SYNTAX ERROR
@\This is the catch-all error message for syntax problems.
Some frequent causes:
@begin(itemize)
@\An expression or a term of an expression has been ommitted ( missing 
variable or constant).
@begin(example)
 Example : RESULT =    * TIME
           SUMMATION =      
	   WRITE(6, FMT='(1X, F3.1)') SUM
@end(example)

Superfluous text was found at the end of a syntactically correct
statement. Check for typing or syntax errors (extra characters following 
a valid statement).
@example( Example :  ICOUNT = ICOUNT+1, )

A required variable or subprogram name was not found.

Two terms of an expression are not sepatated by an operator or a
punctuation mark(such as comma) has been omitted.

A floating-point constant was specified in E notation but the 
exponent was omitted.

A required constant was not found.

A character constant must be enclosed in parenthesis.

An invalid operation was attempted in an implied-DO list in a 
DATA statement, for instance a function reference in the subscript or
substring expression of an array or character substring reference. Example:
@example{DATA (A(SIN(REAL(I))), I=1, 10 )   /100.0/}

Extra comma in format list.
@end(itemize)

TERMINATION CODE 139
@\The upper bound of a dimension declarator must be equal to or
greater than the lower bound.

THERE IS A BRANCH TO STATEMENT LABEL FROM OUTSIDE BLOCK
@\DO or IF statement incorrectly nested.

UNBALANCED PARENTHESIS, STATEMENT SKIPPED
@\Two terms of an expression are not
separared by an operator or a punctuation mark (such as comma,parenthesis)
has been omitted.

UNBALANCED QUOTES; CLOSING QUOTE SUPPLIED, (SYNTAX ERROR)
@\A missing quote was detected  and supplied by the system.

UNDEFINED:
@\Followed by a list of routine names.  The linker @i(ld) cannot
find the routines in the libraries searched.  To check which
libraries were searched, recompile with -t option.

UNDEFINED ENTITY :
@\A control parameter expression in an implied-DO list in a DATA
statement contains a name which is not the name of a control variable 
of an implied-DO list which has the name of its scope. Example:
@EXAMPLE{ DATA (A(J), J=1,10),(B(I), I=J,K) /100./ }

WRITE SFE:[100] ERROR IN FORMAT
ILLEGAL INSTRUCTION
@\@BEGIN(itemize, spread 0)
Extra comma in format list

Extra number in format list

An invalid character or a syntax error was detected in a FORMAT 
statement.
@end(itemize)

WRONG NUMBER OF SUBSCRIPTS
@\More or fewer dimensions are referenced than were declared for the
array.

ZERO STEP IN IMPLIED DO LOOP
    @\An invalid control parameter was detected in an implied-DO list
in a data statement; for instance an increment of zero.


@end(description)


@section(Appendix B:  Run-Time Errors)

@begin(description)
ASSIGNMENT TO AN UNDIMENSIONED ARRAY
@\An assumed array name was used, where the array name was not declared.

ARITHMETIC EXCEPTION: FLOATING DIVIDE BY ZERO
@\During a floating point arithmetic operation, an attempt was made to
divide by zero.

ARITHMETIC EXCEPTION :FLOATING POINT OVERFLOW
@\During an arithmetic operation, a floating point value exceeded
the largest representable value for that data type.

BUS ERROR
@\The number of arguments in the dummy argument list is greater than
the number of arguments in the actual argument list in a main/subprogram
to subprogram interface (access violation, RM=01).

READ UNEXPECTED CHARACTER
@\During a formatted operation, an invalid character was detected
in an input field, or the input value overflowed the range representable
in the input variable (Input conversion error).

* * * (ASTERISKS)
@\During a formatted output operation the value of a particular number 
could not be output in the specified field length without loss of
significant digits. The field is filled with asterisks (Output conversion
error).

DOFIO :[-1] END OF FILE DURING READ
@\An end-of-file condition was encountered during execution of
a READ statement that did not contain an END, ERR or IOSTAT specification.

IERR = -1
@\Attempt to access a nonexistent record.

IERR = 104
@\Mixed access modes. An attempt was made to use formatted and 
unformatted operations on the same unit.

IERR = 103
@\access='sequential' was performed on a direct access file.

ILLEGAL UNIT NUMBER
@\A logical unit number greater than 99 or less than zero was used
in an I/O statement.

PERMISSION DENIED.
@\There were errors during linking when you compiled the program.
("Undefined:")  The linker has set the file's protection to
"no owner execute."

@end(description)

@section(Errors Undetected by f77 )

@begin(enumerate)

The control variable of a DO loop has been altered within the range 
of the DO statement. Assignment to DO variable within loop. Example:
@begin(example) 
       do 14 i=1,20
         i = 20       	
         x(i) = 0
    14 continue
@end(example)

Extra comma in format list.
Example :
@begin(example)
       Format(1x, a, f3.1,)
@end(example)

Missing separator between format items. A required separator character
has been omitted between fields in a FORMAT statement. Example:
@begin(example)
       Format(1x, a  f3.1)
@end(example)

A variable appears in more than one data type declaration statement. Or
a name appears in two or more inconsistent declarations statements
(Multiple declaration of name).
@begin(example)
         real x(5), x(5)
   or
         real x(5) , ....
         real x(5) , ....
@end(example)

Missing number in format list
@begin(example)
Example :    FORMAT(1x, a, f6. )
@end(example)
The system assumes that the number of characters to the right of decimal
point is one and there is an accuracy error involved.

Using an array within a program without declaring it with a DIMENSION 
statement.
@Begin(Example)
Example:
  c
       do 14 j=1,20
        x(j) = 10.5
        write(6, fmt=*) x(j)
  14  continue
  c
      stop
      end
@end(example)
          
@end(enumerate) 
