C
C Subroutines to handle error and warning messages
C
C Version: 5.20
C Date: 1998, November 3
C
C Coded by: Ludek Klimes
C Department of Geophysics, Charles University Prague,
C Ke Karlovu 3, 121 16 Praha 2, Czech Republic,
C E-mail: klimes@seis.karlov.mff.cuni.cz
C
C.......................................................................
C
C This file consists of:
C ERROR...Subroutine to handle the error conditions indicated within
C the Fortran code. It writes a brief error message and
C STOPs the program. A user is encouraged to modify this
C routine to redirect the error mesage or to STOP the
C program in a different way.
C ERROR
C WARN... Subroutine to handle the warning messages indicated within
C the Fortran code. It writes a brief error message and
C PAUSEs the program. A user is encouraged to modify this
C routine to redirect the warning mesage or to change the
C PAUSE statement.
C WARN
C LUWARN..Integer external function to remember the logical unit
C number of the output file to write the warning messages.
C LUWARN
C
C=======================================================================
C
C
C
SUBROUTINE ERROR(TEXT)
CHARACTER*(*) TEXT
C
C Subroutine to handle the error conditions indicated within the Fortran
C code. It writes a brief error message and STOPs the program.
C A user is encouraged to modify this routine to redirect the error mesage
C or to STOP the program in a different way.
C
C Input:
C TEXT... A brief text identifying the error.
C Example: 'PRG-04: Too small array AAA', where PRG-04
C identifies the corresponding error in program PRG.
C Subroutine ERROR prepends string 'Error ' to TEXT.
C No output.
C
C Date: 1998, November 3
C Coded by Ludek Klimes
C
C-----------------------------------------------------------------------
C
EXTERNAL LUWARN
INTEGER LUWARN
C
C If a formatted output log file is open, a copy of the error
C message is written there:
IF (LUWARN(0).GT.0) THEN
WRITE(LUWARN(0),'(2A)') ' Error ',TEXT
END IF
C
C The error message is written to the standard output:
WRITE(*,'(2A)') ' Error ',TEXT
C
C PAUSE command may enable to terminate batch files or scripts on
C some systems:
PAUSE 999
C
C Finally, the program must be STOPped:
STOP 999
END
C
C=======================================================================
C
C
C
SUBROUTINE WARN(TEXT)
CHARACTER*(*) TEXT
C
C Subroutine to handle the error conditions indicated within the Fortran
C code. It writes a brief error message and STOPs the program.
C A user is encouraged to modify this routine to redirect the error mesage
C or to STOP the program in a different way.
C Subroutine to handle the warning messages indicated within the Fortran
C code. It writes a brief error message and PAUSEs the program.
C A user is encouraged to modify this routine to redirect the warning
C mesage or to change the PAUSE statement.
C
C Input:
C TEXT... A brief text identifying the warning.
C Example: 'PRG-05: No header section found', where PRG-05
C identifies the corresponding warning in program PRG.
C Subroutine WARN prepends string 'Warning ' to TEXT.
C No output.
C
C Date: 1998, November 3
C Coded by Ludek Klimes
C
C-----------------------------------------------------------------------
C
EXTERNAL LUWARN
INTEGER LUWARN
C
C If a formatted output log file is open, a copy of the warning
C message is written there:
IF (LUWARN(0).GT.0) THEN
WRITE(LUWARN(0),'(2A)') ' Warning ',TEXT
END IF
C
C The error message is written to the standard output:
WRITE(*,'(2A)') ' Warning ',TEXT
C
C PAUSE command to suspend the execution:
PAUSE
C
RETURN
END
C
C=======================================================================
C
C
C
INTEGER FUNCTION LUWARN(LU)
INTEGER LU
C
C Function to remember the logical unit number of the output file to
C write the warning, error and other messages to output log file,
C if it is defined.
C
C Input:
C LU... LU positive:
C LUWARN is redefined to LU. LU should represent the
C logical unit number of the formatted output log file to
C write the messages. Function LUWARN with such a value
C of LU should be called after opening the output log file
C which is usually performed from the main program.
C Otherwise:
C LUWARN is the last redefined value. LUWARN=0 when
C starting the program.
C Output:
C LUWARN..Logical unit number of the output log file to write the
C warning messages.
C LUWARN positive: formatted output log file is ready,
C LUWARN=0: output log file is not available.
C
C Example:
C First invocation:
C OPEN(LULOG,FILE=FLOG)
C LULOG=LUWARN(LULOG)
C Next invocations:
C IF (LUWARN(0).GT.0) THEN
C WRITE(LUWARN(0),'(2A)') ' Error ',TEXT
C END IF
C
C Note:
C For consistency, it is recommended that an error message starts
C with string ' Error ' at the begining of the first written line
C immediately followed by the string identifying the error, and
C a warning message starts with string ' Warning'.
C Numbered warnings should be listed in the list of errors.
C
C Date: 1997, November 22
C Coded by Ludek Klimes
C
C-----------------------------------------------------------------------
C
INTEGER LUSTOR
SAVE LUSTOR
DATA LUSTOR/0/
C
IF(LU.GT.0) THEN
LUSTOR=LU
END IF
LUWARN=LUSTOR
RETURN
END
C
C=======================================================================
C