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