SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/XRD38/FA/mt/falais_mt.F
Go to the documentation of this file.
00001 C Jan-2011 P. Marguinaud Thread-safe FA
00002       SUBROUTINE FALAIS_MT (FA,  KREP, KNUMER, CDNOMA, PDONNE, KLONGD )
00003       USE FA_MOD, ONLY : FA_COM
00004       USE PARKIND1, ONLY : JPRB
00005       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
00006 C****
00007 C      Sous-programme de lecture d'un article de donnees non assimila-
00008 C     bles a un champ horizontal sur un fichier ARPEGE.
00009 C       ( Lecture d'un Article Integre Simplement, non code )
00010 C**
00011 C    Arguments : KREP   (Sortie) ==> Code-reponse du sous-programme;
00012 C                KNUMER (Entree) ==> Numero de l'unite logique;
00013 C                CDNOMA (Entree) ==> Nom de l'article;
00014 C    ( Tableau ) PDONNE (Entree) ==> Donnees a ecrire;
00015 C                KLONGD (Entree) ==> Nombre de mots a ecrire.
00016 C
00017 #include "precision.h"
00018 C
00019 C
00020       TYPE(FA_COM) :: FA
00021       INTEGER KREP, KNUMER, KLONGD
00022 C
00023       INTEGER ILCDNO, IREP, IRANG, ILNOMA, INIMES, ILACTI
00024 C
00025       REAL (KIND=JPDBLR) PDONNE (KLONGD)
00026 C
00027       LOGICAL LLVERF, LLRLFI
00028 C
00029       CHARACTER CDNOMA*(*)
00030 C
00031 #include "facom2.h"
00032 #include "facom_mt.h"
00033 C**
00034 C     1.  -  CONTROLES ET INITIALISATIONS.
00035 C-----------------------------------------------------------------------
00036 C
00037       REAL(KIND=JPRB) :: ZHOOK_HANDLE
00038       IF (LHOOK) CALL DR_HOOK('FALAIS_MT',0,ZHOOK_HANDLE)
00039       LLVERF=.FALSE.
00040       LLRLFI=.FALSE.
00041       ILCDNO=LEN (CDNOMA)
00042       CALL FANUMU_MT (FA, KNUMER,IRANG)
00043 C
00044       IF (IRANG.EQ.0) THEN
00045         IREP=-51
00046         GOTO 1001
00047       ELSEIF (KLONGD.LE.0) THEN
00048         IREP=-64
00049         GOTO 1001
00050       ELSEIF (ILCDNO.LE.0) THEN
00051         IREP=-65
00052         GOTO 1001
00053       ENDIF
00054 C
00055 C         Verrouillage eventuel du fichier.
00056 C
00057       IF (FA%LFAMUL) CALL LFIVER_MT (FA%LFI, FA%VRFICH(IRANG),'ON')
00058       LLVERF=FA%LFAMUL
00059 C
00060       IF (FA%LCREAF(IRANG)) THEN
00061         IREP=-85
00062         GOTO 1001
00063       ELSEIF (CDNOMA.EQ.FA%CPCACH.OR.CDNOMA.EQ.FA%CPCADI.OR.
00064      S    CDNOMA.EQ.FA%CPCAFS.OR.CDNOMA.EQ.FA%CPCARP.OR.
00065      S    CDNOMA.EQ.FA%CPDATE) THEN
00066         IREP=-111
00067         GOTO 1001
00068       ENDIF
00069 C**
00070 C     2.  -  LECTURE DE L'ARTICLE DE DONNEES SUR LE FICHIER.
00071 C-----------------------------------------------------------------------
00072 C
00073       ILNOMA=MIN ( FA%NCPCAD, LEN (CDNOMA) )
00074       CLNOMA(1:ILNOMA)=CDNOMA(1:ILNOMA)
00075 C
00076       CALL LFILEC_MT (FA%LFI, IREP,KNUMER,CLNOMA(1:ILNOMA),
00077      S             PDONNE,KLONGD)
00078       LLRLFI=IREP.NE.0
00079 C**
00080 C    10.  -  PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
00081 C            VIA LE SOUS-PROGRAMME "FAIPAR" .
00082 C-----------------------------------------------------------------------
00083 C
00084  1001 CONTINUE
00085       KREP=IREP
00086       LLFATA=LLMOER (IREP,IRANG)
00087 C
00088 C        Deverrouillage eventuel du fichier.
00089 C
00090       IF (LLVERF) CALL LFIVER_MT (FA%LFI, FA%VRFICH(IRANG),'OFF')
00091 C
00092       IF (LLFATA) THEN
00093         INIMES=2
00094       ELSE
00095         INIMES=IXNVMS(IRANG)
00096       ENDIF
00097 C
00098       IF (.NOT.LLFATA.AND.INIMES.NE.2)  THEN 
00099         IF (LHOOK) CALL DR_HOOK('FALAIS_MT',1,ZHOOK_HANDLE)
00100         RETURN
00101       ENDIF
00102 C
00103       CLNSPR='FALAIS'
00104 C
00105       IF (IREP.NE.-65) THEN
00106         ILACTI=MIN (ILCDNO,FA%NCPCAD)
00107         CLACTI(1:ILACTI)=CDNOMA(:ILACTI)
00108       ELSE
00109         ILACTI=8
00110         CLACTI(1:ILACTI)=FA%CHAINC(:ILACTI)
00111       ENDIF
00112 C
00113       WRITE (UNIT=CLMESS,FMT='(''KREP='',I4,'', KNUMER='
00114 ',I3,     S       '', CDNOMA='''''',A,'''''', KLONGD='',I8)')
00115      S   KREP,KNUMER,CLACTI(1:ILACTI),KLONGD
00116       CALL FAIPAR_MT (FA, KNUMER,INIMES,IREP,LLFATA,CLMESS,
00117      S                CLNSPR,CLACTI(1:ILACTI),LLRLFI)
00118 C
00119       IF (LHOOK) CALL DR_HOOK('FALAIS_MT',1,ZHOOK_HANDLE)
00120       END
00121