[updated 5.May.2000]
Librairie initial > Fichier lcstru.f |
SUBROUTINE LCSTRU (NBINCI,NCINCI,NBDONI,NCDONI,NBDOMI,NCDOMI
& ,NBTRMI,NCTRMI,NBCSEI,NBCSRI,NBCSDI,NBCSCI
& ,NBCSAI,NCCSAI,NIVIMP,IMPMES)
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 ]
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))
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
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
lcstru est appelé dans