Download mots.eso

Back to the list

   1 : C MOTS      SOURCE    JC220346  12/05/16    21:15:06     7375           
   2 :       SUBROUTINE MOTS                                                           
   3 : ************************************************************************        
   4 : *                                                                               
   5 : *                               M O T S                                         
   6 : *                               -------                                         
   7 : *                                                                               
   8 : *            SOUS-PROGRAMME ASSOCIE A L'OPERATEUR "MOTS"                        
   9 : *                                                                               
  10 : * FONCTION:                                                                     
  11 : * ---------                                                                     
  12 : *                                                                               
  13 : *     ENREGISTRER UN OBJET DE TYPE 'LISTMOTS'.                                  
  14 : *                                                                               
  15 : * PHRASE D'APPEL (EN GIBIANE):                                                  
  16 : * ----------------------------                                                  
  17 : *                                                                               
  18 : *     OBJET1 = MOTS MOT1 (MOT2 (MOT3 ...) ) ;                                   
  19 : *                                                                               
  20 : *     LES PARENTHESES INDIQUANT DES ARGUMENTS FACULTATIFS.                      
  21 : *                                                                               
  22 : * ARGUMENTS (EN GIBIANE):                                                       
  23 : * -----------------------                                                       
  24 : *                                                                               
  25 : *     MOT1,              )  CHAINES DE 4 CARACTERES QUELCONQUES NE              
  26 : *      MOT2,             )) CONTENANT NI BLANC, NI CARACTERE RESERVE            
  27 : *       MOT3, ...        )  (TEL LE SIGNE "=").                                 
  28 : *                                                                               
  29 : *     OBJET1    'LISTMOTS'  LISTE DE MOTS CREEE.                                
  30 : *                                                                               
  31 : * DICTIONNAIRE DES VARIABLES: (ORDRE ALPHABETIQUE)                              
  32 : * ---------------------------                                                   
  33 : *                                                                               
  34 : *     IPMOTS  ENTIER    POINTEUR SUR L'OBJET "OBJET1".                          
  35 : *     LEMOT   ENTIER    CONTIENT L'UN DES MOTS "MOT1", MOT2", ...               
  36 : *                                                                               
  37 : * SOUS-PROGRAMMES APPELES:                                                      
  38 : * ------------------------                                                      
  39 : *                                                                               
  40 : *     LIRCHA, ECROBJ, ERREUR.                                                   
  41 : *                                                                               
  42 : * REMARQUES:                                                                    
  43 : * ----------                                                                    
  44 : *                                                                               
  45 : *     L'APPEL AU SOUS-PROGRAMME "ERREUR" EST DU AU FAIT QUE LE                  
  46 : *     SOUS-PROGRAMME "LIROBJ" NE FOURNIT PAS LE NOM DE L'OBJET, QUAND IL        
  47 : *     EN RECONNAIT UN, MAIS SIMPLEMENT SA VALEUR.                               
  48 : *     OR, LA TABLE DES NOMS D'OBJETS NE PERMET PAS DE RETROUVER UN NOM          
  49 : *     CONNAISSANT UN POINTEUR (C-A-D UN OBJET) CAR PLUSIEURS NOMS               
  50 : *     PEUVENT AVOIR ETE ATTRIBUES A UN MEME OBJET.                              
  51 : *     IL N'EST DONC PAS POSSIBLE DE RECUPERER LE NOM COMME UN SIMPLE            
  52 : *     MOT QUAND CE NOM EST UN NOM D'OBJET.                                      
  53 : *                                                                               
  54 : *     LA LECTURE D'UN ENTIER OU D'UN REEL COMME UN SIMPLE MOT NE                
  55 : *     FONCTIONNE PAS ACTUELLEMENT, MAIS CELA PEUT ETRE FAIT                     
  56 : *     (MOYENNANT UN APPEL A UN SOUS-PROGRAMME ACCEPTANT DE COMMETTRE            
  57 : *     QUELQUES INDELICATESSES VIS-A-VIS DE LA NORME FORTRAN77).                 
  58 : *                                                                               
  59 : * AUTEUR, DATE DE CREATION:                                                     
  60 : * -------------------------                                                     
  61 : *                                                                               
  62 : *     PASCAL MANIGOT     22 OCTOBRE 1984                                        
  63 : *                                                                               
  64 : * LANGAGE:                                                                      
  65 : * --------                                                                      
  66 : *                                                                               
  67 : *     ESOPE + FORTRAN77 + EXTENSION: CARACTERES MIS DANS DES ENTIERS            
  68 : *                                                                               
  69 : ************************************************************************        
  70 : *                                                                               
  71 :       IMPLICIT INTEGER(I-N)
  72 : -INC SMLMOTS                                                                    
  73 : -INC CCOPTIO                                                                    
  74 : *
  75 :       CHARACTER*4 MSPE(1)
  76 :       DATA MSPE/'*   '/
  77 :       CHARACTER*(4) LEMOT                                                       
  78 : *                                                                               
  79 :       PARAMETER (INFINI = 9999)                                                 
  80 : *                                                                               
  81 : *                                                                               
  82 :       JGN=4                                                                     
  83 :       JGM=10                                                                     
  84 :       SEGINI,MLMOTS                                                             
  85 :       IPMOTS=MLMOTS
  86 :       IMO=0                                                           
  87 : *
  88 : *
  89 : *     BOUCLE SUR LA LISTE D'OBJETS PASSES A L'OPERATEUR MOTS
  90 : *     ----------------------------------------------------------------                                     
  91 :       DO 100 IB100=1,INFINI
  92 : *
  93 : *         ON LIT UN EVENTUEL MOT-CLE DE REPETITION (*) ...
  94 :           NFOIS=1
  94 :           CALL LIRENT(NFOIS,0,IRET1)
  95 : *
  96 : *         ...PUIS ON CHERCHE UN NOUVEAU MOT
  96 :           CALL LIRCHA(LEMOT,0,IRETOU)
  97 : *
  98 : *
  99 : *      => PAS DE NOUVEAU MOT
 100 :           IF (IRETOU.EQ.0) THEN
 101 : *
 102 : *             ERREUR, car on attendait le caractere special *
 103 :               IF (IRET1.NE.0) GOTO 999
 104 : *
 105 : *             Sinon, on ajuste eventuellement le LISTMOTS et on sort
 106 :               IF (IMO.NE.JGM) THEN
 107 :                   JGM=IMO
 108 :                   SEGADJ MLMOTS
 109 :               ENDIF                                               
 110 :               GOTO 110
 111 : *
 112 : *      => NOUVEAU MOT TROUVE
 113 :           ELSE
 114 : *
 115 :               IF (IRET1.NE.0) THEN
 116 : *                 ERREUR, car on attendait le caractere special *
 117 :                   IF (LEMOT.NE.MSPE(1)) GOTO 999
 117 :                   CALL LIRCHA(LEMOT,1,IRETOU)
 118 :               ENDIF
 119 : *
 120 : *             Sinon, on complète le LISTMOTS
 121 :               IMO=IMO+NFOIS
 122 :               IF (IMO.GT.JGM) THEN
 123 :                   JGM=IMO+10
 124 :                   SEGADJ MLMOTS
 125 :               ENDIF
 126 :               DO JJ=1,NFOIS
 127 :                   MOTS(IMO+JJ-NFOIS)=LEMOT
 128 :               ENDDO
 129 : *
 130 :           END IF
 131 :  100  CONTINUE
 132 : *     END DO
 133 :       GOTO 110
 134 : *     ----------------------------------------------------------------     
 135 : *
 136 : *
 137 :  999  CONTINUE
 138 :       MOTERR(1:4)=MSPE(1)
 138 :       CALL ERREUR(396)
 139 :       RETURN
 140 : *
 141 : *
 142 :  110  CONTINUE                                                            
 143 :       SEGDES,MLMOTS                                                             
 143 :       CALL ECROBJ ('LISTMOTS',IPMOTS)                                           
 144 : *                                                                               
 145 :       END                                                                       
 146 :  
 147 :  

© Cast3M 2003 - All rights reserved.
Disclaimer