Télécharger ooores.eso

Retour à la liste

Numérotation des lignes :

ooores
  1. C OOORES SOURCE PV090527 26/04/24 08:23:19 12524
  2. SUBROUTINE OOORES (NTAPE,IREP,IPS)
  3. C--------------------------------------------------------------------
  4. C
  5. C RESTAURATION GLOBALE
  6. C
  7. C ON REIMPLANTE LES SEGMENTS DE DONNEES SAUVEGARDES
  8. C DANS UN ESPACE ESOPE DEJA INITIALISE EN CONSERVANT LES
  9. C MEMES VALEURS DE POINTEUR
  10. C
  11. C NTAPE SUR LE FICHIER SEQUENTIEL NTAPE
  12. C IREP REPERE DE LA SAUVEGARDE
  13. C
  14. C ->IPS POINTEUR DE REPRISE (PERMET DE RETROUVER TOUS LES SEGMENTS
  15. C
  16. C 18 FEVRIER 86 - ERREUR TROUVEE PAR MIREILLE BOULET (CENG GRENOBLE)
  17. C LORS DE LA SUPRESSION DES SEGMENTS EXISTANTS AU
  18. C MOMENT DE LA REPRISE , ON NE DISTINGUAIT PAS ENTRE
  19. C SUPRESSION D'UN MARQUEUR DE SUPER SEGMENT ET LA
  20. C SUPRESSION D'UN SEGMENT ORDINAIRE .
  21. C
  22. C PROGRAMMEUR : MOUGIN
  23. C MODIF : 03/11/88 CALL OOOXXX ... => SEGXXX ...
  24. C MODIF : 03/01/89 SUPPRIMER L'ARGUMENT LRET DU CALL OOOSUS
  25. C MODIF : 03/01/89 SUPPRIMER L'ARGUMENT IRET DU CALL OOODEX
  26. C
  27. C---------------------------------------------------------------------
  28. C
  29. %INC IOOSRE
  30. %INC IOOADR
  31. %INC IOOADZ
  32. %INC IOODES
  33. %INC IOOSGM
  34. %INC IOOVAL
  35. SEGMENT , IP
  36. INTEGER III(LS5-1)
  37. ENDSEGMENT
  38. C
  39. C****** INIT ZONE DE CONTROLE-->7 MOTS
  40. C
  41. INTEGER IREC (8)
  42. DATA IREC /8*0/
  43. C
  44. C****** SUPPRIMER TOUS LES SEGMENTS SAUF :
  45. C
  46. C - LE SEGMENT DES DESCRIPTEURS
  47. C - LES MAP DE DEBORDEMENT MEMOIRE
  48. C
  49. C****** INITIALISATION
  50. IF (MZPBUF.EQ.0) THEN
  51. IDX=MZIDEX
  52. ELSE
  53. IDX=MZPBUF+MDLDE
  54. ENDIF
  55. IDY=MZIDEY
  56. C ESPACE ESOPE JUSTE APRES INIT
  57. IF (MZIDEY.GE.MZIDEX) THEN
  58. LDDE=MDLDE
  59. DO IDE=IDX,IDY,LDDE
  60. IF (MDIDS(IDE).GE.0) THEN
  61. IP = IDE
  62. ITYP = MDTYP(IDE)
  63.  
  64. C MARQUEUR SUPER SEGMENT ?
  65.  
  66. IF (MDCAT(ITYP).EQ.MDMARK) THEN
  67. CALL OOOSUS (IP)
  68. ELSE
  69. SEGSUP , IP
  70. ENDIF
  71. ENDIF
  72. ENDDO
  73. ENDIF
  74. C
  75. C****** POSITIONNEMENT SUR LE FICHIER (ENR TYPE 1)
  76. C
  77. 110 READ (NTAPE,END=901) IREC
  78. IF (MIREPSVGDE.NE.IREP) GO TO 110
  79. IF (MITYPSVGDE.NE.1) GO TO 110
  80. C
  81. C****** ADAPTER LA TAILLE DU SEGMENT DES DESCRIPTEURS
  82. C
  83. C REINIT MZIDEY :
  84. MZIDEY=IDX-MDLDE
  85. C EVALUE LE NOMBRE DE SEGMENTS A RESTAURER ET LE NOMBRE DE SEGMENT
  86. C POTENTIEL DU SEGMENT DESCRIPTEUR AU MOMENT DE LA RESTAURATION
  87. NDE =(IDY-IDX)/MDLDE+1
  88. NSEG =MNSEGSVGDE
  89. IF (NSEG.GT.NDE) THEN
  90. NDDE=NSEG-NDE
  91. ELSE
  92. NDDE=0
  93. ENDIF
  94. CALL OOODEX (LRET,NDDE)
  95. IF (LRET.EQ.1) GO TO 904
  96. C IDE1P=DESCRIPTEUR PRECEDENT LA TETE DE CHAINE DES DESCRIPTEURS
  97. C LIBRES
  98. IDE1P=MZIDEY
  99. C
  100. C****** RESTAURER LES SEGMENTS
  101. C
  102. 120 READ (NTAPE,END=902) IREC
  103. IF (MIREPSVGDE.NE.IREP) GO TO 903
  104. C RESTAURER LONGUEUR ET POINTEUR DU SEGMENT
  105. IF (MITYPSVGDE.NE.2) GO TO 130
  106. LS5=MLSEGSVGDE
  107. IP =MIPSVGDE
  108. IDE=IP
  109. C CONTROLE DE VRAISEMBLANCE DE L'INDICE
  110. IF (IDE.LT.MZIDEX) GO TO 903
  111. IF (IDE.GT.MZIDEY) GO TO 903
  112. C ON PLACE LE DESCRIPTEUR IDE DERRIERE LA TETE DE CHAINE DES
  113. C DES DESCRIPTEURS LIBRES : IL SERA ATTRIBUE LORS DU SEGINI
  114. C LES DESCRIPTEURS INTERMEDIAIRES SONT PLACES EN QUEUE DE
  115. C CHAINE .
  116. C COMME LES SEGMENTS SONT SAUVEGARDES DANS L'ORDRE DU SEGMENT
  117. C DES DESCRIPTEURS,ON PARCOURERA AU MAXIMUM UNE FOIS LA CHAINE
  118. C DES DESCRIPTEURS LIBRES.
  119. 125 IDE1S=-MDIDS(MZIDE1)
  120. IF (IDE1S.NE.IDE) THEN
  121. MDIDS(MZIDE1)=MDIDS(IDE1S)
  122. MDIDS(IDE1P) =-IDE1S
  123. MDIDS(IDE1S) =-MZIDE1
  124. IDE1P=IDE1S
  125. GO TO 125
  126. ENDIF
  127. C
  128. CISI CALL OOOYIN (LRET,0,IP,LS5)
  129. SEGINI , IP
  130. IS4=MDISG(IDE)+MSLZ1
  131. C LECTURE D'UN ENR LG VARIABLE
  132. READ (NTAPE,END=902) IREC,(JSG(IS4+I),I=1,LS5)
  133. NDES=LMOD-1
  134. CISI CALL OOOYDE (LRET,0,IP,NDES)
  135. SEGDES , IP
  136. GO TO 120
  137. C
  138. C****** DERNIER ENREGISTREMENT
  139. C
  140. 130 IF (MITYPSVGDE.NE.3) GO TO 903
  141. IPS=MIPSVGDE
  142. RETURN
  143. C
  144. C****** DIAGNOSTIQUES
  145. C
  146. 901 CALL OOOERR (0,0,'OOORES : SAUVEGARDE NON TROUVEE')
  147. GO TO 950
  148. 902 CALL OOOERR (0,0,'OOORES : SAUVEGARDE INCOMPLETE')
  149. GO TO 950
  150. 903 CALL OOOERR (0,0,'OOORES : SAUVEGARDE INCOHERENTE')
  151. GO TO 950
  152. 904 CALL OOOERR (0,0,'OOORES : PAS ASSEZ DE PLACE MEMOIRE')
  153. GO TO 950
  154. 950 STOP 16
  155. END
  156.  
  157.  

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