1 : C LIRE01 SOURCE JC220346 12/05/16 21:15:05 7372 2 : SUBROUTINE LIRE01 (IPOIN1,IPOS,IPOIN2) 3 : ************************************************************************ 4 : * 5 : * L I R E 0 1 6 : * ----------- 7 : * 8 : * FONCTION: 9 : * --------- 10 : * 11 : * LIRE 2 OBJETS, L'UN ETANT UN INDICE DE POSITION DANS L'AUTRE 12 : * (UTILISE, A L'ORIGINE, POUR LES OPERATEURS "EXTRAIRE" ET 13 : * "ENLEVER"). 14 : * 15 : * MODE D'APPEL: 16 : * ------------- 17 : * 17 : * CALL LIRE01 (IPOIN1,IPOS,IPOIN2) 18 : * 19 : * PARAMETRES: (E)=ENTREE (S)=SORTIE 20 : * ----------- 21 : * 22 : * IPOS ENTIER (E) IPOS<>0 IPOIN2 PEUT ETRE UN LISTENTI 23 : * IPOS=0 IPOIN2 NE PEUT PAS ETRE UN LISTENTI 24 : * 25 : * IPOIN1 ENTIER (S) POINTEUR SUR LA LISTE A MODIFIER 26 : * 27 : * IPOIN2 ENTIER (S) POINTEUR SUR LA LISTE D'INDICES DE POSITION 28 : * (OU L'INDICE DE POSITION LUI-MEME). 29 : * 30 : * IPOS ENTIER (S) CHIFFRE INDIQUANT LES TYPES POINTES PAR 31 : * IPOIN1 ET IPOIN2 32 : * 33 : * |IPOS|=1 :: IPOIN1=LISTREEL 34 : * |IPOS|=2 :: IPOIN1=LISTENTI 35 : * |IPOS|=3 :: IPOIN1=LISTMOTS 36 : * |IPOS|=4 :: IPOIN1=LISTCHPO 37 : * 38 : * IPOS>0 :: IPOIN2=ENTIER 39 : * IPOS<0 :: IPOIN2=LISTENTI 40 : * 41 : * IPOS =0 :: PAS D'OBJET "LISTxxxx" TROUVÉ 42 : * 43 : * 44 : * MODE DE FONCTIONNEMENT 45 : * ---------------------- 46 : * 47 : * 48 : * SUITE A MODIF IL N'EST PLUS POSSIBLE DE LIRE UNE TABLE. 49 : * 50 : * 51 : * SOUS-PROGRAMMES APPELES: 52 : * ------------------------ 53 : * 54 : * LIRE, LIRENT 55 : * 56 : * AUTEUR, DATE DE CREATION: 57 : * ------------------------- 58 : * 59 : * PASCAL MANIGOT 5 DECEMBRE 1984 60 : * DATE DE MODIFICATION 22 JANVIER 1988 61 : * LANGAGE: 62 : * -------- 63 : * 64 : * FORTRAN77 65 : * 66 : ************************************************************************ 67 : * 68 : IMPLICIT INTEGER(I-N) 69 : 70 : -INC CCOPTIO 71 : 72 : CHARACTER*(8) CMOT 73 : LOGICAL ZLENTI 74 : 75 : 76 : * AUTORISE-T-ON INDIC1 A ETRE DE TYPE LISTENTI ? 77 : ZLENTI=(IPOS.NE.0) 78 : 79 : 80 : * LECTURE DE OBJET1 DANS IPOIN1 80 : CALL QUETYP(CMOT,0,IRETOU) 81 : IF (IRETOU.EQ.0) THEN 81 : CALL ERREUR(533) 82 : RETURN 83 : ENDIF 84 : 85 : IPOS=0 86 : IF (CMOT.EQ.'LISTREEL') IPOS=1 87 : IF (CMOT.EQ.'LISTENTI') IPOS=2 88 : IF (CMOT.EQ.'LISTMOTS') IPOS=3 89 : IF (CMOT.EQ.'LISTCHPO') IPOS=4 90 : IF (IPOS.EQ.0) THEN 91 : MOTERR(1:8)=CMOT 91 : CALL ERREUR(39) 92 : RETURN 93 : ELSE 93 : CALL LIROBJ(CMOT,IPOIN1,1,IRETOU) 94 : ENDIF 95 : 96 : 97 : * LECTURE DE INDIC1 DANS IPOIN2 97 : CALL QUETYP(CMOT,0,IRETOU) 98 : IF (IRETOU.EQ.0) THEN 98 : CALL ERREUR(533) 99 : RETURN 100 : ENDIF 101 : 102 : IF (CMOT.EQ.'ENTIER') THEN 103 : ISGN=1 103 : CALL LIRENT (IPOIN2,1,IRETOU) 104 : IF (IERR.NE.0) RETURN 105 : ELSEIF (ZLENTI.AND.CMOT.EQ.'LISTENTI') THEN 106 : ISGN=-1 106 : CALL LIROBJ('LISTENTI',IPOIN2,1,IRETOU) 107 : IF (IERR.NE.0) RETURN 108 : ELSE 109 : MOTERR(1:8)=CMOT 109 : CALL ERREUR(39) 110 : RETURN 111 : ENDIF 112 : IPOS=IPOS*ISGN 113 : 114 : 115 : END 116 : 117 : 118 :
© Cast3M 2003 - All rights reserved.
Disclaimer