mots
C MOTS SOURCE CB215821 21/11/25 21:15:11 11201 SUBROUTINE MOTS ************************************************************************ * * M O T S * ------- * * SOUS-PROGRAMME ASSOCIE A L'OPERATEUR "MOTS" * * FONCTION: * --------- * * ENREGISTRER UN OBJET DE TYPE 'LISTMOTS'. * * PHRASE D'APPEL (EN GIBIANE): * ---------------------------- * * OBJET1 = MOTS MOT1 (MOT2 (MOT3 ...) ) ; * * LES PARENTHESES INDIQUANT DES ARGUMENTS FACULTATIFS. * * ARGUMENTS (EN GIBIANE): * ----------------------- * * MOT1, ) CHAINES DE CARACTERES QUELCONQUES NE * MOT2, )) CONTENANT NI BLANC, NI CARACTERE RESERVE * MOT3, ... ) (TEL LE SIGNE "="). * * OBJET1 'LISTMOTS' LISTE DE MOTS CREEE (tronques a LOCHAI caracteres). * * DICTIONNAIRE DES VARIABLES: (ORDRE ALPHABETIQUE) * --------------------------- * * IPMOTS ENTIER POINTEUR SUR L'OBJET "OBJET1". * LEMOT ENTIER CONTIENT L'UN DES MOTS "MOT1", MOT2", ... * * SOUS-PROGRAMMES APPELES: * ------------------------ * * LIRCHA, ECROBJ, ERREUR. * * REMARQUES: * ---------- * * L'APPEL AU SOUS-PROGRAMME "ERREUR" EST DU AU FAIT QUE LE * SOUS-PROGRAMME "LIROBJ" NE FOURNIT PAS LE NOM DE L'OBJET, QUAND IL * EN RECONNAIT UN, MAIS SIMPLEMENT SA VALEUR. * OR, LA TABLE DES NOMS D'OBJETS NE PERMET PAS DE RETROUVER UN NOM * CONNAISSANT UN POINTEUR (C-A-D UN OBJET) CAR PLUSIEURS NOMS * PEUVENT AVOIR ETE ATTRIBUES A UN MEME OBJET. * IL N'EST DONC PAS POSSIBLE DE RECUPERER LE NOM COMME UN SIMPLE * MOT QUAND CE NOM EST UN NOM D'OBJET. * * LA LECTURE D'UN ENTIER OU D'UN REEL COMME UN SIMPLE MOT NE * FONCTIONNE PAS ACTUELLEMENT, MAIS CELA PEUT ETRE FAIT * (MOYENNANT UN APPEL A UN SOUS-PROGRAMME ACCEPTANT DE COMMETTRE * QUELQUES INDELICATESSES VIS-A-VIS DE LA NORME FORTRAN77). * * ************************************************************************ * IMPLICIT INTEGER(I-N) -INC SMLMOTS -INC PPARAM -INC CCOPTIO * CHARACTER*4 MSPE(1) DATA MSPE/'* '/ CHARACTER*(LOCHAI) LEMOT * PARAMETER (INFINI = 9999) * * JGN = LOCOMP JGM = 10 IPMOTS= 0 IMO = 0 SEGINI,MLMOTS IPMOTS=MLMOTS * * * BOUCLE SUR LA LISTE D'OBJETS PASSES A L'OPERATEUR MOTS * ---------------------------------------------------------------- 100 CONTINUE * * ON LIT UN EVENTUEL MOT-CLE DE REPETITION (*) ... NFOIS=1 * * ...PUIS ON CHERCHE UN NOUVEAU MOT * * * => PAS DE NOUVEAU MOT IF (IRETOU.EQ.0) THEN * * ERREUR, car on attendait le caractere special * IF (IRET1.NE.0) GOTO 999 * * Sinon, on ajuste eventuellement le LISTMOTS et on sort IF (IMO.NE.JGM) THEN JGM=IMO SEGADJ,MLMOTS ENDIF GOTO 110 * * => NOUVEAU MOT TROUVE ELSE IF(IRETOU .GT. JGN)THEN JGN = IRETOU SEGADJ,MLMOTS ENDIF IF (IRET1.NE.0) THEN * ERREUR, car on attendait le caractere special * IF (LEMOT.NE.MSPE(1)) GOTO 999 ENDIF * * Sinon, on complète le LISTMOTS IMO=IMO+NFOIS IF (IMO.GT.JGM) THEN JGM=IMO * 2 + 10 SEGADJ,MLMOTS ENDIF DO JJ=1,NFOIS ENDDO * END IF GOTO 100 * ---------------------------------------------------------------- * 999 CONTINUE MOTERR=MSPE(1) RETURN * * 110 CONTINUE SEGDES,MLMOTS END
© Cast3M 2003 - Tous droits réservés.
Mentions légales