[updated 8.Sep.2008]
Librairie sdexplo > Fichier putcst.f |
SUBROUTINE PUTCST (NOMCST,TYPCST,NTIERE,REELLE,COMPLE,CHARAC)
Auteur : D.Martin (Janvier 1990)
Derniere modification : D.Martin (2 Juillet 1997)
Introduction de la valeur de la constante de nom donne dans le tableau
des constantes de type adequat.
Si la constante de nom donne n'existe pas, elle rajoutee au tableau
des noms de donnees.
-- Arguments d'entree --
NOMCST nom de la constante
TYPCST type de la constante('ENTIER','REEL','COMPLEXE','CHARACTER*x')
NTIERE valeur de la constante si la constante est entiere
REELLE valeur de la constante si le constante est reelle
COMPLE valeur de la constante si le constante est complexe
CHARAC valeur de la constante caractere ou chaine de caracteres
CHARACTER*(*) NOMCST,CHARAC,TYPCST
INTEGER NTIERE
REAL REELLE
COMPLEX COMPLE
INCLUDE 'ALLOC'
INCLUDE 'CONTEX'
INTEGER INTDON,INTTYP,KELCHN,KLCSTE
INTEGER MCMDON,LGMDON,MCDONN,LGDONN,LGEDON,NBDONN,INCDON,NCHDON
& ,NUDONN,NUCSTE,NWHDON,ITYDON,ITYPDO,NBCHAR,LGA,MCL,LGU,I
CHARACTER ERCODE*120
COMMON/FORMAH/ERCODE
CALL PRFXMJ (1,'*PutCst*')
CALL TBAR2 (ERCODE,'#OMDON',1,MCMDON,'$DONNE',1,MCDONN)
CALL SDEXDB (IST(MCDONN),LGEDON,NBDONN,INCDON,NCHDON) !SDexplo
NUDONN=KELCHN (NOMCST,AST(MCMDON),NBDONN,NCHDON) !Utilite
IF (NUDONN.LE.0) THEN
Numero de la nouvelle constante
(KLCSTE incorpore l'agrandissement des tableaux des constantes)
NUCSTE=KLCSTE (TYPCST) !Sdexplo
Introduction de la nouvelle constante dans les structures
$DONNE et #OMDON en derniere position apres eventuel agrandissement
CALL TBRR2 (ERCODE,'$DONNE',1,LGDONN,'#OMDON',1,LGMDON)
CALL SDAJST ('$DONNE',1,LGDONN,LGEDON,INCDON,NBDONN,1) !Sdexplo
NWHDON=MAX(NCHDON,LEN(NOMCST))
CALL SDAJST ('#OMDON',1,LGMDON,0,NWHDON,NBDONN,1) !Sdexplo
CALL TBAR2 (ERCODE,'$DONNE',1,MCDONN,'#OMDON',1,MCMDON)
CALL RIPCHN (AST(MCMDON),NBDONN,NCHDON,NOMCST) !Utilite
CALL SDMKDB (IST(MCDONN),LGEDON,NBDONN,INCDON,NCHDON) !Sdexplo
NUDONN=NBDONN
ITYDON=INTDON ('CONSTANTE') !Utilite
ITYPDO=INTTYP (TYPCST) !Utilite
CALL SDMKCO (NUDONN,IST(MCDONN),ITYDON,NUCSTE,ITYPDO) !Sdexplo
ELSE
Recherche des caracteristiques de la donnee
CALL SDEXCO (NUDONN,IST(MCDONN),ITYDON,NUCSTE,ITYPDO) !Sdexplo
ENDIF
IF (TYPCST(1:2).EQ.'CA') THEN
NBCHAR=LEN (CHARAC)
CALL TBRR1 (ERCODE,'$ASCTE',1,LGA)
CALL TBAR1 (ERCODE,'$LGCSA',1,MCL)
IF (NBCHAR.GT.IST(MCL+NUCSTE)) THEN
NBCHAR=NBCHAR-IST(MCL+NUCSTE)
LGU=0
DO 1 I=1,IST(MCL)
LGU=LGU+IST(MCL+I)
1 CONTINUE
IF (LGA.LT.LGU+2*NBCHAR) CALL TBAJST ('$ASCTE',1,LGU+NBCHAR)
ENDIF
ENDIF
Introduction de la valeur de la constante dans le tableau
des constantes du bon type.
CALL INCST (NUCSTE,ITYPDO,NTIERE,REELLE,COMPLE,CHARAC) !Sdexplo
CALL PRFXMJ (-1,'*PutCst*')
END !Putcst
putcst est appelé dans (15 procédures)