Télécharger lire01.eso

Retour à la liste

Numérotation des lignes :

lire01
  1. C LIRE01 SOURCE SP204843 24/09/05 21:15:03 12005
  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. *
  18. * CALL LIRE01 (IPOIN1,IPOS,IPOIN2)
  19. *
  20. * PARAMETRES: (E)=ENTREE (S)=SORTIE
  21. * -----------
  22. *
  23. * IPOS ENTIER (E) IPOS<>0 IPOIN2 PEUT ETRE UN LISTENTI
  24. * IPOS=0 IPOIN2 NE PEUT PAS ETRE UN LISTENTI
  25. *
  26. * IPOIN1 ENTIER (S) POINTEUR SUR LA LISTE A MODIFIER
  27. *
  28. * IPOIN2 ENTIER (S) POINTEUR SUR LA LISTE D'INDICES DE POSITION
  29. * (OU L'INDICE DE POSITION LUI-MEME).
  30. *
  31. * IPOS ENTIER (S) CHIFFRE INDIQUANT LES TYPES POINTES PAR
  32. * IPOIN1 ET IPOIN2
  33. *
  34. * |IPOS|=1 :: IPOIN1=LISTREEL
  35. * |IPOS|=2 :: IPOIN1=LISTENTI
  36. * |IPOS|=3 :: IPOIN1=LISTMOTS
  37. * |IPOS|=4 :: IPOIN1=LISTCHPO
  38. * |IPOS|=5 :: IPOIN1=LISTOBJE
  39. *
  40. * IPOS>0 :: IPOIN2=ENTIER
  41. * IPOS<0 :: IPOIN2=LISTENTI
  42. *
  43. * IPOS =0 :: PAS D'OBJET "LISTxxxx" TROUVÉ
  44. *
  45. *
  46. * MODE DE FONCTIONNEMENT
  47. * ----------------------
  48. *
  49. *
  50. * SUITE A MODIF IL N'EST PLUS POSSIBLE DE LIRE UNE TABLE.
  51. *
  52. *
  53. * SOUS-PROGRAMMES APPELES:
  54. * ------------------------
  55. *
  56. * LIRE, LIRENT
  57. *
  58. * AUTEUR, DATE DE CREATION:
  59. * -------------------------
  60. *
  61. * PASCAL MANIGOT 5 DECEMBRE 1984
  62. * DATE DE MODIFICATION 22 JANVIER 1988
  63. * SERGE PASCAL 5 SEPTEMBRE 2024 : LECTURE D'UN LISTOBJE
  64. *
  65. * LANGAGE:
  66. * --------
  67. *
  68. * FORTRAN77
  69. *
  70. ************************************************************************
  71. *
  72. IMPLICIT INTEGER(I-N)
  73.  
  74.  
  75. -INC PPARAM
  76. -INC CCOPTIO
  77.  
  78. CHARACTER*(8) CMOT
  79. LOGICAL ZLENTI
  80.  
  81. PARAMETER (NBMO=5)
  82. CHARACTER*8 CLIST(NBMO)
  83.  
  84. DATA CLIST /'LISTREEL','LISTENTI','LISTMOTS','LISTCHPO',
  85. & 'LISTOBJE'/
  86.  
  87. * AUTORISE-T-ON INDIC1 A ETRE DE TYPE LISTENTI ?
  88. ZLENTI=(IPOS.NE.0)
  89.  
  90.  
  91. * LECTURE DE OBJET1 DANS IPOIN1
  92. CALL QUETYP(CMOT,0,IRETOU)
  93. IF (IRETOU.EQ.0) THEN
  94. CALL ERREUR(533)
  95. RETURN
  96. ENDIF
  97.  
  98. CALL PLACE(CLIST,NBMO,IPOS,CMOT)
  99. IF (IPOS.EQ.0) THEN
  100. MOTERR(1:8)=CMOT
  101. CALL ERREUR(39)
  102. RETURN
  103. ELSE
  104. CALL LIROBJ(CMOT,IPOIN1,1,IRETOU)
  105. ENDIF
  106.  
  107.  
  108. * LECTURE DE INDIC1 DANS IPOIN2
  109. CALL QUETYP(CMOT,0,IRETOU)
  110. IF (IRETOU.EQ.0) THEN
  111. CALL ERREUR(533)
  112. RETURN
  113. ENDIF
  114.  
  115. IF (CMOT.EQ.'ENTIER') THEN
  116. ISGN=1
  117. CALL LIRENT (IPOIN2,1,IRETOU)
  118. IF (IERR.NE.0) RETURN
  119. ELSEIF (ZLENTI.AND.CMOT.EQ.'LISTENTI') THEN
  120. ISGN=-1
  121. CALL LIROBJ('LISTENTI',IPOIN2,1,IRETOU)
  122. IF (IERR.NE.0) RETURN
  123. ELSE
  124. MOTERR(1:8)=CMOT
  125. CALL ERREUR(39)
  126. RETURN
  127. ENDIF
  128. IPOS=IPOS*ISGN
  129.  
  130. RETURN
  131. END
  132.  
  133.  
  134.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales