damoc.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\damocles\damoc.f
00002 !
00071                      SUBROUTINE DAMOC
00072 !                    ****************
00073 !
00074      &( ADRESS , DIMENS , NMAX   , DOC    , LLNG   , LLU    ,
00075      &  MOTINT , MOTREA , MOTLOG , MOTCAR , MOTATT ,
00076      &  DEFINT , DEFREA , DEFLOG , DEFCAR , DEFATT ,
00077      &  USRINT , USRREA , USRLOG , USRCAR , USRATT ,
00078      &  MOTCLE , SIZE   , TROUVE , UTINDX , NFICMO , NFICDA ,
00079      &  INDIC  , GESTD  , NBLANG , RETRY )
00080 !
00081 !***********************************************************************
00082 ! DAMOCLES   V6P0                                   21/08/2010
00083 !***********************************************************************
00084 !
00085 !
00086 !
00087 !
00088 !
00089 !
00090 !
00091 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00092 !| ADRESS         |<--| TABLEAU DES ADRESSES DES MOTS CLES
00093 !| DEFATT         |<--| TABLEAU DES SUBMITS PAR DEFAUT
00094 !| DEFCAR         |<--| TABLEAU DES VALEURS CARACTERES PAR DEFAUT
00095 !| DEFINT         |<--| TABLEAU DES VALEURS ENTIERES PAR DEFAUT
00096 !| DEFLOG         |<--| TABLEAU DES VALEURS LOGIQUES PAR DEFAUT
00097 !| DEFREA         |<--| TABLEAU DES VALEURS REELLES PAR DEFAUT
00098 !| DIMENS         |<--| TABLEAU DES DIMENSIONS DES MOTS CLES
00099 !| DOC            |-->| LOGIQUE DE DOCUMENTATION DE LA SORTIE
00100 !|                |   | = VRAI : IMPRIME L'AIDE (FICHIER RESULTAT)
00101 !|                |   | = FAUX : N'IMPRIME PAS L'AIDE
00102 !| GESTD          |-->| LOGIQUE D'APPEL PAR LE GESTIONNAIRE D'ETUDES
00103 !| INDIC          |<--| TABLEAU D'INDICATEURS D'ETAT DES MOTS CLES
00104 !|                |   | = 0 : PAS DE SUBMIT & NON TABLEAU
00105 !|                |   | = 1 : PAS DE SUBMIT & TABLEAU
00106 !|                |   | = 2 : AVEC   SUBMIT & NON TABLEAU
00107 !|                |   | = 3 : AVEC   SUBMIT & TABLEAU
00108 !| LLNG           |-->| NUMERO DE LA LANGUE DE DECODAGE
00109 !| LLU            |-->| NUMERO DE L'UNITE LOGIQUE DES SORTIES
00110 !| MOTATT         |<--| TABLEAU DES SUBMITS
00111 !| MOTCAR         |<--| TABLEAU DES VALEURS CARACTERES
00112 !| MOTCLE         |<--| TABLEAU DES MOTS CLES ACTIFS
00113 !| MOTINT         |<--| TABLEAU DES VALEURS ENTIERES
00114 !| MOTLOG         |<--| TABLEAU DES VALEURS LOGIQUES
00115 !| MOTREA         |<--| TABLEAU DES VALEURS REELLES
00116 !| NBLANG         |-->| NOMBRE DE LANGUES CONNUES
00117 !| NFICDA         |-->| NUMERO DE CANAL DU FICHIER DES DONNEES
00118 !| NFICMO         |-->| NUMERO DE CANAL DU FICHIER DES MOTS-CLES
00119 !| NMAX           |-->| TAILLE MAXIMALE AUTORISEE POUR LES TABLEAUX
00120 !| RETRY          |---|
00121 !| SIZE           |<--| TABLEAU DES LONGUEURS DES MOTS CLES
00122 !| TROUVE         |<--| INDICATEUR D'ETAT DES MOTS CLES
00123 !|                |   | = 0 : AUCUNE VALEUR TROUVEE
00124 !|                |   | = 1 : VALEUR PAR DEFAUT TROUVEE
00125 !|                |   | = 2 : VALEUR TROUVEE (FICHIER DE DONNEES)
00126 !|                |   | = 3 : AUCUNE VALEUR TROUVEE (OPTIONNELLE)
00127 !|                |   | = 5 : TABLEAU DE MOTS A SUBMIT COMPACTE
00128 !|                |   | = 6 : MOT CLE A SUBMIT FORCE NON AFFECTE
00129 !|                |   | = 7 : MOT CLE A SUBMIT FORCE AFFECTE (DICO)
00130 !|                |   | = 8 : MOT CLE A SUBMIT FORCE AFFECTE (CAS)
00131 !|                |   | = 9 : FICHIER DICO : SUBMIT + VALEUR LANCEUR
00132 !|                |   | =10 : FICHIER CAS  : SUBMIT + VALEUR LANCEUR
00133 !| USRATT         |<--| TABLEAU DES SUBMITS A USAGE LOCAL
00134 !| USRCAR         |<--| TABLEAU DES VALEURS CARACTERES A USAGE LOCAL
00135 !| USRINT         |<--| TABLEAU DES VALEURS ENTIERES A USAGE LOCAL
00136 !| USRLOG         |<--| TABLEAU DES VALEURS LOGIQUES A USAGE LOCAL
00137 !| USRREA         |<--| TABLEAU DES VALEURS REELLES A USAGE LOCAL
00138 !| UTINDX         |<--| TABLEAU DE LOGIQUES D'UTILISATION DES INDEX
00139 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00140 !
00141       IMPLICIT NONE
00142 !
00143       INTEGER          NMAX,LLNG,LLU,NFICMO,NFICDA,NBLANG,RETRY
00144       INTEGER          MOTINT(*),DEFINT(*),USRINT(*)
00145       INTEGER          SIZE(4,*),ADRESS(4,*),DIMENS(4,*)
00146       INTEGER          INDIC(4,*),TROUVE(4,*)
00147       LOGICAL          MOTLOG(*),DEFLOG(*),USRLOG(*),UTINDX(4,*),DOC
00148       CHARACTER*72     MOTCLE(4,*)
00149       CHARACTER*144    MOTATT(4,*),DEFATT(*),USRATT(*)
00150       CHARACTER*144    MOTCAR(*),DEFCAR(*),USRCAR(*)
00151       DOUBLE PRECISION MOTREA(*),DEFREA(*),USRREA(*)
00152 !
00153       INTEGER            INTLU,NEXT,PREV,PREVAL,LONGLU
00154       LOGICAL            LOGLU
00155       CHARACTER(LEN=144) CARLU,PARAM2
00156       DOUBLE PRECISION   REALU
00157 !
00158       INTEGER          LNG,LU
00159       INTEGER          INDX,NTYP,ITAI,LONGU,NMOT(4),DEFLU
00160       INTEGER          NLIGN,LONGLI
00161       INTEGER          NFIC
00162       LOGICAL          ERREUR , RETOUR
00163       CHARACTER(LEN=72)     PARAM
00164 !
00165 !-----------------------------------------------------------------------
00166 !
00167       INTEGER          I,K,IVAL,LCAR,ICOL,JCOL,ILONG,ITYP,NUMERO,I2
00168       INTEGER          DEPLAC,ADD,J,OFFSET(4),NBMOT
00169       INTEGER          TYPIGN(100),LONIGN(100),NMAXR(4),ORDRE
00170       INTEGER          ADSRC,ADDES,NULINT,NVAL,NIGN,L1,LONPRO(15)
00171       LOGICAL          DYNAM,LANGUE,NULLOG,LUIGN,AIDLNG,VUMOT
00172       LOGICAL          ARRET,VUCMD(5),VUCMD0(5),EXECMD,GESTD
00173       CHARACTER*1      PTVIRG,QUOTE
00174       CHARACTER*9      MOTPRO(15),TYPE
00175       CHARACTER*72     MOTIGN(100),LIGNE
00176       CHARACTER*144    NULCAR,TYPE2
00177       DOUBLE PRECISION NULREA
00178 !
00179 !-----------------------------------------------------------------------
00180 !
00181       COMMON / DCINFO / LNG,LU
00182       COMMON / DCRARE / ERREUR , RETOUR
00183       COMMON / DCMLIG / NLIGN , LONGLI
00184       COMMON / DCCHIE / NFIC
00185       COMMON / DCNGE  / INDX,NTYP,ITAI,LONGU,NMOT,DEFLU
00186       COMMON / DCNGEC / PARAM
00187 !
00188       EXTERNAL CARLU,INTLU,LOGLU,REALU,NEXT,PREV,PREVAL,LONGLU
00189 !
00190 !-----------------------------------------------------------------------
00191 !
00192       DATA MOTPRO /'NOM','TYPE','INDEX','TAILLE','DEFAUT','AIDE',
00193      & 'CHOIX','RUBRIQUE','NIVEAU','MNEMO','COMPOSE','COMPORT',
00194      & 'CONTROLE','APPARENCE','SUBMIT'/
00195 !     LENGTH OF THE PROTECTED WORDS
00196       DATA LONPRO /3,4,5,6,6,4,5,8,6,5,7,7,8,9,6/
00197 !
00198 !***********************************************************************
00199 !                                    RCS AND SCCS MARKING
00200 !
00201 !***********************************************************************
00202 !
00203 !     TYPE NUMBERING :    1 : INTEGER
00204 !                         2 : REAL
00205 !                         3 : LOGICAL
00206 !                         4 : CHARACTER
00207 !
00208 !     MOTPRO(I)   : IEME MOT RESERVE POUR LE PROGRAMME (NOM,TYPE,...)
00209 !     MOTCLE(I,J) : NOM DU JIEME MOT-CLE DE TYPE I
00210 !     DIMENS(I,J) : DIMENSION DU JIEME MOT-CLE DE TYPE I
00211 !     ADRESS(I,J) : ADRESSE DU JIEME MOT-CLE DE TYPE I DANS LE TABLEAU
00212 !     MOTINT(I)   : IEME RESULTAT ENTIER
00213 !     MOTREA(I)   : IEME RESULTAT REEL
00214 !     MOTLOG(I)   : IEME RESULTAT LOGIQUE
00215 !     MOTCAR(I)   : IEME RESULTAT CARACTERE
00216 !     MOTATT(I,J) : JEME SUBMIT DU TYPE I
00217 !     SIZE(I,J)   : LONGUEUR DU JIEME MOT-CLE DE TYPE I
00218 !     TROUVE(I,J) : CONCERNE LE JIEME MOT-CLE DE TYPE I
00219 !     INDIC(I,J)  : CONCERNE LE JIEME MOT-CLE DE TYPE I
00220 !     LUIGN       : INDIQUE SI C'EST UN MOT POUR EDAMOX SEULEMENT
00221 !     MOTIGN(I)   : IEME MOT LU DANS LE FICHIER CAS DONNE PAR EDAMOX
00222 !                   ET LU COMME IGNORE DANS LE DICTIONNAIRE
00223 !     DYNAM       : LOGIQUE POUR LE DYNAMIQUE (.TRUE. SI MODE DYNAMIQUE)
00224 !     VUCMD(I)    : TABLEAU DE LOGIQUES (MEMORISATION DES COMMANDES)
00225 !                   I=1->&LIS;I=2->&ETA;I=3->&IND;I=4->&STO;I=5->&FIN
00226 !     EXECMD      : LOGIQUE D'ACTIVATION DES COMMANDES MEMORISEES
00227 !     NMAXR(I)    : INDEX MAXIMUM REELLEMENT UTILISE POUR LE TYPE I
00228 !
00229 !-----------------------------------------------------------------------
00230 !
00231 ! INITIALISES :
00232 !
00233       LU      = LLU
00234       LNG     = LLNG
00235       ARRET   = .FALSE.
00236       ERREUR  = .FALSE.
00237       RETOUR  = .FALSE.
00238       DYNAM   = .FALSE.
00239       EXECMD  = .FALSE.
00240       AIDLNG  = .FALSE.
00241       VUMOT   = .FALSE.
00242       LONGLI  = 72
00243       NFIC    = NFICMO
00244       PTVIRG  = ';'
00245       QUOTE   = ''''
00246 !     TABUL   = CHAR(9)
00247       NBMOT   = 0
00248       NIGN    = 0
00249       ORDRE   = 0
00250       PARAM  = ' '
00251       LONGU  = 0
00252       NTYP   = -100
00253       INDX   =  123456
00254       ITAI   = -100
00255       DEFLU  = 0
00256 !
00257       DO K=1, 5
00258         VUCMD(K) = .FALSE.
00259         VUCMD0(K) = .FALSE.
00260       ENDDO ! K
00261 !
00262       DO K=1,100
00263         MOTIGN(K)= ' '
00264         TYPIGN(K)=1
00265         LONIGN(K)=0
00266       ENDDO ! K
00267 !
00268       DO K=1, 4
00269         NMOT(K) = 0
00270         NMAXR(K) = 0
00271         OFFSET(K) = 1
00272         DO I=1,NMAX
00273           ADRESS(K,I)  = 0
00274           DIMENS(K,I)  = 1
00275           TROUVE(K,I)  = 0
00276           SIZE(K,I)    = 0
00277           UTINDX(K,I)  = .FALSE.
00278           MOTINT(I)    = 0
00279           MOTREA(I)    = 0.
00280           MOTLOG(I)    = .FALSE.
00281           MOTCAR(I)    = ' '
00282           MOTATT(K,I)  = ' '
00283           DEFINT(I)    = 0
00284           DEFREA(I)    = 0.
00285           DEFLOG(I)    = .FALSE.
00286           DEFCAR(I)    = ' '
00287           DEFATT(I)    = ' '
00288           USRINT(I)    = 0
00289           USRREA(I)    = 0.
00290           USRLOG(I)    = .FALSE.
00291           USRCAR(I)    = ' '
00292           USRATT(I)    = ' '
00293           MOTCLE(K,I)  = ' '
00294           INDIC(K,I)   = 0
00295         ENDDO ! I
00296       ENDDO ! K
00297 !
00298 ! CHECKS THE LANGUAGE
00299 !
00300       IF(LNG.LT.1.OR.LNG.GT.NBLANG) THEN
00301         WRITE(LU,*) ' '
00302         WRITE(LU,*) ' CHOIX DE LA LANGUE = ',LNG,' INVALIDE.'
00303         WRITE(LU,*) ' ARRET DE DAMOCLES'
00304         WRITE(LU,*) ' '
00305         CALL PLANTE(1)
00306         STOP
00307       ENDIF
00308 !
00309 ! 99 : NEW FILE   100 : NEW KEYWORD
00310 !
00311   99  CONTINUE
00312 !
00313       ICOL   = LONGLI
00314       NLIGN = 0
00315 !
00316 ! SEEKS THE FIRST NON-WHITE CHARACTER (IGNORES COMMENTED LINES) :
00317 !
00318       ICOL = NEXT(ICOL+1,LIGNE)
00319 !
00320 100   CONTINUE
00321 !
00322 ! IF REACHED THE END OF FILE :
00323 !
00324       IF(RETOUR) GO TO 900
00325 !
00326 ! LOCATES THE COMMANDS STARTING WITH &
00327 !
00328       IF ( LIGNE(ICOL:ICOL).EQ.'&' ) THEN
00329         CALL CMD (ICOL,LIGNE,ADRESS,DIMENS,TROUVE,MOTCLE,NMOT,
00330      &       MOTINT,MOTREA,MOTLOG,MOTCAR,MOTATT,INDIC,SIZE,
00331      &       UTINDX,DYNAM,VUCMD,EXECMD,NFICDA,NMAXR)
00332 !
00333 !     IF FOUND &FIN, ENDS AFTER COMPACTING :
00334         IF (VUCMD(5)) GO TO 900
00335 !     IF FOUND &STO, ENDS FILE READING :
00336         IF (VUCMD(4)) GO TO 1000
00337 !
00338         ICOL = NEXT(ICOL+1,LIGNE)
00339         IF(RETOUR) GO TO 900
00340       ELSE
00341 !
00342         I2 = PREVAL(ICOL+1,LIGNE,'=',':','=')
00343 !       CASE WHERE '=' IS ON THE FOLLOWING LINE
00344         IF(I2.GT.LONGLI) I2=LONGLI
00345         JCOL = PREV  (I2,LIGNE)
00346         ILONG = JCOL - ICOL + 1
00347 !
00348         LUIGN = .FALSE.
00349         IF (NFIC.EQ.NFICMO.AND.INDX.LE.0) LUIGN = .TRUE.
00350 !
00351         CALL DICO(ITYP,NUMERO,ILONG,LIGNE(ICOL:JCOL),
00352      &       MOTCLE,NMOT,MOTPRO,LONPRO,SIZE,UTINDX,LANGUE,
00353      &       AIDLNG,MOTIGN,NIGN,LUIGN,TYPIGN,LONIGN,NFICDA,
00354      &       NBLANG,NMAXR)
00355 !
00356         IF(ERREUR) THEN
00357                        WRITE(LU,*)
00358                        WRITE(LU,*)'************************'
00359           IF(LNG.EQ.1) WRITE(LU,*)'* ARRET DE DAMOCLES    *'
00360           IF(LNG.EQ.2) WRITE(LU,*)'* DAMOCLES STOPPED     *'
00361                        WRITE(LU,*)'************************'
00362           GO TO 900
00363         ENDIF
00364 !
00365 ! STOPS IF THE WORD IS UNKNOWN
00366         IF(ITYP.EQ.0) THEN
00367           ARRET=.TRUE.
00368           GOTO 1300
00369         ENDIF
00370 !
00371         ICOL = PREVAL(ICOL+1,LIGNE,'=',':','=')
00372 !       CASE WHERE '=' IS ON THE FOLLOWING LINE
00373         IF(ICOL.GT.LONGLI) THEN
00374           ICOL  = NEXT(LONGLI,LIGNE)
00375           IF(RETOUR) GO TO 900
00376         ENDIF
00377 !
00378 ! 1) READS AND ASSIGNS A VALUE:
00379 !
00380         IF(ITYP.LE.4) THEN
00381 !
00382 ! A PRIORI THE NUMBER OF VALUES TO READ IS DIMENS(ITYP,NUMERO)
00383 ! BUT MISSING OR ADDITIONAL VALUES ARE TOLERATED
00384 !
00385 ! WHEN THIS IS IDENTIFIED THE VARIOUS ARRAYS ARE UPDATED
00386 !
00387 !
00388           IF (.NOT.(LUIGN)) THEN
00389             NTYP = ITYP
00390             INDX = NUMERO
00391             ITAI = DIMENS(NTYP,INDX)
00392             ADD  = ADRESS(NTYP,INDX)
00393 !           PARAM = MOTCLE(NTYP,INDX)
00394 !           LONGU = LONGLU(PARAM)
00395             IVAL = 1
00396             IF (TROUVE(NTYP,INDX).EQ.2.OR.TROUVE(NTYP,INDX).EQ.8) THEN
00397               WRITE(LU,*) ' '
00398               IF(LNG.EQ.1) THEN
00399                 WRITE(LU,*) 'LE MOT CLE : ',MOTCLE(NTYP,INDX)(1:ILONG)
00400                 WRITE(LU,*) 'EST CITE AU MOINS 2 FOIS, SEULE LA',
00401      &                      ' DERNIERE VALEUR EST CONSERVEE...'
00402               ELSEIF(LNG.EQ.2) THEN
00403                 WRITE(LU,*) 'THE KEY-WORD: ',MOTCLE(NTYP,INDX)(1:ILONG)
00404                 WRITE(LU,*) 'APPPEARS AT LEAST TWICE , THE LAST',
00405      &                      ' VALUE WILL BE KEPT...'
00406               ENDIF
00407               WRITE(LU,*) ' '
00408             ENDIF
00409           ENDIF
00410  10       CONTINUE
00411           IF (.NOT.(LUIGN)) THEN
00412             IF     (NTYP.EQ.1) THEN
00413               DEFINT(IVAL) = INTLU(ICOL,LIGNE)
00414             ELSEIF (NTYP.EQ.2) THEN
00415               DEFREA(IVAL) = REALU(ICOL,LIGNE)
00416             ELSEIF (NTYP.EQ.3) THEN
00417               DEFLOG(IVAL) = LOGLU(ICOL,LIGNE)
00418             ELSEIF (NTYP.EQ.4) THEN
00419               DEFCAR(IVAL) = CARLU(LCAR,ICOL,LIGNE,QUOTE,MOTCLE,
00420      &                             SIZE,MOTIGN,LONIGN,NMAXR,
00421      &                             NFICDA,LEN(DEFCAR(IVAL)))
00422             ENDIF
00423 !
00424 !           JMH CORRECTION 01/03/05
00425 !           SUBMIT FOR A CHARACTER ARRAY
00426 !           THERE IS ONLY ONE; WHEREAS IT WAS PREVIOUSLY ASSUMED
00427 !           THAT THERE WERE AS MANY AS CHARACTER STRINGS ?
00428 !           DEFATT(IVAL) = MOTATT(NTYP,ADD+IVAL-1)
00429             DEFATT(IVAL) = MOTATT(NTYP,ADD)
00430 !
00431 !           CASE OF THE OPTIONAL EMPTY SUBMIT: REMAINS OPTIONAL
00432             IF (ITAI.LE.1.AND.INDIC(NTYP,INDX).GE.2.AND.
00433      &        TROUVE(NTYP,INDX).EQ.3) THEN
00434               L1 = LONGLU(DEFCAR(IVAL))
00435               IF (L1.GT.0) TROUVE(NTYP,INDX)=2
00436 !
00437             ELSEIF(TROUVE(NTYP,INDX).LT.6) THEN
00438               TROUVE(NTYP,INDX)=2
00439 !
00440             ELSEIF (TROUVE(NTYP,INDX).EQ.6.OR.
00441      &        TROUVE(NTYP,INDX).EQ.7) THEN
00442               TROUVE(NTYP,INDX)=8
00443             ENDIF
00444 !
00445           ELSE
00446             NTYP = ITYP
00447             IF     (NTYP .EQ. 1) THEN
00448                     NULINT = INTLU(ICOL,LIGNE)
00449             ELSEIF (NTYP .EQ. 2) THEN
00450                     NULREA = REALU(ICOL,LIGNE)
00451             ELSEIF (NTYP .EQ. 3) THEN
00452                     NULLOG = LOGLU(ICOL,LIGNE)
00453             ELSEIF (NTYP .EQ. 4) THEN
00454                     NULCAR = CARLU(LCAR,ICOL,LIGNE,QUOTE,MOTCLE,
00455      &                             SIZE,MOTIGN,LONIGN,NMAXR,NFICDA,
00456      &                             LEN(NULCAR))
00457             ENDIF
00458           ENDIF
00459 !
00460           ICOL = NEXT(ICOL+1,LIGNE)
00461           IF(ICOL.LE.LONGLI) THEN
00462             IF(LIGNE(ICOL:ICOL).EQ.PTVIRG) THEN
00463               IVAL = IVAL + 1
00464               GO TO 10
00465             ENDIF
00466           ENDIF
00467 !
00468           IF (LUIGN) GO TO 100
00469 !
00470 ! ALL THE VALUES FOR A KEYWORD HAVE BEEN READ
00471 !
00472 ! PARTICULAR CASE: KEYWORDS WITH A SUBMIT
00473 ! PREVENTS DYNAMIC ALLOCATION WHEN VALUES ARE GREATER THAN SIZE (SEE SUBMIT)
00474 ! OR FOR KEYWORDS NOT ASSOCIATED WITH ARRAYS
00475 !
00476           IF (INDIC(NTYP,INDX).NE.1.AND.IVAL.GT.ITAI) IVAL = ITAI
00477 !
00478 !
00479 ! IF THE KEYWORD &DYN IS NOT IN THE STEERING FILE AND IF THERE ARE
00480 ! MORE VALUES THAN THE PARAMETER TAILLE THEN TRUNCATES TO ITAI;
00481 ! ELSE (&DYN IN THE STEERING FILE) READS ALL THE VALUES OF THE STEERING FILE
00482 !
00483 ! IS IT REALLY NECESSARY TO SET BACK TO DYNAMIC MODE EVERY TIME ???
00484 ! IS MODIFYING DIMENS NOT ENOUGH ?
00485 ! IF LECDON IS WELL WRITTEN : IT DOES NOT MATTER IF THERE ARE HOLES
00486 ! IN THE ARRAYS SENT ... THINK ABOUT THIS
00487 !
00488 !
00489           IF (.NOT.(DYNAM)) THEN
00490             DO I=1 , MIN(IVAL,ITAI)
00491               IF     (NTYP.EQ.1) THEN
00492                 MOTINT(ADD+I-1) = DEFINT(I)
00493               ELSEIF (NTYP.EQ.2) THEN
00494                 MOTREA(ADD+I-1) = DEFREA(I)
00495               ELSEIF (NTYP.EQ.3)THEN
00496                 MOTLOG(ADD+I-1) = DEFLOG(I)
00497               ELSEIF (NTYP.EQ.4)THEN
00498                 MOTCAR(ADD+I-1) = DEFCAR(I)
00499               ENDIF
00500             ENDDO ! I
00501           ELSE
00502             DO I=1 ,NMAXR(NTYP)
00503               IF (UTINDX(NTYP,I)) THEN
00504                 IF(ADRESS(NTYP,I) .NE. ADD) THEN
00505                   IF (ADRESS(NTYP,I) .LT. ADD) DEPLAC = 0
00506                   IF (ADRESS(NTYP,I) .GT. ADD) DEPLAC = IVAL - ITAI
00507                   DO J=1 , DIMENS(NTYP,I)
00508                     ADSRC = ADRESS(NTYP,I)+J-1
00509                     ADDES = ADRESS(NTYP,I)+J-1+DEPLAC
00510                     IF (ADDES.GT. NMAX) GO TO 1515
00511                     IF     (NTYP.EQ.1) THEN
00512                       USRINT(ADDES) = MOTINT(ADSRC)
00513                     ELSEIF (NTYP.EQ.2) THEN
00514                       USRREA(ADDES) = MOTREA(ADSRC)
00515                     ELSEIF (NTYP.EQ.3) THEN
00516                       USRLOG(ADDES) = MOTLOG(ADSRC)
00517                     ELSEIF (NTYP.EQ.4) THEN
00518                       USRCAR(ADDES) = MOTCAR(ADSRC)
00519                     ENDIF
00520                     USRATT(ADDES) = MOTATT(NTYP,ADSRC)
00521                   ENDDO ! J
00522                   IF (ADRESS(NTYP,I) .GT. ADD) THEN
00523                     ADRESS(NTYP,I) = ADRESS(NTYP,I) + DEPLAC
00524                     IF (ADRESS(NTYP,I) .GT. NMAX) GO TO 1515
00525                   ENDIF
00526 !
00527                 ELSE IF (ADRESS(NTYP,I) .EQ. ADD) THEN
00528                   DO J=1 ,IVAL
00529                     IF     (NTYP.EQ.1) THEN
00530                       USRINT(ADD+J-1) = DEFINT(J)
00531                     ELSEIF (NTYP.EQ.2) THEN
00532                       USRREA(ADD+J-1) = DEFREA(J)
00533                     ELSEIF (NTYP.EQ.3) THEN
00534                       USRLOG(ADD+J-1) = DEFLOG(J)
00535                     ELSEIF (NTYP.EQ.4)THEN
00536                       USRCAR(ADD+J-1) = DEFCAR(J)
00537                     ENDIF
00538                     USRATT(ADD+J-1) = DEFATT(J)
00539                   ENDDO ! J
00540                   DIMENS(NTYP,I) = IVAL
00541                 ENDIF
00542               ENDIF
00543             ENDDO ! I
00544 !           SORTS IN FINAL ARRAYS
00545             DO I=1 ,NMAXR(NTYP)
00546               IF (UTINDX(NTYP,I)) THEN
00547                 ADSRC = ADRESS(NTYP,I)
00548                 DO J=1 ,DIMENS(NTYP,I)
00549                   IF     (NTYP.EQ.1) THEN
00550                     MOTINT(ADSRC+J-1)=USRINT(ADSRC+J-1)
00551                   ELSEIF (NTYP.EQ.2) THEN
00552                     MOTREA(ADSRC+J-1)=USRREA(ADSRC+J-1)
00553                   ELSEIF (NTYP.EQ.3) THEN
00554                     MOTLOG(ADSRC+J-1)=USRLOG(ADSRC+J-1)
00555                   ELSEIF (NTYP.EQ.4)  THEN
00556                     MOTCAR(ADSRC+J-1)=USRCAR(ADSRC+J-1)
00557                   ENDIF
00558                   MOTATT(NTYP,ADSRC+J-1) = USRATT(ADSRC+J-1)
00559                 ENDDO ! J
00560               ENDIF
00561             ENDDO ! I
00562           ENDIF
00563 !
00564 !
00565 !       ICOL = NEXT(ICOL,LIGNE)
00566 !
00567 ! ENDIF DU IF(ITYP.LE.4) ...
00568         ENDIF
00569 !
00570 !
00571 ! 2) RESERVED KEYWORDS:
00572 !
00573 !    RESERVED KEYWORDS CURRENTLY ARE:
00574 !
00575 !           'NOM'       :NUMERO = 1  (DE TYPE CARACTERE)
00576 !           'TYPE'      :NUMERO = 2  (DE TYPE CARACTERE)
00577 !           'INDEX'     :NUMERO = 3  (DE TYPE ENTIER)
00578 !           'TAILLE'    :NUMERO = 4  (DE TYPE ENTIER)
00579 !           'DEFAUT'    :NUMERO = 5  (DE TYPE VARIABLE)
00580 !           'AIDE'      :NUMERO = 6  (DE TYPE CARACTERE)
00581 !           'CHOIX'     :NUMERO = 7  (DE TYPE VARIABLE)
00582 !           'RUBRIQUE'  :NUMERO = 8  (DE TYPE CARACTERE)
00583 !           'NIVEAU'    :NUMERO = 9  (DE TYPE ENTIER)
00584 !           'MNEMO'     :NUMERO = 10 (DE TYPE CARACTERE)
00585 !           'COMPOSE'   :NUMERO = 11 (DE TYPE CARACTERE)
00586 !           'COMPORT'   :NUMERO = 12 (DE TYPE CARACTERE)
00587 !           'CONTROLE'  :NUMERO = 13 (DE TYPE ENTIER)
00588 !           'APPARENCE' :NUMERO = 14 (DE TYPE CARACTERE)
00589 !           'SUBMIT'    :NUMERO = 15 (DE TYPE CARACTERE)
00590 !
00591         IF(ITYP.EQ.5) THEN
00592 !
00593 !    NAME
00594 !
00595           IF(NUMERO.EQ.1) THEN
00596 !
00597 ! SHOULD NOT COUNT THE SAME WORD IN SEVERAL LANGUAGES SEVERAL TIMES
00598 ! COUNTED ONLY ONCE IN FIRST FOUND LANGUAGE
00599 !
00600             IF (.NOT.(VUMOT)) NBMOT = NBMOT + 1
00601 !
00602             ORDRE = 1
00603 !
00604 ! COMING FROM THE PRECEDING WORD, SORTS IT BEFORE READING THE FOLLOWING
00605 ! SINCE ALL THE INFORMATION ON THE PRECEDING WORD IS AVAILABLE
00606 !
00607            IF (NBMOT.GT.1 .AND. (.NOT.(VUMOT)) ) THEN
00608              IF (INDX.GT.NMAXR(NTYP)) NMAXR(NTYP)=INDX
00609              CALL CLASSE(DIMENS,SIZE,MOTCLE,UTINDX,NMAX,
00610      &                   OFFSET,ADRESS,INDIC,LUIGN,
00611      &                   MOTINT,MOTREA,MOTLOG,MOTCAR,MOTATT ,
00612      &                   DEFCAR,DEFINT,DEFLOG,DEFREA,DEFATT )
00613            ENDIF
00614 !
00615 ! SIGNALS THAT THIS NEW KEYWORD WAS ALREADY ENCOUNTERED IN ANOTHER LANGUAGE
00616             IF (.NOT.(VUMOT)) VUMOT=.TRUE.
00617 !
00618 !           NAME OF THE KEYWORD
00619             IF (LANGUE) THEN
00620               PARAM2= CARLU(LCAR,ICOL,LIGNE,QUOTE,MOTCLE,SIZE,MOTIGN,
00621      &                      LONIGN,NMAXR,NFICDA,LEN(PARAM))
00622               LONGU = LCAR
00623               PARAM=PARAM2(1:MIN(72,LONGU))
00624             ELSE
00625 ! READS THE NAME OF A NON-REQUESTED LANGUAGE (NOT USED)
00626                  NULCAR = CARLU(LCAR,ICOL,LIGNE,QUOTE,MOTCLE,SIZE,
00627      &                          MOTIGN,LONIGN,NMAXR,NFICDA,LEN(NULCAR))
00628             ENDIF
00629 !
00630             ICOL = NEXT(ICOL+1,LIGNE)
00631 !
00632 !    TYPE
00633 !
00634           ELSE IF(NUMERO.EQ.2) THEN
00635             VUMOT = .FALSE.
00636             IF (ORDRE.NE.1) GOTO 1500
00637             ORDRE=2
00638             TYPE2= CARLU(LCAR,ICOL,LIGNE,QUOTE,MOTCLE,SIZE,MOTIGN,
00639      &                   LONIGN,NMAXR,NFICDA,LEN(TYPE))
00640             TYPE=TYPE2(1:MIN(LCAR,9))
00641             IF(TYPE(1:6).EQ.'ENTIER'
00642      &      .OR.TYPE(1:8).EQ.'INTEGER') THEN
00643               NTYP = 1
00644             ELSEIF(TYPE(1:4).EQ.'REEL'
00645      &      .OR.TYPE(1:4).EQ.'REAL') THEN
00646               NTYP = 2
00647             ELSEIF(TYPE(1:7).EQ.'LOGIQUE'
00648      &      .OR.TYPE(1:7).EQ.'LOGICAL') THEN
00649               NTYP = 3
00650             ELSEIF(TYPE(1:9).EQ.'CARACTERE'
00651      &      .OR.TYPE(1:6).EQ.'STRING') THEN
00652 !    *      OR.TYPE(1:4).EQ.'FILE'
00653 !    *      OR.TYPE(1:7).EQ.'FICHIER') THEN
00654               NTYP = 4
00655             ELSE
00656 !           ERROR: UNKNOWN TYPE
00657               IF(LNG.EQ.1) WRITE (LU,1002) LIGNE
00658               IF(LNG.EQ.2) WRITE (LU,1003) LIGNE
00659 1002          FORMAT(1X,A72,/,1X,'TYPE INCONNU SUR CETTE LIGNE')
00660 1003          FORMAT(1X,A72,/,1X,'UNKNOWN TYPE ON THIS LINE')
00661               CALL PLANTE(1)
00662               STOP
00663             ENDIF
00664             ICOL = NEXT(ICOL+1,LIGNE)
00665 !
00666 !    INDEX
00667 !
00668           ELSE IF(NUMERO.EQ.3) THEN
00669             IF (ORDRE.NE.2) GOTO 1500
00670             ORDRE=3
00671             INDX = INTLU(ICOL,LIGNE)
00672             ICOL = NEXT(ICOL+1,LIGNE)
00673 !
00674 ! CASE INDEX=-1 : WORD FOR EDAMOX CONSTRUCTION, TO KEEP
00675 !
00676             IF (INDX.EQ.-1) THEN
00677               NIGN = NIGN + 1
00678               IF (NIGN.GT.100) THEN
00679                 IF (LNG.EQ.1) THEN
00680                   WRITE(LU,*) 'TROP DE MOTS RESERVES POUR EDAMOX',
00681      &                        ' (100 AU MAXIMUM)'
00682                 ELSEIF (LNG.EQ.2) THEN
00683                   WRITE(LU,*) 'TOO MANY WORDS FOR EDAMOX',
00684      &                        ' (MAX=100)'
00685                 ENDIF
00686                 ERREUR = .TRUE.
00687                 GO TO 900
00688               ENDIF
00689               MOTIGN(NIGN)=PARAM(1:LONGU)
00690               LONIGN(NIGN)=LONGU
00691               TYPIGN(NIGN)=NTYP
00692             ENDIF
00693 !
00694 !    SIZE
00695 !
00696           ELSE IF(NUMERO.EQ.4) THEN
00697             IF (ORDRE.NE.3) GOTO 1500
00698             ORDRE=4
00699             ITAI = INTLU(ICOL,LIGNE)
00700             ICOL = NEXT(ICOL+1,LIGNE)
00701 !
00702 !    DEFAULT VALUE
00703 !    FOR ARRAYS, IT IS NOT NECESSARY TO SET ALL VALUES
00704 !
00705           ELSE IF(NUMERO.EQ.5) THEN
00706 !
00707 !
00708             IF (ORDRE.LT.3.OR.ORDRE.GT.6) GOTO 1500
00709             ORDRE=6
00710             IF (LANGUE) THEN
00711               DEFLU = 1
00712               IF (NTYP.NE.4) TROUVE(NTYP,INDX) = 1
00713 !
00714 !200           ICOL = NEXT(ICOL+1,LIGNE) -1
00715 200           CONTINUE
00716 !
00717               IF (NTYP .EQ. 1) THEN
00718                 DEFINT(DEFLU) = INTLU(ICOL,LIGNE)
00719               ELSE IF (NTYP .EQ. 2) THEN
00720                 DEFREA(DEFLU) = REALU(ICOL,LIGNE)
00721               ELSE IF (NTYP .EQ. 3) THEN
00722                 DEFLOG(DEFLU) = LOGLU(ICOL,LIGNE)
00723               ELSE IF (NTYP .EQ. 4) THEN
00724                 DEFCAR(DEFLU) = CARLU(LCAR,ICOL,LIGNE,QUOTE,MOTCLE,
00725      &                               SIZE,MOTIGN,LONIGN,NMAXR,NFICDA,
00726      &                               LEN(DEFCAR(DEFLU)))
00727                 L1 = LONGLU(DEFCAR(DEFLU))
00728                 IF (ITAI.LE.1.AND.INDIC(NTYP,INDX).GE.2) THEN
00729                   IF (TROUVE(NTYP,INDX).LE.3) THEN
00730                     IF (L1.GT.0) TROUVE(NTYP,INDX)=1
00731                   ELSEIF(TROUVE(NTYP,INDX).EQ.6) THEN
00732 !                   IF (L1.GT.0) TROUVE(NTYP,INDX)=7
00733                     TROUVE(NTYP,INDX)=7
00734                   ENDIF
00735                 ELSE
00736                   TROUVE(NTYP,INDX)=1
00737                 ENDIF
00738               ENDIF
00739 !
00740               ICOL = NEXT(ICOL+1,LIGNE)
00741 !
00742               IF(ICOL.GT.LONGLI) THEN
00743                 ICOL = LONGLI
00744               ELSE
00745                 IF(LIGNE(ICOL:ICOL).EQ.PTVIRG) THEN
00746                   DEFLU = DEFLU + 1
00747                   GO TO 200
00748                 ELSE
00749                   ICOL=ICOL-1
00750                 ENDIF
00751               ENDIF
00752 
00753 !
00754 !
00755 !
00756             ELSE
00757 !
00758 ! READS THE DEFAULT OF A NON-REQUESTED LANGUAGE (NOT USED)
00759 !
00760 !210       ICOL = NEXT(ICOL+1,LIGNE) -1
00761  210          CONTINUE
00762 !
00763               IF (NTYP .EQ. 1) THEN
00764                 NULINT = INTLU(ICOL,LIGNE)
00765               ELSE IF (NTYP .EQ. 2) THEN
00766                 NULREA = REALU(ICOL,LIGNE)
00767               ELSE IF (NTYP .EQ. 3) THEN
00768                 NULLOG = LOGLU(ICOL,LIGNE)
00769               ELSE IF (NTYP .EQ. 4) THEN
00770                 NULCAR = CARLU(LCAR,ICOL,LIGNE,QUOTE,MOTCLE,SIZE,
00771      &                        MOTIGN,LONIGN,NMAXR,NFICDA,LEN(NULCAR))
00772               ENDIF
00773 !
00774               ICOL = NEXT(ICOL+1,LIGNE)
00775 !
00776               IF (LIGNE(ICOL:ICOL) .EQ. PTVIRG) THEN
00777                 GO TO 210
00778               ELSE
00779 !               DEFLU=DEFLU
00780                 ICOL=ICOL-1
00781               ENDIF
00782             ENDIF
00783 !
00784             ICOL = NEXT(ICOL+1,LIGNE)
00785 !
00786 !    HELP
00787 !
00788           ELSE IF(NUMERO.EQ.6) THEN
00789 !
00790             IF(AIDLNG.AND.DOC) THEN
00791               WRITE(LU,511)
00792 511           FORMAT(1X,72('-'))
00793               WRITE(LU,*) PARAM(1:LONGU)
00794               WRITE(LU,511)
00795             ENDIF
00796             CALL AIDELU(ICOL,LIGNE,DOC.AND.AIDLNG)
00797             AIDLNG = .FALSE.
00798 !
00799 !
00800 !    'CHOIX' 'RUBRIQUE' 'NIVEAU' 'MNEMO' 'COMPOSE' 'COMPORT' 'CONTROLE' 'APPARENCE'
00801 !    NUMBER 7 TO 14 INCLUDED
00802 !
00803           ELSE IF((NUMERO .GE. 7) .AND. (NUMERO .LE. 14)) THEN
00804             CALL AIDELU(ICOL,LIGNE,.FALSE.)
00805 !
00806 !    DEFINES A SUBMIT TYPE
00807           ELSE IF (NUMERO .EQ. 15) THEN
00808             IF (ORDRE.NE.3.AND.ORDRE.NE.4) GOTO 1500
00809             ORDRE=5
00810             IF (.NOT.(LUIGN)) INDIC(NTYP,INDX)=INDIC(NTYP,INDX)+2
00811             ICOL = NEXT(ICOL+1,LIGNE) -1
00812             CALL INFLU(ICOL,LIGNE,DEFATT,TROUVE,LUIGN,MOTCLE,SIZE,
00813      &                 MOTIGN,LONIGN,NMAXR,NFICDA,GESTD)
00814             DO I=1,DEFLU
00815               DEFINT(I)    = 0
00816               DEFREA(I)    = 0.
00817               DEFLOG(I)    = .FALSE.
00818               DEFCAR(I)    = ' '
00819             ENDDO ! I
00820             IF (ERREUR) GO TO 900
00821             ICOL = NEXT(ICOL,LIGNE)
00822           ENDIF
00823 !
00824         ENDIF
00825 !
00826       ENDIF
00827 !
00828       GO TO 100
00829 900   CONTINUE
00830       IF(ERREUR) THEN
00831         WRITE(LU,*)' '
00832         IF(NFIC.EQ.NFICMO) THEN
00833           WRITE(LU,*)'-------------------------------'
00834           IF(LNG.EQ.1) THEN
00835           WRITE(LU,*)'- ERREUR DANS LE DICTIONNAIRE -'
00836           ENDIF
00837           IF(LNG.EQ.2) THEN
00838           WRITE(LU,*)'- ERROR IN THE DICTIONARY     -'
00839           ENDIF
00840           WRITE(LU,*)'-------------------------------'
00841           CALL PLANTE(1)
00842           STOP
00843         ELSE
00844           WRITE(LU,*)'-----------------------------------------'
00845           IF(LNG.EQ.1) THEN
00846           WRITE(LU,*)'- ERREUR DANS LE FICHIER DES PARAMETRES -'
00847           ENDIF
00848           IF(LNG.EQ.2) THEN
00849           WRITE(LU,*)'- ERROR IN THE STEERING FILE            -'
00850           ENDIF
00851           WRITE(LU,*)'-----------------------------------------'
00852           RETRY=RETRY+1
00853         ENDIF
00854         IF(RETRY.LE.1) THEN
00855           RETURN
00856         ELSE
00857           CALL PLANTE(1)
00858           STOP
00859         ENDIF
00860       ENDIF
00861 !
00862       IF(NFIC.EQ.NFICMO) THEN
00863         IF (INDX.GT.NMAXR(NTYP)) NMAXR(NTYP)=INDX
00864         CALL CLASSE(DIMENS,SIZE,MOTCLE,UTINDX,NMAX,
00865      &              OFFSET,ADRESS,INDIC,LUIGN,
00866      &              MOTINT,MOTREA,MOTLOG,MOTCAR,MOTATT ,
00867      &              DEFCAR,DEFINT,DEFLOG,DEFREA,DEFATT )
00868       ENDIF
00869       IF(NFICMO.EQ.NFICDA.OR.NFIC.EQ.NFICDA) THEN
00870 !       TRUE END: 2 FILES READ OR 2 FILES IN 1 READ
00871         GO TO 1000
00872       ELSE
00873 !       FALSE END: REMAINS A FILE
00874         NFIC = NFICDA
00875         RETOUR = .FALSE.
00876         GO TO 99
00877       ENDIF
00878 !
00879 1515  CONTINUE
00880       WRITE(LU,*)'*********************************************'
00881       IF(LNG.EQ.1) THEN
00882         WRITE(LU,*)'ADRESSE SUPERIEURE A NMAX = ',NMAX
00883         WRITE(LU,*)'TROP DE VALEURS DE TYPE : ',NTYP,' DECLAREES.'
00884         WRITE(LU,*)'ARRET DE DAMOCLES AU MOT-CLE D''INDEX : ',INDX
00885       ELSEIF(LNG.EQ.2) THEN
00886         WRITE(LU,*)'ADRESS GREATER THAN NMAX = ',NMAX
00887         WRITE(LU,*)'TOO MANY VALUES OF TYPE : ',NTYP,' DECLARED.'
00888         WRITE(LU,*)'STOP OF DAMOCLES AT KEY-WORD NUMBER: ',INDX
00889       ENDIF
00890       WRITE(LU,*)'*********************************************'
00891       CALL PLANTE(1)
00892       STOP
00893 !
00894 1000  CONTINUE
00895 !
00896 ! COMPACTS WHITE CHARS - REDISTRIBUTES - TESTS THE RESULTS
00897 !
00898       DO K=1,NMAXR(4)
00899         IF (UTINDX(4,K).AND.INDIC(4,K).GE.2.AND.
00900      &      TROUVE(4,K).LT.3.AND.TROUVE(4,K).GT.0) THEN
00901           ADD = ADRESS(4,K)
00902           PARAM = MOTCLE(4,K)
00903           LONGU = SIZE(4,K)
00904           NVAL = DIMENS(4,K)
00905           I=0
00906  1180     CONTINUE
00907           I=I+1
00908  1185     CONTINUE
00909 ! IF IT IS A WHITE CHAR (LENGTH=0):
00910           IF (LONGLU(MOTCAR(ADD+I-1)).EQ.0) THEN
00911             DO J=I,NVAL-1
00912               MOTCAR(ADD+J-1)=MOTCAR(ADD+J)
00913 !
00914 ! SUBMITS DO NOT FOLLOW IF THIS LINE IS COMMENTED OUT
00915 ! OTHERWISE PB EXPERIENCED WITH STBTEL
00916 !            MOTATT(4,ADD+J-1)=MOTATT(4,ADD+J)
00917 !
00918             ENDDO ! J
00919             NVAL = NVAL-1
00920             IF (I.LE.NVAL) GO TO 1185
00921           ENDIF
00922           IF (I.LT.NVAL) GO TO 1180
00923 !
00924 ! CASE OF EMPTY ALLOCATIONS FOR NON ARRAYS
00925 !
00926           IF (NVAL.EQ.0.AND.INDIC(4,K).EQ.2) THEN
00927             IF (LNG.EQ.1) THEN
00928               WRITE(LU,*) 'AFFECTATION VIDE NON ADMISE POUR LE ',
00929      &                    'MOT CLE : ', PARAM(1:LONGU)
00930             ELSEIF (LNG.EQ.2) THEN
00931               WRITE(LU,*) 'EMPTY ALLOCATION NOT ALLOWED FOR ',
00932      &                    'THE KEY WORD : ', PARAM(1:LONGU)
00933             ENDIF
00934             WRITE(LU,*)
00935             ARRET = .TRUE.
00936             GO TO 1300
00937           ENDIF
00938 !
00939 ! HAS COMPACTED ARRAYS TO DIMENSION NVAL (CAN BE = 0)
00940           IF (NVAL.LT.DIMENS(4,K)) THEN
00941             DIMENS(4,K) = NVAL
00942             TROUVE(4,K) = 5
00943           ENDIF
00944         ENDIF
00945 !
00946 ! CASE OF SUBMIT ARRAYS NEVER AFFECTED -> DIMENSION = 0
00947         IF (UTINDX(4,K).AND.INDIC(4,K).EQ.3.AND.TROUVE(4,K).EQ.0.
00948      &      AND.DIMENS(4,K).GT.1) THEN
00949           DIMENS(4,K) = 0
00950           TROUVE(4,K) = 3
00951         ENDIF
00952 !
00953       ENDDO ! K
00954 !
00955 ! CARRIES OUT THE COMMANDS RECORDED BEFORE THE END
00956       EXECMD = .TRUE.
00957 !     TO AVOID TESTS ON LINE IN CMD
00958       LIGNE = 'NUL'
00959       DO K = 1,5
00960         VUCMD0(K) = VUCMD(K)
00961         VUCMD(K)  = .FALSE.
00962       ENDDO
00963 !
00964       DO K=1,5
00965         VUCMD(K)=VUCMD0(K)
00966         IF (VUCMD(K).AND.(.NOT.(ERREUR))) THEN
00967           CALL CMD (ICOL,LIGNE,ADRESS,DIMENS,TROUVE,MOTCLE,NMOT,
00968      &          MOTINT,MOTREA,MOTLOG,MOTCAR,MOTATT,INDIC,SIZE,
00969      &          UTINDX,DYNAM,VUCMD,EXECMD,NFICDA,NMAXR)
00970           VUCMD(K) = .FALSE.
00971         ENDIF
00972       ENDDO
00973 !
00974 !  LOOKS FOR REQUIRED KEYWORDS THAT HAVE NOT BEEN READ:
00975 !
00976       WRITE(LU,*) ' '
00977 !
00978       DO K = 1 , 4
00979       DO INDX = 1 , NMAXR(K)
00980         IF (UTINDX(K,INDX)) THEN
00981           IF (TROUVE(K,INDX).EQ.0) THEN
00982 !
00983 ! IF NO DEFAULT VALUE AND NOTHING IN STEERING FILE, DIMENS = 0 FOR ARRAYS
00984             IF (DIMENS(K,INDX).NE.1) THEN
00985               IF (DYNAM) DIMENS(K,INDX) = 0
00986             ELSE
00987               WRITE(LU,*)'----------------------------------------'
00988               ARRET= .TRUE.
00989       IF(LNG.EQ.1) WRITE(LU,1101) MOTCLE(K,INDX)(1:SIZE(K,INDX))
00990       IF(LNG.EQ.2) WRITE(LU,1102) MOTCLE(K,INDX)(1:SIZE(K,INDX))
00991  1101         FORMAT(1X,'ATTENTION, LE MOT-CLE :',1X,A,/,1X,
00992      &        'N''A PAS RECU DE VALEUR')
00993  1102         FORMAT(1X,'BEWARE, THE KEY-WORD:',1X,A,/,1X,
00994      &        'HAS BEEN GIVEN NO VALUE')
00995             ENDIF
00996           ENDIF
00997         ENDIF
00998       ENDDO ! INDX
00999       ENDDO ! K
01000 !
01001 1300  CONTINUE
01002       IF(ARRET) THEN
01003         WRITE(LU,*)  ' '
01004         IF(LNG.EQ.1) WRITE(LU,*) 'INTERRUPTION DU SOUS-PROGRAMME DAMOC'
01005         IF(LNG.EQ.2) WRITE(LU,*) 'DAMOC IS STOPPED'
01006         CALL PLANTE(1)
01007         STOP
01008       ENDIF
01009 !
01010       RETURN
01011 !
01012 ! TREATS ERRORS OF DECLARATION ORDER IN THE DICTIONARY
01013 !
01014 1500  ERREUR=.TRUE.
01015       WRITE(LU,'(/,1X,A72,/)') LIGNE
01016       IF(LNG.EQ.1) THEN
01017         WRITE(LU,*) 'A LA LIGNE ',NLIGN,
01018      &               ', ORDRE DE DEFINITION OBLIGATOIRE NON RESPECTE'
01019         WRITE(LU,*)
01020         WRITE(LU,*) 'L''ORDRE ATTENDU EST LE SUIVANT :'
01021       ELSEIF(LNG.EQ.2) THEN
01022         WRITE(LU,*) 'AT LINE ',NLIGN,', PRIORITY ORDER NOT RESPECTED'
01023         WRITE(LU,*)
01024         WRITE(LU,*) 'EXPECTED ORDER IS :'
01025       ENDIF
01026       WRITE(LU,*) 'NOM, TYPE, INDEX, (TAILLE), (SUBMIT), (DEFAUT)'
01027       GOTO 900
01028 !
01029 !-----------------------------------------------------------------------
01030 !
01031       END

Generated on Fri Aug 31 2013 18:12:58 by S.E.Bourban (HRW) using doxygen 1.7.0