      SUBROUTINE FACAGE ( CDNOMC, LDGARD )
#include "facom0.h"
C****
C        Sous-programme servant a redefinir l'option de conservation
C     d'un cadre preexistant ( CAdre a Garder Eventuellement... )
C**
C        Arguments : CDNOMC ==> Nom symbolique du cadre;
C  (tous d'Entree)   LDGARD ==> Vrai si le cadre doit etre conserve meme
C                               apres la fermeture du dernier fichier
C                               qui s'y rattache.
C
#include "precision.h"
C
#include "facomp.h"
#include "facom1.h"
C
      INTEGER ILCDNO, ILNOMC, J, IRANGC, IREP, INIMES, INUMER
C
      LOGICAL LLPREA, LLVERG, LDGARD
C
      CHARACTER CDNOMC*(*)
C
      SAVE LLPREA
C
      DATA LLPREA/ .TRUE. /
C**
C     0.  -  SI PREMIERE UTILISATION, APPEL AU SOUS-PROGRAMME "FARINE".
C-----------------------------------------------------------------------
C
      IF (LLPREA) THEN
        CALL FARINE (2)
        LLPREA=.FALSE.
      ENDIF
C**
C     1.  -  CONTROLE DE L'ARGUMENT "CDNOMC".
C-----------------------------------------------------------------------
C
      LLVERG=.FALSE.
      ILCDNO=LEN (CDNOMC)
      ILNOMC=1
C
      IF (ILCDNO.LE.0) THEN
        IREP=-65
        GOTO 1001
      ELSEIF (CDNOMC.EQ.' ') THEN
        IREP=-68
        GOTO 1001
      ENDIF
C
      DO 101 J=ILCDNO,1,-1
C
      IF (CDNOMC(J:J).NE.' ') THEN
        ILNOMC=J
        GOTO 102
      ENDIF
C
  101 CONTINUE
C
  102 CONTINUE
C
      IF (ILNOMC.GT.NCPCAD) THEN
        IREP=-65
        GOTO 1001
      ENDIF
C**
C     2.  -  RECHERCHE DU CADRE DANS LES TABLES.
C-----------------------------------------------------------------------
C
C             Verrouillage global prealable, si necessaire.
C
      IF (LFAMUL) CALL LFIVER (VRGLAS,'ON')
      LLVERG=LFAMUL
C
      CALL FANUCA (CDNOMC,IRANGC,.FALSE.)
C
      IF (IRANGC.EQ.0) THEN
        IREP=-51
        GOTO 1001
      ENDIF
C**
C     3.  -  MISE A JOUR DU NIVEAU DE CONSERVATION.
C-----------------------------------------------------------------------
C
      IF (LDGARD) THEN
        NGARDE(IRANGC)=2
      ELSE
        NGARDE(IRANGC)=0
      ENDIF
C
      IREP=0
C**
C    10.  -  PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
C            VIA LE sous-programme "FAIPAR" .
C-----------------------------------------------------------------------
C
 1001 CONTINUE
C
C          Deverrouillage global eventuel.
C
      IF (LLVERG) CALL LFIVER (VRGLAS,'OFF')
C
      LLFATA=IREP.NE.0.AND.NRFAGA.NE.2
C
      IF (LLFATA.OR.NIMSGA.EQ.2) THEN
        INIMES=2
        CLNSPR='FACAGE'
C
        IF (IREP.EQ.-65.AND.ILCDNO.LE.0) THEN
          ILNOMC=8
          CLACTI(1:ILNOMC)=CHAINC(:ILNOMC)
        ELSE
          ILNOMC=MIN (LEN (CLACTI),ILNOMC)
          CLACTI(1:ILNOMC)=CDNOMC(1:ILNOMC)
        ENDIF
C
        ILNOMC=MIN (ILNOMC,NCPCAD)
        WRITE (UNIT=CLMESS,FMT='(''CDNOMC= '''''',A,'''''', LDGARD= '',
     S         L1,'', CODE INTERNE='',I4)') CLACTI(1:ILNOMC),LDGARD,IREP
        INUMER=JPNIIL
        CALL FAIPAR (INUMER,INIMES,IREP,LLFATA,CLMESS,CLNSPR,
     S               CLACTI(1:ILNOMC),.FALSE.)
      ENDIF
C
      RETURN
      END
