1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
C Copyright 1981-2007 ECMWF
C
C Licensed under the GNU Lesser General Public License which
C incorporates the terms and conditions of version 3 of the GNU
C General Public License.
C See LICENSE and gpl-3.0.txt for details.
C
SUBROUTINE INTLOG(KLEVEL, MESSAGE, KNUM)
C
C---->
C**** INTLOG
C
C PURPOSE
C _______
C
C This routine logs error messages.
C
C
C INTERFACE
C _________
C
C CALL INTLOG(KLEVEL, MESSAGE, KNUM)
C
C
C Input parameters
C ________________
C
C KLEVEL - Severity level for reported message
C = 0 for debug
C = 1 for information
C = 2 for warning
C = 3 for error
C = 4 for fatal
C MESSAGE - Message text
C KNUM - Message number
C
C
C Output parameters
C ________________
C
C None.
C
C
C Common block usage
C __________________
C
C LDEBUG in /INTLOGC/ controls display of message
C = 0 for no display
C = 1 to display
C
C
C Method
C ______
C
C Prints message and number if debug flag is 'on'.
C
C
C Externals
C _________
C
C INTLOGT - sends any ERROR, FATAL or WARN message to the
C MARS server.
C
C
C Comments
C ________
C
C LDEBUG is toggled by a call to INTLOGD.
C
C
C AUTHOR
C ______
C
C J.D.Chambers *ECMWF* Jul 1995
C
C
C MODIFICATIONS
C _____________
C
C J.D.Chambers *ECMWF* March 1996
C Prepare error message for MARS server.
C
C
C----<
C _______________________________________________________
C
IMPLICIT NONE
C
#include "parim.h"
C
C Subroutine arguments.
C
INTEGER KLEVEL, KNUM
CHARACTER *(*) MESSAGE
C
#include "intlog.h"
C
C Local variables.
C
CHARACTER*79 NEWMESS
INTEGER NLEV, LOOP
CHARACTER*5 TITLE(JP_FATAL+1)
DATA TITLE/'DEBUG',
X 'INFO ',
X 'WARN ',
X 'ERROR',
X 'FATAL'/
INTEGER IRET, ILEN
C
C ------------------------------------------------------------------
C* Section 1. Initialise
C ------------------------------------------------------------------
C
100 CONTINUE
C
C Ensure valid level is used.
NLEV = KLEVEL + 1
IF ( KLEVEL .GT. JP_FATAL) NLEV = JP_FATAL + 1
C
DO LOOP = 1, 79
NEWMESS(LOOP:LOOP) = ' '
ENDDO
C
C ------------------------------------------------------------------
C* Section 2. Prepare ERROR or FATAL message for MARS server.
C ------------------------------------------------------------------
C
200 CONTINUE
C
ILEN = LEN(MESSAGE)
IF( ILEN.GT.65 ) ILEN = 65
NEWMESS(1:ILEN) = MESSAGE(1:ILEN)
ILEN = ILEN + 1
IF(KNUM.NE.JPQUIET) THEN
IF( ABS(KNUM).LT.1000 ) THEN
WRITE(NEWMESS(ILEN:),'(I4)') KNUM
ELSE IF ( ABS(KNUM).LT.100000 ) THEN
WRITE(NEWMESS(ILEN:),'(I7)') KNUM
ELSE IF ( ABS(KNUM).LT.100000000 ) THEN
WRITE(NEWMESS(ILEN:),'(I10)') KNUM
ELSE
WRITE(NEWMESS(ILEN:),'(I15)') KNUM
ENDIF
ENDIF
C
C Send the message
C
IF( KLEVEL.GE.JP_WARN ) CALL INTLOGT(NEWMESS)
C
IF( LDEBUG ) WRITE(*,9001) TITLE(NLEV),NEWMESS(1:66)
9001 FORMAT('INTLOG ',A5,': ',A66)
C
C ------------------------------------------------------------------
C* Section 9. Closedown.
C ------------------------------------------------------------------
C
900 CONTINUE
C
RETURN
END
|