Télécharger ecctab.eso

Retour à la liste

Numérotation des lignes :

ecctab
  1. C ECCTAB SOURCE CB215821 19/12/02 21:15:01 10400
  2. SUBROUTINE ECCTAB(MTABLE,TAPIND,IVALIN,XVALIN,CHARIN,LOGIN,IOBIN,
  3. $ TAPOBJ,IVALRE,XVALRE,CHARRE,LOGRE,IOBRE)
  4. C
  5. C **** MET UN OBJET DANS UNE TABLE
  6. C **** TAPIND TYPE DE L'INDICE CHARACTER*(*)
  7. C **** PUIS LA VALEUR DE L'INDICE IVALIN SI ENTIER
  8. C **** XVALIN SI FLOTTANT
  9. C **** CHARIN SI MOT
  10. C **** LOGIN SI LOGIQUE
  11. C **** IOBIN POUR TOUT AUTRE TYPE
  12. C **** TAPOBJ TYPE DE L'OBJET CHARACTER*(*)
  13. C **** PUIS LA VALEUR DE L'INDICE IVALRE SI ENTIER
  14. C **** XVALRE SI FLOTTANT
  15. C **** CHARRE SI MOT
  16. C **** LOGRE SI LOGIQUE
  17. C **** IOBRE POUR TOUT AUTRE TYPE
  18. C ****
  19. C
  20. C
  21. IMPLICIT INTEGER(I-N)
  22. -INC CCNOYAU
  23. -INC SMTABLE
  24.  
  25. -INC PPARAM
  26. -INC CCOPTIO
  27. -INC CCASSIS
  28. external long
  29. REAL*8 XVALIN,XVALRE
  30. LOGICAL LOGRE,LOGIN
  31. CHARACTER*(*) TAPIND,TAPOBJ,CHARIN,CHARRE
  32. CHARACTER*(8) CHARA,TYPIND,TYPOBJ
  33. if(nbesc.ne.0) segact ipiloc
  34. TYPIND=TAPIND
  35. TYPOBJ=TAPOBJ
  36. SEGACT MTABLE*MOD
  37. IN = MLOTAB
  38. C
  39. C ***** RECHERCHE DE L'INDICE S'IL EXISTE
  40. C
  41. IA=4
  42. IF(TYPIND.EQ.'ENTIER ') IA=1
  43. IF(TYPIND.EQ.'FLOTTANT') IA=2
  44. IF(TYPIND.EQ.'MOT ') IA=3
  45. IF(TYPIND.EQ.'METHODE ') IA=3
  46. IF(TYPIND.EQ.'LOGIQUE ') IA=5
  47. C ****** dans le cas des mots on ignore les blancs situes a la fin
  48. IF(IA.EQ.3) IL=LONG(CHARIN)
  49. IF(IN.EQ.0) GOTO 10
  50. DO 1 I=1,IN
  51. MT=I
  52. IF(MTABTI(I).NE.TYPIND ) GOTO 1
  53. GOTO (11,12,13,14,15),IA
  54.  
  55. 11 CONTINUE
  56. IF(MTABII(I).NE.IVALIN) GOTO 1
  57. GOTO 20
  58.  
  59. 12 CONTINUE
  60. IF(RMTABI(I).NE.XVALIN ) GOTO 1
  61. GOTO 20
  62.  
  63. 15 CONTINUE
  64. IF(IPLOGI(MTABII(I)).NEQV.LOGIN ) GOTO 1
  65. GOTO 20
  66.  
  67. 14 CONTINUE
  68. IF(MTABII(I).NE.IOBIN) GOTO 1
  69. GOTO 20
  70.  
  71. 13 CONTINUE
  72. IP =MTABII(I)
  73. ID =IPCHAR(IP)
  74. IFI=IPCHAR(IP+1)
  75. IL1=LONG(ICHARA(ID:IFI-1))
  76. IF(IL1.NE.IL) GOTO 1
  77. IF(CHARIN(1:IL).NE.ICHARA(ID:ID+IL-1)) GOTO 1
  78. GOTO 20
  79. 1 CONTINUE
  80.  
  81. 10 CONTINUE
  82. C
  83. C ***** L'INDICE N'EXISTE PAS ON L'AJOUTE
  84. C
  85. MLOTAB=MLOTAB+1
  86. M=MTABII(/1)
  87. IF (MLOTAB .GT. M) THEN
  88. M=MLOTAB + MAX(INT(REAL(MLOTAB)*0.2D0),50)
  89. SEGADJ,MTABLE
  90. ENDIF
  91. M=MLOTAB
  92. MT=M
  93. MTABTI(M)=TYPIND
  94. IF(IA.EQ.1) THEN
  95. IRET=IVALIN
  96. ELSEIF(IA.EQ.2) THEN
  97. RMTABI(MT)=XVALIN
  98. GOTO 20
  99. ELSEIF(IA.EQ.3) THEN
  100. CALL POSCHA( CHARIN(1:IL),IRET)
  101. GOTO 200
  102. ELSEIF(IA.EQ.5) THEN
  103. call poslog(login,iret)
  104. GOTO 200
  105. ELSEIF(IA.EQ.4) THEN
  106. IRET=IOBIN
  107. ENDIF
  108. 200 MTABII(MT)=IRET
  109. * if(nbesc.ne.0) segact ipiloc
  110. 20 CONTINUE
  111.  
  112. C
  113. C ***** FINI POUR L'INDICE FAIRE LA VALEUR
  114. C
  115. IA=4
  116. IF(TYPOBJ.EQ.'ENTIER ') IA=1
  117. IF(TYPOBJ.EQ.'FLOTTANT') IA=2
  118. IF(TYPOBJ.EQ.'MOT ') IA=3
  119. IF(TYPOBJ.EQ.'LOGIQUE ') IA=5
  120. IF(IA.EQ.3) IL=LEN(CHARRE)
  121. MTABTV(MT)= TYPOBJ
  122. IF(IA.EQ.1) THEN
  123. IRET=IVALRE
  124. ELSEIF(IA.EQ.2) THEN
  125. IRET=0
  126. RMTABV(MT)=XVALRE
  127. GOTO 300
  128. ELSEIF(IA.EQ.3) THEN
  129. CALL POSCHA(CHARRE,IRET)
  130. GOTO 300
  131. ELSEIF(IA.EQ.5) THEN
  132. call poslog(logre,iret)
  133. GOTO 300
  134. ELSEIF(IA.EQ.4) THEN
  135. IRET=IOBRE
  136. ENDIF
  137. 300 MTABIV(MT)=IRET
  138. SEGDES,MTABLE
  139. If(nbesc.ne.0) SEGDES,IPILOC
  140.  
  141. END
  142.  
  143.  

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