| SURFEX v7.3
   
    General documentation of Surfex | 
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
 1.8.0
 1.8.0