SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/XRD38/LFI/mt/lfieng_mt.F
Go to the documentation of this file.
00001 C Jan-2011 P. Marguinaud Thread-safe LFI
00002       SUBROUTINE LFIENG_MT (LFI, KNUMER, KNIMES, KCODE, LDFATA, 
00003      S                      CDMESS, CDNSPR,CDACTI )
00004       USE LFIMOD, ONLY : LFICOM
00005       USE PARKIND1, ONLY : JPRB
00006       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
00007 C****
00008 C        THIS SUBROUTINE PRINTS STANDARD MESSAGES FROM LFI INDEXED-
00009 C     FILE SOFTWARE, ABORTING PROGRAM IF REQUIRED.
00010 C        Messages related to "debugging mode" are directly printed
00011 C     by concerned subroutines.
00012 C
00013 C        This subroutine is the english version, translated from the
00014 C     the original (french) one, and is always called through the
00015 C     "hat" routine LFIEMS.
00016 C     For french version see subroutine LFIEFR.
00017 C     ( Pour la version francaise, voir LFIEFR )
00018 C**
00019 C  DUMMY ARGUMENTS : KNUMER ==> Logical Unit concerned, if any;
00020 C  ( all INPUT ones )           ( if LFI%JPNIL ==> no Logical Unit )
00021 C                    KNIMES ==> Level (0,1,2) of Message;
00022 C                    KCODE  ==> Response code of action concerned;
00023 C                    LDFATA ==> True if Abort of program is required;
00024 C                    CDMESS ==> If KNIMES#0, Message to print;
00025 C                    CDNSPR ==> Subroutine name which calls LFIEMS;
00026 C                    CDACTI ==> Name of FORTRAN input/output action
00027 C                               if KCODE >0, else... it depends !
00028 C*
00029 C     !----------------------------------------------------------------!
00030 C     !   TABLE OF POSSIBLE VALUES FOR RESPONSE CODES OF LFI SOFTWARE  !
00031 C     !----------------------------------------------------------------!
00032 C
00033 C-----------------------------------------------------------------------
00034 C      0 ==> No error has been detected, everything is OK.
00035 C-----------------------------------------------------------------------
00036 Cpositive==> It is the (absolute value of) FORTRAN response code
00037 C  value     from an OPEN, READ, WRITE, CLOSE or INQUIRE instruction;
00038 C            see vendor's reference manual for exact meaning.
00039 C-----------------------------------------------------------------------
00040 C     -1 ==> Logical Unit currently not opened for the software.
00041 C-----------------------------------------------------------------------
00042 C     -2 ==> "LEVEL" value outside [0-2] range .
00043 C-----------------------------------------------------------------------
00044 C     -3 ==> Bad lock option (internal subroutine "LFIVER") .
00045 C-----------------------------------------------------------------------
00046 C     -4 ==> Explicit change for Multi-Tasking mode, but almost one unit
00047 C            is currently open-problems may arise (subroutine "LFIINI").
00048 C-----------------------------------------------------------------------
00049 C     -5 ==> Logical Unit is currently opened (LFIOUV, LFIAFM, LFISFM) .
00050 C-----------------------------------------------------------------------
00051 C     -6 ==> Not enough space within tables to open requested Unit.
00052 C            (LFIOUV)
00053 C-----------------------------------------------------------------------
00054 C     -7 ==> Invalid "STATUS" for FORTRAN instruction "OPEN" (LFIOUV) .
00055 C-----------------------------------------------------------------------
00056 C     -8 ==> Incompatible values given for "LDNOMM" and "CDSTTO":
00057 C            a file which "STATUS" is 'OLD' or 'NEW' must have a name .
00058 C            (LFIOUV) (THIS REPONSE CODE HAS CURRENTLY NO MORE SENSE)
00059 C-----------------------------------------------------------------------
00060 C     -9 ==> Incompatibility between "STATUS" 'NEW' or 'OLD' and (respe-
00061 C            ctively) file existence or non-existence (LFIOUV) .
00062 C-----------------------------------------------------------------------
00063 C    -10 ==> The file is not a LFI one, or may not be treated through
00064 C            this configuration or version of the software (LFIOUV) .
00065 C-----------------------------------------------------------------------
00066 C    -11 ==> File not closed after a modification (LFIOUV): this
00067 C            error is not fatal if "LDERFA" is .FALSE., but in such a
00068 C            case file integrity and data coherence are not guaranteed.
00069 C            Note that once a file has got such problem, this response
00070 C            code will stay even after a subsequent modification.
00071 C-----------------------------------------------------------------------
00072 C    -12 ==> File has a "STATUS" 'OLD' but an error occurred when
00073 C            reading the first physical record of file (LFIOUV) .
00074 C-----------------------------------------------------------------------
00075 C    -13 ==> File is already open for another LFI logical unit.
00076 C            (LFIOUV)
00077 C-----------------------------------------------------------------------
00078 C    -14 ==> Incorrect value for INTEGER argument (generally negative) .
00079 C-----------------------------------------------------------------------
00080 C    -15 ==> Incorrect CHARACTER argument (too long, for instance).
00081 C-----------------------------------------------------------------------
00082 C    -16 ==> Incoherence in Tables, File, internal calls, software.
00083 C            THIS ERROR MAY NEVER BE FILTERED. ALWAYS FATAL.
00084 C-----------------------------------------------------------------------
00085 C    -17 ==> Too many logical records to store an extra one (LFIECR) .
00086 C            (note that logical records consist of user-readable data
00087 C             records, but also of holes cataloged in index... which are
00088 C             created when existing records may not be rewritten in
00089 C             place, or when records are suppressed; such holes may be
00090 C             "re-cycled")
00091 C-----------------------------------------------------------------------
00092 C    -18 ==> A logical record name formed only with SPACES is invalid.
00093 C            (for internal use of LFI software, holes in index are
00094 C             described by a blank record name)
00095 C-----------------------------------------------------------------------
00096 C    -19 ==> File opened with "STATUS" set to 'SCRATCH', so may not be
00097 C            kept at CLOSE time: 'KEEP' is illicit for "CDSTTC" (LFIFER)
00098 C            if this error is not fatal, then a FORTRAN "CLOSE" without
00099 C            "STATUS" parameter is performed, in the same manner as if
00100 C            "CDSTTC" is neither 'KEEP' nor 'DELETE'.
00101 C-----------------------------------------------------------------------
00102 C    -20 ==> No logical record with such name found within logical unit.
00103 C            (LFILEC, LFIREN, LFISUP)
00104 C-----------------------------------------------------------------------
00105 C    -21 ==> Requested logical record is LONGER (has more data) in file;
00106 C            if this error is not fatal, then a PARTIAL read is
00107 C            performed, at requested length.
00108 C            (LFILAP, LFILAS, LFILEC)
00109 C-----------------------------------------------------------------------
00110 C    -22 ==> Requested logical record SHORTER (has less data) in file;
00111 C            even if this error is not fatal, NO READING OF DATA OCCURS.
00112 C            (LFILAP, LFILAS, LFILEC) .
00113 C-----------------------------------------------------------------------
00114 C    -23 ==> No or no more "NEXT" record to read (LFILAS) .
00115 C-----------------------------------------------------------------------
00116 C    -24 ==> The character variable given as actual output argument is
00117 C            TOO SHORT to store the record NAME, even when suppressing
00118 C            any spaces at the end of the name.
00119 C            (LFICAP, LFICAS, LFILAP, LFILAS)
00120 C-----------------------------------------------------------------------
00121 C    -25 ==> The new name of the logical record is (already) used for
00122 C            another logical record within the file (LFIREN).
00123 C-----------------------------------------------------------------------
00124 C    -26 ==> No or no more "PREVIOUS" logical record to read (LFILAP).
00125 C-----------------------------------------------------------------------
00126 C    -27 ==> Insufficient CONTIGUOUS space within tables to treat the
00127 C            "multiple" file requested (LFIOUV) .
00128 C-----------------------------------------------------------------------
00129 C    -28 ==> Multiply factor (of elementary physical record length) too
00130 C            big for the current configuration of the software.
00131 C            (LFIOUV, LFIAFM, LFIFMD)
00132 C-----------------------------------------------------------------------
00133 C    -29 ==> Not enough space within tables to store the multiply factor
00134 C            to be associated to logical unit (LFIAFM) .
00135 C-----------------------------------------------------------------------
00136 C    -30 ==> Logical unit number invalid for FORTRAN.
00137 C-----------------------------------------------------------------------
00138 C    -31 ==> Logical unit has no multiply factor predefined.
00139 C            (LFISFM)
00140 C-----------------------------------------------------------------------
00141 C
00142 #ifndef f77
00143       USE SDL_MOD   , ONLY : SDL_SRLABORT
00144 #endif
00145 #ifndef f77
00146 #include "precision.h"
00147 #endif
00148 C
00149       TYPE(LFICOM) :: LFI
00150       INTEGER KNUMER, KNIMES, KCODE, ILDMES, ILBLAN, INLNOM, INUMER
00151       INTEGER IDECBL, IPOSBL, ILACTI, ILACT2, ILNSPR, ILMESU, IJL, J, IJ
00152       INTEGER INBALO, ILMESA, INLIGN, IDECAL
00153 C
00154       LOGICAL LDFATA
00155 C
00156       CHARACTER  CDNSPR*(*), CLJOLI*6, CDMESS*(*), CLMESA*80, CDACTI*(*)
00157 C
00158 #include "lficom2.h"
00159 #include "lficom_mt.h"
00160 C**
00161 C     1.  -  INITIALISATIONS.
00162 C-----------------------------------------------------------------------
00163 C
00164 C        Search for "useful" length of argument CDACTI.
00165 C        (i.e. not taking into account any blank characters at the end)
00166 C
00167       REAL(KIND=JPRB) :: ZHOOK_HANDLE
00168       IF (LHOOK) CALL DR_HOOK('LFIENG_MT',0,ZHOOK_HANDLE)
00169       IDECBL=0
00170 C
00171   101 CONTINUE
00172       IPOSBL=IDECBL+INDEX (CDACTI(IDECBL+1:),' ')
00173 C
00174       IF (IPOSBL.LE.IDECBL) THEN
00175         ILACTI=LEN (CDACTI)
00176       ELSEIF (CDACTI(IPOSBL:).EQ.' ') THEN
00177         ILACTI=IPOSBL-1
00178       ELSE
00179         IDECBL=IPOSBL
00180         GOTO 101
00181       ENDIF
00182 C
00183       ILACT2=MIN0 (ILACTI,LFI%JPNCPN)
00184       ILACTI=MIN0 (ILACT2,8)
00185       ILNSPR=MIN0 (LEN (CDNSPR),LFI%JPLSPX)
00186 C
00187 C        Prefix (and possible suffix) for the message(s).
00188 C
00189       IF (LDFATA) THEN
00190         CLJOLI=' *****'
00191       ELSEIF (KNIMES.EQ.0.OR.KCODE.NE.0) THEN
00192         CLJOLI=' */*/*'
00193       ELSE
00194         CLJOLI=' /////'
00195       ENDIF
00196 C
00197       IF (KNIMES.NE.0) THEN
00198 C**
00199 C     2.  -  PRINTS MESSAGE PREPARED BY SUBROUTINE WHICH CALLED LFIEMS.
00200 C-----------------------------------------------------------------------
00201 C
00202         ILMESU=MIN0 (LEN (CLMESS)-
00203      S         LEN (CLJOLI)-ILNSPR-4,LEN (CDMESS))
00204         CLMESS=CLJOLI//' '//CDNSPR(1:ILNSPR)//' - '
00205      S             //CDMESS(1:ILMESU)
00206         WRITE (UNIT=LFI%NULOUT,FMT='(A)') CLMESS
00207       ENDIF
00208 C
00209       IF (KNIMES.EQ.0.OR.LDFATA) THEN
00210 C**
00211 C     3.  -  CONSTITUTION OF "AD HOC" MESSAGE, DEPENDING OF *KCODE*.
00212 C-----------------------------------------------------------------------
00213 C
00214 C     Before, check if logical unit considered corresponds to a logical
00215 C     unit currently opened for LFI software (or not).
00216 C
00217         IF (KNUMER.EQ.LFI%JPNIL) THEN
00218           IJL=0
00219         ELSE
00220 C
00221           DO 301 J=1,LFI%NBFIOU
00222           IJL=LFI%NUMIND(J)
00223           IF (KNUMER.EQ.LFI%NUMERO(IJL)) GOTO 302
00224   301     CONTINUE
00225 C
00226           IJL=0
00227         ENDIF
00228 C
00229   302   CONTINUE
00230 C
00231         IF (KCODE.GT.0) THEN
00232 C
00233           IF ((CDACTI.EQ.'READ'.OR.CDACTI.EQ.'WRITE')
00234      S        .AND.LFI%NUMAPH(IJL).GT.0) THEN
00235             WRITE (UNIT=CLMESS,FMT='(''ERROR "'',A,''"'
00236 ',I7,     S             '',UNIT'',I3,'',REC.NUM'',I6,'',*'
00237 ',I6,     S             '' WORDS'')') CDACTI(1:ILACTI),KCODE,KNUMER,
00238      S                            LFI%NUMAPH(IJL),
00239      S                            LFI%JPLARD*LFI%MFACTM(IJL)
00240           ELSE
00241             WRITE (UNIT=CLMESS,
00242      S             FMT='(''FORTRAN "'',A,''" ERROR, CODE='
00243 '     S             ,I7,'', UNIT='',I3)') CDACTI(1:ILACTI),KCODE,KNUMER
00244           ENDIF
00245 C
00246         ELSEIF (KCODE.EQ.-1) THEN
00247           WRITE (UNIT=CLMESS,FMT='(''LOGICAL UNIT'
00248 ',I3,     S           '' NOT OPENED FOR LFI SOFTWARE'')') KNUMER
00249 C
00250         ELSEIF (KCODE.EQ.-2) THEN
00251 C
00252           IF (KNUMER.EQ.LFI%JPNIL) THEN
00253             CLMESS='ACTUAL VALUE FOR LEVEL "KNIVAU" '//
00254      S                 'OUTSIDE [0-2] RANGE'
00255           ELSE
00256             WRITE (UNIT=CLMESS,FMT=
00257      S   '(''MESSAGE LEVEL OUTSIDE [0-2] RANGE, UNIT'',I3)') KNUMER
00258           ENDIF
00259 C
00260         ELSEIF (KCODE.EQ.-3) THEN
00261           ILDMES=MIN0 (8,LEN (CDMESS))
00262           CLMESS='UNKNOWN ACTION '''//CDMESS(1:ILDMES)
00263      S           //''' ON LOCKS'
00264 C
00265         ELSEIF (KCODE.EQ.-4) THEN
00266           CLMESS='EXPL.CHANGE OF MULTI-TASKING MODE '//
00267      S               'WITH UNIT(S) OPENED'
00268 C
00269         ELSEIF (KCODE.EQ.-5) THEN
00270           WRITE (UNIT=CLMESS,FMT='(''LOGICAL UNIT'
00271 ',I3,     S          '' ALREADY OPENED FOR LFI - AND SHOULD NOT.'')') KNUMER
00272 C
00273         ELSEIF (KCODE.EQ.-6) THEN
00274           WRITE (UNIT=CLMESS,FMT='(I3,'' ENTRIES,'
00275 ',     S    '' NOT ENOUGH PLACE WITHIN TABLES FOR UNIT'',I3)')
00276      S    LFI%JPNXFI,KNUMER
00277 C
00278         ELSEIF (KCODE.EQ.-7) THEN
00279           WRITE (UNIT=CLMESS,FMT='(''FORTRAN STATUS'''''
00280 ',A,     S           '''''' UNKNOWN, UNIT'',I3)') CDACTI(1:ILACTI),KNUMER
00281 C
00282         ELSEIF (KCODE.EQ.-8) THEN
00283           WRITE (UNIT=CLMESS,FMT='(''UNIT'',I3,'' OF STATUS '''''
00284 '     S,A,'''''' MUST HAVE AN EXPLICIT NAME'')') KNUMER,CDACTI(1:ILACTI)
00285 C
00286         ELSEIF (KCODE.EQ.-9) THEN
00287 C
00288         IF (CDACTI.EQ.'OLD') THEN
00289           WRITE (UNIT=CLMESS,FMT=
00290      S'(''STATUS ''''OLD'''' BUT FILE DOES NOT EXIST, UNIT'
00291 ',     S      I3)') KNUMER
00292         ELSE
00293           ILBLAN=INDEX (CDACTI(1:ILACTI),' ')
00294           IF (ILBLAN.GT.1) ILACTI=ILBLAN-1
00295           WRITE (UNIT=CLMESS,FMT=
00296      S'(''STATUS '''''',A,'''''' BUT FILE ALREADY EXISTS, UNIT'
00297 ',     S  I3)') CDACTI(1:ILACTI),KNUMER
00298         ENDIF
00299 C
00300         ELSEIF (KCODE.EQ.-10) THEN
00301           WRITE (UNIT=CLMESS,FMT='(''INCOMPATIBILITY'
00302 ',     S           '' FILE / SOFTWARE, UNIT'',I3)') KNUMER
00303 C
00304         ELSEIF (KCODE.EQ.-11) THEN
00305           WRITE (UNIT=CLMESS,
00306      S           FMT='(''UNIT'',I3,'' NOT CLOSED AFTER '
00307 ',     S           ''ITS LAST MODIFICATION'')') KNUMER
00308 C
00309         ELSEIF (KCODE.EQ.-12) THEN
00310           WRITE (UNIT=CLMESS,FMT='(''UNIT'
00311 ',I3,     S  '' OF STATUS ''''OLD'''' - READ OF FIRST RECORD FAILED'')')
00312      S       KNUMER
00313 C
00314         ELSEIF (KCODE.EQ.-13) THEN
00315           INLNOM=1
00316           INUMER=LFI%JPNIL
00317 C
00318           DO 131 J=1,LFI%NBFIOU
00319           IJ=LFI%NUMIND(J)
00320 C
00321           IF (CDACTI.EQ.LFI%CNOMFI(IJ)) THEN
00322             INUMER=LFI%NUMERO(IJ)
00323             INLNOM=MIN0 (LFI%NLNOMF(IJ),LEN (CLMESS)-3)
00324             GOTO 132
00325           ENDIF
00326 C
00327   131     CONTINUE
00328 C
00329   132     CONTINUE
00330           CLMESS=' '''//CDACTI(1:INLNOM)//''''
00331           WRITE (UNIT=LFI%NULOUT,FMT='(A)') CLMESS
00332           WRITE (UNIT=CLMESS,FMT='(''UNIT'',I3,'' - FILE '
00333 ',     S           ''ALREADY OPEN WITH UNIT'',I3)') KNUMER,INUMER
00334 C
00335         ELSEIF (KCODE.EQ.-14) THEN
00336 C
00337           IF (CDNSPR.EQ.'LFIECR'.OR.CDNSPR.EQ.'LFILEC'.OR.
00338      S        CDNSPR.EQ.'LFILAS'.OR.CDNSPR.EQ.'LFILAP') THEN
00339             WRITE (UNIT=CLMESS,FMT=
00340      S   '(''INCORRECT RECORD LENGTH, UNIT'',I3)') KNUMER
00341           ELSEIF (KNUMER.EQ.LFI%JPNIL) THEN
00342             CLMESS='INCORRECT ENTRY IN *LFI%NUMERO* TABLE'
00343           ELSE
00344             WRITE (UNIT=CLMESS,FMT=
00345      S   '(''INCORRECT INTEGER TYPE ARGUMENT, UNIT'',I3)') KNUMER
00346           ENDIF
00347 C
00348         ELSEIF (KCODE.EQ.-15) THEN
00349           WRITE (UNIT=CLMESS,FMT='(''RECORD NAME INCORRECT OR '
00350 ',     S           ''TOO LONG, UNIT'',I3)') KNUMER
00351 C
00352         ELSEIF (KCODE.EQ.-16) THEN
00353           WRITE (UNIT=CLMESS,FMT='(''INCOHERENCE (TABLES, FILE, '
00354 ',     S           ''INTERNAL CALLS, SOFTWARE), UNIT'',I3)') KNUMER
00355 C
00356         ELSEIF (KCODE.EQ.-17) THEN
00357 C
00358           IF (IJL.NE.0) THEN
00359             INBALO=LFI%MDES1D(IXM(LFI%JPNALO,IJL))
00360           ELSE
00361             INBALO=LFI%JPNIL
00362           ENDIF
00363 C
00364           WRITE (UNIT=CLMESS,
00365      S           FMT='(I6,'' RECORDS, INDEX FULL, UNIT'
00366 ',     S           I3)') INBALO,KNUMER
00367 C
00368         ELSEIF (KCODE.EQ.-18) THEN
00369           WRITE (UNIT=CLMESS,FMT='(''BLANK RECORD NAME IS INVALID'
00370 ',     S           '', UNIT'',I3)') KNUMER
00371 C
00372         ELSEIF (KCODE.EQ.-19) THEN
00373           WRITE (UNIT=CLMESS,FMT='(''UNIT'
00374 ',I3,     S           '' IS ''''SCRATCH'''', SO MAY NOT BE KEPT'')') KNUMER
00375 C
00376         ELSEIF (KCODE.EQ.-20) THEN
00377           WRITE (UNIT=CLMESS,FMT='(''RECORD "'
00378 ',A,     S           ''" NOT FOUND, UNIT'',I3)') CDACTI(1:ILACT2),KNUMER
00379 C
00380         ELSEIF (KCODE.EQ.-21) THEN
00381           WRITE (UNIT=CLMESS,FMT='(''RECORD "'
00382 ',A,     S    ''" *LONGER* THAN REQUESTED, UNIT'',I3)')
00383      S      CDACTI(1:ILACT2),KNUMER
00384 C
00385         ELSEIF (KCODE.EQ.-22) THEN
00386           WRITE (UNIT=CLMESS,FMT='(''RECORD "'
00387 ',A,     S    ''" *SHORTER* THAN REQUESTED-UNIT'',I3)')
00388      S      CDACTI(1:ILACT2),KNUMER
00389 C
00390         ELSEIF (KCODE.EQ.-23) THEN
00391           WRITE (UNIT=CLMESS,FMT='(''NO/NO MORE NEXT RECORD'
00392 ',     S    '' TO READ, UNIT'',I3)') KNUMER
00393 C
00394         ELSEIF (KCODE.EQ.-24) THEN
00395           WRITE (UNIT=CLMESS,FMT='(''CHARAC. VARIABLE TOO SHORT '
00396 ',     S    ''FOR "'',A,''", UNIT'',I3)')
00397      S      CDACTI(1:ILACT2),KNUMER
00398 C
00399         ELSEIF (KCODE.EQ.-25) THEN
00400           WRITE (UNIT=CLMESS,FMT='(''NEW RECORD NAME: "'
00401 ',A,     S    ''" ALREADY USED, UNIT'',I3)')
00402      S      CDACTI(1:ILACT2),KNUMER
00403 C
00404         ELSEIF (KCODE.EQ.-26) THEN
00405           WRITE (UNIT=CLMESS,FMT='(''NO/NO MORE PREVIOUS RECORD '
00406 ',     S    '' TO READ, UNIT'',I3)') KNUMER
00407 C
00408         ELSEIF (KCODE.EQ.-27) THEN
00409           WRITE (UNIT=CLMESS,
00410      S           FMT='(''INSUFFICIENT CONTIGUOUS SPACE WI'
00411 ',     S    ''THIN TABLES, UNIT'',I3)') KNUMER
00412 C
00413         ELSEIF (KCODE.EQ.-28) THEN
00414 C
00415           IF (KNUMER.EQ.LFI%JPNIL) THEN
00416             WRITE (UNIT=CLMESS,
00417      S             FMT='(''NEW DEFAULT MULTIPLY FACTOR EX'
00418 ',     S      ''CEEDS MAXIMUM ('',I3,'')'')') LFI%JPFACX
00419           ELSE
00420             WRITE (UNIT=CLMESS,FMT='(''SPECIFIED MULTIPLY FACTOR '
00421 ',     S      ''EXCEEDS MAXIMUM ('',I3,''), UNIT'',I3)') LFI%JPFACX,KNUMER
00422           ENDIF
00423 C
00424         ELSEIF (KCODE.EQ.-29) THEN
00425           WRITE (UNIT=CLMESS,FMT='(I3,'' ENTRIES,'
00426 ',     S    '' NO MORE PLACE FOR MULTIPLY FACTOR, UNIT'',I3)')
00427      S    LFI%JPXUFM,KNUMER
00428 C
00429         ELSEIF (KCODE.EQ.-30) THEN
00430           WRITE (UNIT=CLMESS,FMT='(''INVALID FORTRAN LOGICAL UNIT'
00431 ',     S           '' NUMBER:'',I8)') KNUMER
00432 C
00433         ELSEIF (KCODE.EQ.-31) THEN
00434           WRITE (UNIT=CLMESS,FMT='(''LOGICAL UNIT NUMBER'
00435 ',I3,     S       '' HAS NO PREDEFINED MULTIPLY FACTOR'')') KNUMER
00436 C
00437 C                  For unexpected error codes...
00438 C
00439         ELSEIF (KNUMER.EQ.LFI%JPNIL) THEN
00440           WRITE (UNIT=CLMESS,FMT='(''*UNKNOWN* GLOBAL ERROR CODE'
00441 ',     S                             I6)') KCODE
00442         ELSE
00443           WRITE (UNIT=CLMESS,FMT='(''*UNKNOWN* ERROR CODE'
00444 ',I6,     S           '' ON LOGICAL UNIT'',I3)') KCODE,KNUMER
00445         ENDIF
00446 C
00447         ILMESA=LEN (CLMESA)
00448         ILMESU=ILMESA-1-2*LEN (CLJOLI)-ILNSPR-4
00449         CLMESA=CLJOLI//' '//CDNSPR(1:ILNSPR)//' - '//
00450      S         CLMESS(1:ILMESU)//CLJOLI
00451         WRITE (UNIT=LFI%NULOUT,FMT='(A)') CLMESA
00452 C
00453 C           If logical unit corresponds to a LFI logical unit
00454 C     already opened, its name is printed.
00455 C
00456         IF (IJL.NE.0) THEN
00457 C
00458           IF (LFI%NLNOMF(IJL).LE.LFI%JPLFTX) THEN
00459             WRITE (UNIT=LFI%NULOUT,FMT='(A,/)') CLJOLI
00460      S             //' NAME - APPEARENT BUT'
00461      S             //' COMPLETE - OF LFI LOGICAL UNIT CONCERNED:'
00462           ELSE
00463             WRITE (UNIT=CLMESS,FMT=
00464 '(A,     S             '' NAME - APPEARENT, AND TRUNCATED BY'
00465 ',I4,     S       '' CARACTERES - OF LFI LOGICAL UNIT CONCERNED:'')')
00466      S      CLJOLI,LFI%NLNOMF(IJL)-LFI%JPLFTX
00467             WRITE (UNIT=LFI%NULOUT,FMT='(A,/)') CLMESS
00468           ENDIF
00469 C
00470           INLIGN=(LFI%NLNOMF(IJL)-1)/LFI%JPLFIX
00471           IDECAL=0
00472 C
00473           DO 801 J=1,INLIGN
00474           WRITE (UNIT=LFI%NULOUT,FMT='(A)')
00475      S           LFI%CNOMFI(IJL)(IDECAL+1:IDECAL+LFI%JPLFIX)//'...'
00476           IDECAL=IDECAL+LFI%JPLFIX
00477   801     CONTINUE
00478 C
00479           IF (LFI%NLNOMF(IJL).LE.LFI%JPLFTX) THEN
00480             WRITE (UNIT=LFI%NULOUT,FMT='(A,/)') 
00481      S             LFI%CNOMFI(IJL)(IDECAL+1:LFI%NLNOMF(IJL))
00482           ELSE
00483             WRITE (UNIT=LFI%NULOUT,FMT='(A,/)') 
00484      S             LFI%CNOMFI(IJL)(IDECAL+1:LFI%JPLFTX)
00485      S             //'...'
00486           ENDIF
00487 C
00488           IF (LFI%CNOMSY(IJL).NE.LFI%CNOMFI(IJL)) THEN
00489             WRITE (UNIT=LFI%NULOUT,FMT='(A,/)') CLJOLI//
00490      S ' *SYSTEM* NAME (APPEARENT) OF LFI LOGICAL UNIT CONCERNED:'
00491             INLIGN=(LFI%NLNOMS(IJL)-1)/LFI%JPLFIX
00492             IDECAL=0
00493 C
00494             DO 802 J=1,INLIGN
00495             WRITE (UNIT=LFI%NULOUT,FMT='(A)')
00496      S             LFI%CNOMSY(IJL)(IDECAL+1:IDECAL+LFI%JPLFIX)//'...'
00497             IDECAL=IDECAL+LFI%JPLFIX
00498   802       CONTINUE
00499 C
00500             WRITE (UNIT=LFI%NULOUT,FMT='(A,/)') 
00501      S             LFI%CNOMSY(IJL)(IDECAL+1:LFI%NLNOMS(IJL))
00502           ENDIF
00503 C
00504         ENDIF
00505 C
00506         WRITE (UNIT=LFI%NULOUT,FMT='(A)') CLMESA
00507         IF (LDFATA.AND.KCODE.NE.0) THEN
00508 C
00509 C            Aborts program.
00510 C
00511           CALL SDL_SRLABORT
00512         ENDIF
00513 C
00514       ENDIF
00515 C
00516       IF (LHOOK) CALL DR_HOOK('LFIENG_MT',1,ZHOOK_HANDLE)
00517       END
00518