/* ACRGFL.f -- translated by f2c (version 19960827).
   You must link the resulting object file with the libraries:
	-lf2c -lm   (in that order)
*/

#include "Data_f2c.h"

/* Common Block Declarations */

extern struct {
    long int icore[12000];	/* was [12][1000] */
    integer ncore, lprot;
} mcrgene_;

#define mcrgene_1 mcrgene_

/* Subroutine */ int macrgfl_(iadfld, iadflf, iphase, iznuti)
integer  *iphase, *iznuti;
long int *iadfld,  *iadflf;
{
    /* Initialized data */

    static integer ifois = 0;

    static char cbid[1];
    static integer ibid, ienr;
    static doublereal t[1];
    static integer novfl;
    static long int ioff,iadrfl, iadt;
    extern /* Subroutine */ int macrbrk_(), maoverf_(), mcrlocv_(), matrsym_()
	    ;


/* < */
/* **NOTICE */
/*  THIS SOFTWARE IS THE PROPERTY OF CISIGRAPH. */
/*  THIS CODE MUST NOT BE DISTRIBUTED OR COPIED WITHOUT THE PRIOR */
/*  WRITTEN PERMISSION OF CISIGRAPH AND IS ONLY TO BE USED ON THE */
/*  SITE WHERE IT IS INSTALLED BY CISIGRAPH */
/* **NOTICE */

/* ***********************************************************************
 */

/*     FONCTION : */
/*     ---------- */
/*       MISE EN PLACE DES DEUX FLAGS DE DEBUT ET DE FIN DE LA ZONE */
/*       ALLOUEE ET MISE A OVERFLOW DE L'ESPACE UTILISATEUR EN PHASE */
/*       DE PRODUCTION. */

/*     MOTS CLES : */
/*     ----------- */
/*       ALLOCATION, CONTROLE, DEBORDEMENT */

/*     ARGUMENTS D'ENTREE : */
/*     -------------------- */
/*       IADFLD : ADRESSE DU FLAG DE DEBUT */
/*       IADFLF : ADRESSE DU FLAG DE FIN */
/*       IPHASE : TYPE DE VERSION LOGICIELLE : */
/*                0 = VERSION OFFICIELLE */
/*                1 = VERSION PRODUCTION */
/*       IZNUTI : TAILLE DE LA ZONE UTILISATEUR EN OCTETS */

/*     ARGUMENTS DE SORTIE : */
/*     --------------------- */
/*       NEANT */

/*     COMMONS UTILISES : */
/*     ------------------ */

/*     REFERENCES APPELEES : */
/*     --------------------- */
/*       CRLOCT,MACRCHK */

/*     DESCRIPTION/REMARQUES/LIMITATIONS : */
/*     ----------------------------------- */

/* $    HISTORIQUE DES MODIFICATIONS : */
/*     ------------------------------ */
/*       25-09-91 : DGZ ; GERE LES FLAGS DANS LE COMMUN MCRGENE */
/*       21-08-90 : DGZ ; APPELS DE MACRCHK DANS LES DEUX CAS (AJOUT,SUPP)
 */
/*       04-11-89 : CR ; AJOUT DE OPTIONS /CHECK=NOBOUNDS . */
/*       03-10-89 : DGZ ; REMPLACE COMMON ACFLAG PAR INCLUDE ACFLAG.INC */
/*       09-06-89 : PP  ; CORRECTION DU CALCUL DE L'OFFSET */
/*       31-05-89 : DGZ ; OPTIMISATION DE LA GESTION DU TABLEAU DES FLAGS 
*/
/*       23-05-89 : DGZ ; CORRECTION DEBORDEMENT DU TABLEAU ACRTAB */
/*       11-05-89 : DGZ ; CREATION DE LA VERSION ORIGINALE */
/* > */
/* ***********************************************************************
 */


/*     INCLUDE MCRGENE */
/* < */
/* **NOTICE */
/*  THIS SOFTWARE IS THE PROPERTY OF CISIGRAPH. */
/*  THIS CODE MUST NOT BE DISTRIBUTED OR COPIED WITHOUT THE PRIOR */
/*  WRITTEN PERMISSION OF CISIGRAPH AND IS ONLY TO BE USED ON THE */
/*  SITE WHERE IT IS INSTALLED BY CISIGRAPH */
/* **NOTICE */

/* ***********************************************************************
 */

/*     FONCTION : */
/*     ---------- */
/*        TABLE DE GESTION DES ALLOCATIONS DYNAMIQUES DE MEMOIRE */

/*     MOTS CLES : */
/*     ----------- */
/*        SYSTEME, MEMOIRE, ALLOCATION */

/*     DEMSCRIPTION/REMARQUES/LIMITATIONS : */
/*     ----------------------------------- */

/* $    HISTORIQUE DES MODIFICATIONS : */
/*     ------------------------------ */
/*       23-11-93 : FCR; AF93125U3A007 : MAXCR 200 --> 1000 */
/*       08-10-92 : FCR; DMSFRO131 : Modif pour DEBUG-ALLOC */
/*       25-09-91 : DGZ; AJOUT INFOs SUPPLEMENTAIREs POUR GESTION FLAGS */
/*       18-01-91 : DGZ; MAXCR PASSE DE 100 A 200 SUR DEMANDE GDD */
/*       18-05-90 : DGZ; DECLARATION TYPE INTEGER POUR MAXCR */
/*       20-06-88 : PP ; MAXCR PASSE DE 50 A 100, SUR DEMANDE OG */
/*                       + AJOUT DE COMMENTAIRES */
/*       26-02-88 : PP ; MAXCR PASSE DE 40 A 50, SUR DEMANDE AB . */
/*       15-04-85 : BF ; VERSION D'ORIGINE */
/* > */
/* ***********************************************************************
 */

/*   ICORE : TABLE DES ALLOCS EXISTANTES, AVEC POUR CHACUNE : */
/*         1 : NIVEAU DE PROTECTION (0=PAS PROTEGE, AUTRE=PROTEGE) */
/*             (PROTEGE SIGNIFIE PAS DETRUIT PAR CRRSET .) */
/*         2 : UNITE D'ALLOCATION */
/*         3 : NB D'UNITES ALLOUEES */
/*         4 : ADRESSE DE REFERENCE DU TABLEAU */
/*         5 : IOFSET */
/*         6 : NUMERO ALLOCATION STATIQUE */
/*         7 : Taille demandee en allocation */
/*         8 : adresse du debut de l'allocation */
/*         9 : Taille de la ZONE UTILISATEUR */
/*        10 : ADRESSE DU FLAG DE DEBUT */
/*        11 : ADRESSE DU FLAG DE FIN */
/*        12 : Rang de creation de l'allocation */

/*   NDIMCR : NBRE DE DONNEES DE CHAQUE ALLOC DANS ICORE */
/*   NCORE : NBRE D'ALLOCS EN COURS */
/*   LPROT : COMMUNICATION ENTRE CRPROT ET MCRRQST, REMIS A 0 PAR MCRRQST 
*/
/*   FLAG  : VALEUR DU FLAG UTILISE POUR LES DEBORDEMENTS */



/* ----------------------------------------------------------------------*
 */


    if (ifois == 0) {
	matrsym_("NO_OVERFLOW", cbid, &novfl, &ibid, 11L, 1L);
	ifois = 1;
    }

/*  CALCUL DE L'ADRESSE DE T */
    mcrlocv_(t, &iadt);

/* CALCUL DE l"OFFSET */
    ioff = (*iadfld - iadt) / 8;

/*  MISE A OVERFLOW DE LA ZONE UTILISATEUR EN CAS DE VERSION PRODUCTION */
    if (*iphase == 1 && novfl == 0) {
	ienr = *iznuti / 8;
	maoverf_(&ienr, &t[ioff + 1]);
    }

/*  MISE A JOUR DU FLAG DE DEBUT */
    t[ioff] = -134744073.;

/*  APPEL BIDON POUR PERMETTRE L'ARRET AU DEBUGGER : */
    iadrfl = *iadfld;
    macrbrk_();

/*  MISE A JOUR DU FLAG DE DEBUT */
    ioff = (*iadflf - iadt) / 8;
    t[ioff] = -134744073.;

/*  APPEL BIDON POUR PERMETTRE L'ARRET AU DEBUGGER : */
    iadrfl = *iadflf;
    macrbrk_();

 return 0 ;
} /* macrgfl_ */

