[updated 5.May.2000]

Librairie initial > Fichier lcstru.f

Qui appelle lcstru ?

line
      SUBROUTINE LCSTRU (NBINCI,NCINCI,NBDONI,NCDONI,NBDOMI,NCDOMI
     &                  ,NBTRMI,NCTRMI,NBCSEI,NBCSRI,NBCSDI,NBCSCI
     &                  ,NBCSAI,NCCSAI,NIVIMP,IMPMES)
line
  Auteur : D.Martin (Fevrier 1992) 
  Date de derniere modification : D.Martin (23 Fevrier 1998)
  Version # 1.0.0
   
  Modification des valeurs par defaut des parametres initiaux maximaux
  definissant la longueur des structures de donnees suivantes :
       #OMINC, #OMDON, #OMDOM, #OMTRM, #NCONU, #TERDO,
       $DONNE, $SDTRM, $ACSTE, $LGCSA, $ECSTE, $RCSTE, $CCSTE.
   
 -- Arguments de sortie --
  NBINCI nombre maximum initial d'inconnues
  NCINCI longueur maximum initiale d'un nom d'inconnue 
  NBDONI nombre maximum initial de donnees
  NCINCI longueur maximum initiale d'un nom de donnee 
  NBDOMI nombre maximum initial de domaines geometriques
  NCINCI longueur maximum initiale d'un nom de domaine
  NBTRMI nombre maximum initial de termes 
  NCINCI longueur maximum initiale d'un nom de terme
  NBCSEI nombre maximum initial de constante entieres  
  NBCSRI nombre maximum initial de constantes reelles
  NBCSCI nombre maximum initial de constantes reelles double precision 
  NBCSCI nombre maximum initial de constantes complexes
  NBCSAI nombre maximum initial de constantes chaines de caracteres
  NCINCI longueur maximum initiale d'une constante chaine de caracteres
  NIVIMP,IMPMES quincaillerie habituelle 
   
 -- Mots-cles de la directive STRUCTURE DE DONNEES
   
  STRUCTURE DE DONNEES
  * < Inconnue (structures #OMINC et #NCONU)
    / Donnee   (structures #OMDON et $DONNE)
    / Domaine  (structures #OMDOM et #TERDO)
    / Terme    (structures #OMTRM et $SDTRM)
    / Constante < ENTIERE / REEL  / DOUBLE [PRECISION] / COMPLEXE / CARACTERE >
    >
    NOMBRE &I  [ LONGUEUR &I ] 
line
      INTEGER          NBINCI,NCINCI,NBDONI,NCDONI,NBDOMI,NCDOMI,NBTRMI
     &                ,NCTRMI,NBCSEI,NBCSRI,NBCSDI,NBCSCI,NBCSAI,NCCSAI
     &                ,NIVIMP,IMPMES
   
      CHARACTER        TEXT*4,MOTLU*120,TEXTE*80
      INTEGER          NFIX,IRE,NER,NCAR,ILU,IOP,IMPNIV,NOMBRE,LONGUE
      DOUBLE PRECISION FLOT
      COMMON/REDCO1/FLOT,NFIX,IRE,NER,NCAR,ILU,IOP(5)   /REDCOM/TEXT(20)
      COMMON/FORMAH/MOTLU  
      EQUIVALENCE     (TEXTE,TEXT(1))
line
      CALL PRFXMJ (1,'*LcStru*')
 
      IMPNIV=NIVIMP
      IF (IMPMES.LE.0) IMPNIV=0
1     CALL REDLE
      IF (IRE.NE.3) CALL REDERR (13,' ') 
2     IF (TEXTE(1:7).EQ.'DONNEES') GOTO 1
      IF (IMPNIV.NE.0) WRITE (IMPMES,10000) '*LcStru*',TEXTE(1:NCAR)
      IF (TEXT(1).EQ.'CONS') THEN
         On a lu CONSTANTE
         NOMBRE=0
         LONGUE=0
         CALL REDLE
11       IF (IRE.NE.3) CALL REDERR (13,' ') 
         IF (TEXT(1).EQ.'ENTI'.OR.TEXT(1).EQ.'REEL'.OR.
     &       TEXT(1).EQ.'DOUB'.OR.TEXT(1).EQ.'COMP'.OR.
     &       TEXT(1).EQ.'CARA') THEN
            MOTLU(:4)=TEXT(1)
12          CALL REDLE
            IF (IRE.NE.3) CALL REDERR (13,' ')
            IF (MOTLU(:4).EQ.'DOUB'.AND.TEXT(1).EQ.'PREC') GOTO 12
            IF (TEXT(1).EQ.'NOMB') THEN
               IF (IMPNIV.NE.0) WRITE (IMPMES,10003) TEXTE(:NCAR)
               CALL REDLE
               IF (IRE.NE.1) CALL REDERR (11,' ')
               IF (IMPNIV.NE.0) WRITE (IMPMES,10001) NFIX
               NOMBRE=NFIX
               GOTO 12
            ELSEIF (TEXT(1).EQ.'LONG') THEN
               IF (IMPNIV.NE.0) WRITE (IMPMES,10003) TEXTE(:NCAR)
               IF (MOTLU(:4).NE.'CARA') CALL REDERR (2,'LONGUEUR')
               CALL REDLE
               IF (IRE.NE.1) CALL REDERR (11,' ')
               IF (IMPNIV.NE.0) WRITE (IMPMES,10001) NFIX
               LONGUE=NFIX
               GOTO 12
            ENDIF
            IF (MOTLU(:4).EQ.'ENTI') THEN
               IF (NOMBRE.LE.0) NOMBRE=NBCSEI
               NBCSEI=NOMBRE
            ELSEIF (MOTLU(:4).EQ.'REEL') THEN
               IF (NOMBRE.LE.0) NOMBRE=NBCSRI
               NBCSRI=NOMBRE
            ELSEIF (MOTLU(:4).EQ.'DOUB') THEN
               IF (NOMBRE.LE.0) NOMBRE=NBCSDI
               NBCSDI=NOMBRE
            ELSEIF (MOTLU(:4).EQ.'COMP') THEN
               IF (NOMBRE.LE.0) NOMBRE=NBCSCI
               NBCSCI=NOMBRE
            ELSEIF (MOTLU(:4).EQ.'CARA') THEN
               IF (NOMBRE.LE.0) NOMBRE=NBCSAI
               NBCSAI=NOMBRE
               IF (LONGUE.LE.0) LONGUE=NCCSAI
               NCCSAI=LONGUE
            ENDIF
            GOTO 11
         ENDIF
      ELSEIF (TEXT(1).EQ.'DOMA'.OR.TEXT(1).EQ.'DONN'.OR.
     &        TEXT(1).EQ.'INCO'.OR.TEXT(1).EQ.'TERM') THEN
         MOTLU(:4)=TEXT(1)
         On a lu Domaine, Donne, Inconnue ou Terme
         NOMBRE=0
         LONGUE=0 
22       CALL REDLE
         IF (IRE.NE.3) CALL REDERR (13,' ')
         IF (TEXT(1).EQ.'NOMB') THEN
            CALL REDLE
            IF (IMPNIV.NE.0) WRITE (IMPMES,10003) TEXTE(:NCAR)
            IF (IRE.NE.1) CALL REDERR (11,' ')
            IF (IMPNIV.NE.0) WRITE (IMPMES,10001) NFIX
            NOMBRE=NFIX
            GOTO 22
         ELSEIF (TEXT(1).EQ.'LONG') THEN
            IF (IMPNIV.NE.0) WRITE (IMPMES,10003) TEXTE(:NCAR)
            CALL REDLE
            IF (IRE.NE.1) CALL REDERR (11,' ')
            IF (IMPNIV.NE.0) WRITE (IMPMES,10001) NFIX
            LONGUE=NFIX
            GOTO 22
         ENDIF 
         IF (MOTLU(:4).EQ.'DOMA') THEN
            IF (NOMBRE.LE.0) NOMBRE=NBDOMI
            NBDOMI=NOMBRE
            IF (LONGUE.LE.0) LONGUE=NCDOMI
            NCDOMI=LONGUE
         ELSEIF (MOTLU(:4).EQ.'DONN') THEN
            IF (NOMBRE.LE.0) NOMBRE=NBDONI
            NBDONI=NOMBRE
            IF (LONGUE.LE.0) LONGUE=NCDONI
            NCDONI=LONGUE
         ELSEIF (MOTLU(:4).EQ.'INCO') THEN
            IF (NOMBRE.LE.0) NOMBRE=NBINCI
            NBINCI=NOMBRE
            IF (LONGUE.LE.0) LONGUE=NCINCI
            NCINCI=LONGUE
         ELSEIF (MOTLU(:4).EQ.'TERM') THEN
            IF (NOMBRE.LE.0) NOMBRE=NBTRMI
            NBTRMI=NOMBRE
            IF (LONGUE.LE.0) LONGUE=NCTRMI
            NCTRMI=LONGUE
         ENDIF
      ELSE
         CALL PRFXMJ (-1,'*LcStru*')
         RETURN
      ENDIF
      GOTO 2
line
10000 FORMAT(T2,A8,'Lecture de la sous-directive : ',A)
10001 FORMAT(T6,A8,T56,' , suivi de nombre : ',I12)
10003 FORMAT(T6,A8,T56,' , suivi du mot : ',A)  
                                                                    END !Lcstru
line
top

lcstru est appelé dans

top