Télécharger ooosav.eso

Retour à la liste

Numérotation des lignes :

ooosav
  1. C OOOSAV SOURCE PV090527 26/04/24 08:23:20 12524
  2. SUBROUTINE OOOSAV (NTAPE,IREP,IPS)
  3. C--------------------------------------------------------------------
  4. C
  5. C SAUVEGARDE GLOBALE
  6. C
  7. C NTAPE SUR LE FICHIER SEQUENTIEL NTAPE
  8. C IREP REPERE DE LA SAUVEGARDE
  9. C IPS POINTEUR DE REPRISE ( POUR RETROUVER TOUS LES SEGMENTS )
  10. C
  11. C 18 FEVRIER 86 - ERREUR TROUVEE PAR MIREILLE BOULET (CENG GRENOBLE)
  12. C LE DEUXIEME ARGUMENT IDE DU CALL OOOSUS (LRET,IDE)
  13. C EST REMIS A ZERO PAR OOOSUS , MAIS IDE EST AUSSI
  14. C L'INDICE DE LA BOUCLE . LA CORRECTION PROPOSEE PAR
  15. C MIREILLE BOULET : REMPLACER IDE PAR IP .
  16. C
  17. C PROGRAMMEUR : MOUGIN
  18. C MODIF : 03/11/88 CALL OOOXXX ... => SEGXXX ...
  19. C MODIF : 03/01/89 SUPPRIMER L'ARGUMENT LRET DU CALL OOOSUS
  20. C MODIF : 17/01/89 SUPPRIMER L'ARGUMENT IRET DU CALL OOOMRD
  21. C
  22. C---------------------------------------------------------------------
  23. C
  24. %INC IOOSRE
  25. %INC IOOADR
  26. %INC IOOADZ
  27. %INC IOODES
  28. %INC IOOSGM
  29. %INC IOOVAL
  30. %INC IOOUNIT
  31. POINTEUR IP.IP
  32. C
  33. C****** INIT ZONE DE CONTROLE-->7 MOTS
  34. C
  35. INTEGER IREC (8)
  36. DATA IREC /8*0/
  37. C
  38. C****** INITIALISATION
  39. C SI DEBORDEMENT DISQUE LES SEGMENTS CORRESPONDANTS NE SONT PAS
  40. C SAUVEGARDES
  41. IF (MZPBUF.EQ.0) THEN
  42. IDX=MZIDEX
  43. ELSE
  44. IDX=MZPBUF+MDLDE
  45. ENDIF
  46. IDY=MZIDEY
  47. LDDE=MDLDE
  48. NSGM=(IDY-IDX)/MDLDE+1
  49. C
  50. C****** PRESENCE DE SEGMENTS FIXES ?
  51. C
  52. IDFIX=MDACHN(FIXE)
  53. IF (MSIDS(MDISG(IDFIX)).NE.IDFIX) GO TO 901
  54. C
  55. C****** DESACTIVER TOUS LES SEGMENTS
  56. C
  57. DO IDE=IDX,IDY,LDDE
  58. ITYP=MDTYP(IDE)
  59. C DESCRIPTEUR LIBRE?
  60. IF (MDIDS(IDE).GE.0 ) THEN
  61. C DESCRIPTEUR ACTIF?
  62. IF (MDETAT(ITYP).EQ.MDACT .AND. MDCAT(ITYP).NE.MDMARK ) THEN
  63. CISI NDES=LMOD-1
  64. IP =IDE
  65. CISI CALL OOOYDE (LRET,0,IP,NDES)
  66. SEGDES , IP
  67. ENDIF
  68. ENDIF
  69. ENDDO
  70. C
  71. C******* PREMIER ENREGISTREMENT:INFO DE CONTROLE DE LA SVGDE
  72. C
  73. MLENRSVGDE=7
  74. MIREPSVGDE=IREP
  75. MITYPSVGDE=1
  76. MNSEGSVGDE=NSGM
  77. MNVERSVGDE=OOOVAL(GO,NUMVERSION)
  78. WRITE (NTAPE) IREC
  79. C
  80. C****** ENREGISTREMENTS DE SAUVEGARDE DES SEGMENTS (TYPE 2)
  81. C
  82. MITYPSVGDE=2
  83. C TRAITE TOUT LES DESCRIPT. DU SGM DES DESCRIPTEURS
  84. DO 40 IDE=IDX,IDY,LDDE
  85. C DESCRIPT. LIBRE?
  86. IF (MDIDS(IDE).GE.0) THEN
  87. IP =IDE
  88. ITYP =MDTYP(IDE)
  89. IQUEU=MDQUEU(ITYP)
  90. C
  91. C MARQUEUR SUPER SEGMENT ?
  92. C
  93. IF (MDCAT(ITYP).EQ.MDMARK) THEN
  94. C CALL OOOSUS (IDE)
  95. CALL OOOSUS (IP)
  96. GO TO 40
  97. ENDIF
  98. C
  99. C****** COMPOSANT D'UN SUPER SEGMENT ?
  100. C EN ZONE DE DEBORDEMENT --> RAMENE EN MEMOIRE
  101. C EN MEMOIRE --> ON ECLATE LE SUPER SEGMENT
  102. C
  103. IF (MDCAT (ITYP).EQ.MDBLOCK) THEN
  104. IF (MDDISK(ITYP).EQ.MDDISQUE) THEN
  105. CALL OOOMRD (LRET,IDE)
  106. IF (LRET.EQ.1) GO TO 902
  107. ENDIF
  108. CALL OOOSUS (MDMK(IDE))
  109. ENDIF
  110. CISI CALL OOOYAC (LRET,0,IP,1)
  111. SEGACT , IP
  112. IS4=MDISG(IDE)+MSLZ1
  113. LS5=MSLS1(IS4-MSLZ1)-MSLCZ
  114. C SVGDE LG DONNEE ET INDICE DESCRIPT
  115. MLENRSVGDE=7
  116. MLSEGSVGDE=LS5
  117. MIPSVGDE =IP
  118. WRITE (NTAPE) IREC
  119. MLENRSVGDE=7+LS5
  120. WRITE (NTAPE) IREC,(JSG(IS4+I),I=1,LS5)
  121. C DESACTIVATION SANS MODIFS
  122. IF (IQUEU.EQ.MDLRU) THEN
  123. SEGDES , IP*(NOMOD,LRU)
  124. CISI NDES=LNOMOD-1
  125. ELSE
  126. SEGDES , IP*(NOMOD,MRU)
  127. CISI NDES=MNOMOD-1
  128. ENDIF
  129. CISI CALL OOOYDE (LRET,0,IP,NDES)
  130. ENDIF
  131. 40 CONTINUE
  132. C
  133. C****** DERNIER ENREGISTREMENT
  134. C
  135. MLENRSVGDE=7
  136. MITYPSVGDE=3
  137. MIPSVGDE =IPS
  138. WRITE (NTAPE) IREC
  139. RETURN
  140. C---------------------------------------------------------------
  141. C
  142. C MESSAGES D'ERREUR
  143. C
  144. 901 CALL OOOERR (0,0,'OOOSAV : PRESENCE DE SEGMENTS FIXES ?')
  145. GO TO 950
  146. 902 CALL OOOERR (0,0,'OOOSAV : PAS ASSEZ DE PLACE MEMOIRE')
  147. GO TO 950
  148. 950 STOP 16
  149. END
  150.  
  151.  

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