SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/XRD38/FA/mt/faisan_mt.F
Go to the documentation of this file.
00001 C Jan-2011 P. Marguinaud Thread-safe FA
00002       SUBROUTINE FAISAN_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 d'ecriture d'un article de donnees non assimila-
00008 C     bles a un champ horizontal sur un fichier ARPEGE.
00009 C       ( Integration Simple d'un Article 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, IRANG, IREP, 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('FAISAN_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.OR.
00066      S    CDNOMA.EQ.FA%CIDENT(IRANG)) THEN
00067         IREP=-111
00068         GOTO 1001
00069       ENDIF
00070 C**
00071 C     2.  -  ECRITURE DE L'ARTICLE DE DONNEES SUR LE FICHIER.
00072 C-----------------------------------------------------------------------
00073 C
00074       ILNOMA=MIN ( FA%NCPCAD, LEN (CDNOMA) )
00075       CLNOMA(1:ILNOMA)=CDNOMA(1:ILNOMA)
00076 C
00077       CALL LFIECR_MT (FA%LFI, IREP,KNUMER,CLNOMA(1:ILNOMA),
00078      S             PDONNE,KLONGD)
00079       LLRLFI=IREP.NE.0
00080 C**
00081 C    10.  -  PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
00082 C            VIA LE SOUS-PROGRAMME "FAIPAR" .
00083 C-----------------------------------------------------------------------
00084 C
00085  1001 CONTINUE
00086       KREP=IREP
00087       LLFATA=LLMOER (IREP,IRANG)
00088 C
00089 C        Deverrouillage eventuel du fichier.
00090 C
00091       IF (LLVERF) CALL LFIVER_MT (FA%LFI, FA%VRFICH(IRANG),'OFF')
00092 C
00093       IF (LLFATA) THEN
00094         INIMES=2
00095       ELSE
00096         INIMES=IXNVMS(IRANG)
00097       ENDIF
00098 C
00099       IF (.NOT.LLFATA.AND.INIMES.NE.2)  THEN 
00100         IF (LHOOK) CALL DR_HOOK('FAISAN_MT',1,ZHOOK_HANDLE)
00101         RETURN
00102       ENDIF
00103 C
00104       CLNSPR='FAISAN'
00105 C
00106       IF (IREP.NE.-65) THEN
00107         ILACTI=MIN (ILCDNO,FA%NCPCAD)
00108         CLACTI(1:ILACTI)=CDNOMA(:ILACTI)
00109       ELSE
00110         ILACTI=8
00111         CLACTI(1:ILACTI)=FA%CHAINC(:ILACTI)
00112       ENDIF
00113 C
00114       WRITE (UNIT=CLMESS,FMT='(''KREP='',I4,'', KNUMER='
00115 ',I3,     S       '', CDNOMA='''''',A,'''''', KLONGD='',I8)')
00116      S   KREP,KNUMER,CLACTI(1:ILACTI),KLONGD
00117       CALL FAIPAR_MT (FA, KNUMER,INIMES,IREP,LLFATA,CLMESS,
00118      S                CLNSPR, CLACTI(1:ILACTI),LLRLFI)
00119 C
00120       IF (LHOOK) CALL DR_HOOK('FAISAN_MT',1,ZHOOK_HANDLE)
00121       END
00122