soucha
C SOUCHA SOURCE GOUNAND 14/01/29 21:15:16 7923 ************************************************************************ * NOM : soucha.eso * DESCRIPTION : Extraction d'une sous-chaîne ************************************************************************ * HISTORIQUE : 13/03/2012 : JCARDO : création de la subroutine * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS DE COMPLÉTER LES COMMENTAIRES * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * APPELÉ PAR : extrai.eso ************************************************************************ * ENTRÉES :: CSTR = chaîne dont on veut extraire une sous-chaîne * LSTR = longueur de CSTR * CTYP = mode d'extraction ('ENTIER' ou 'LISTENTI') * SORTIES :: aucune ************************************************************************ * SYNTAXE (GIBIANE) : * * MOT2 = EXTR MOT1 | ENTI1 (ENTI2) | * | LENTI1 | * ************************************************************************ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMLENTI CHARACTER*8 CTYP CHARACTER*512 CSTR,CSTR2 * ===================================== * EXTRACTION À PARTIR DE 1 OU 2 ENTIERS * ===================================== IF (CTYP.EQ.'ENTIER') THEN * Lecture de la position du premier caractère à extraire IF (IPOS1.LT.1.OR.IPOS1.GT.LSTR) THEN WRITE (IOIMP,9001) 'le nombre ENTI1',1,LSTR RETURN ENDIF * Lecture de la position du dernier caractère à extraire IPOS2=LSTR IF (IPOS2.LT.IPOS1.OR.IPOS2.GT.LSTR) THEN WRITE (IOIMP,9001) 'le nombre ENTI2',IPOS1,LSTR RETURN ENDIF * Extraction et renvoi de la sous-chaîne RETURN * ================================= * EXTRACTION À PARTIR D'UN LISTENTI * ================================= ELSEIF (CTYP.EQ.'LISTENTI') THEN * Lecture de l'objet LISTENTI SEGACT MLENTI * Construction de la sous-chaîne NCAR=LECT(/1) IF (NCAR.EQ.0) THEN WRITE (IOIMP,*) '(le LISTENTI ne contient aucun élément)' RETURN ENDIF CSTR2=' ' DO IA=1,NCAR IB=LECT(IA) IF (IB.LT.1.OR.IB.GT.LSTR) THEN WRITE (IOIMP,9001) 'chaque nombre du LISTENTI',1,LSTR RETURN ENDIF CSTR2(IA:IA)=CSTR(IB:IB) ENDDO * Renvoi de la sous-chaîne SEGDES MLENTI RETURN ENDIF * ERREUR 39 : On ne veut pas d'objet de type %m1:8 MOTERR(1:8)=CTYP RETURN * Format du message d'erreur en cas de données incompatibles END
© Cast3M 2003 - Tous droits réservés.
Mentions légales