/* ACRMSG.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"

/* Table of constant values */

static integer c__1 = 1;

/* Subroutine */ int macrmsg_(crout, num, it, xt, ct, crout_len, ct_len)
char *crout;
integer *num, *it;
doublereal *xt;
char *ct;
ftnlen crout_len;
ftnlen ct_len;
{
    /* Builtin functions */
    integer __s__cmp();
    /* Subroutine */ int __s__copy();
    integer s__wsfe(), e__wsfe(), do__fio();

    /* Local variables */
    static integer inum, iunite;
    static char cfm[80], cln[3];
    extern /* Subroutine */ int mamdlng_();
    extern integer mnfnimp_();

    /* Fortran I/O blocks */
    static cilist io___5 = { 0, 0, 0, cfm, 0 };
    static cilist io___6 = { 0, 0, 0, cfm, 0 };
    static cilist io___7 = { 0, 0, 0, cfm, 0 };



/* < */
/* **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 : */
/*     ---------- */
/*        MESSAGERIE DES ROUTINES D'ALLOC */

/*     MOTS CLES : */
/*     ----------- */
/*       ALLOC,MESSAGE */

/*     ARGUMENTS D'ENTREE : */
/*     -------------------- */
/*       CROUT : NOM DE LA ROUTINE APPELANTE : MCRRQST, MCRDELT, MCRLIST 
*/
/*                ,CRINCR OU CRPROT */
/*       NUM : NUMERO DU MESSAGE */
/*       IT : TABLEAU DE DONNEES ENTIERES */
/*       XT : TABLEAU DE DONNEES REELLES */
/*       CT : ------------------ CHARACTER */

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

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

/*     REFERENCES APPELEES : */
/*     --------------------- */

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

/*   ROUTINE A USAGE TEMPORAIRE, EN ATTENDANT LA 'NOUVELLE' MESSAGERIE */
/*    (STRIM 3.3 ?) , POUR RENDRE LES ROUTINES D'ALLOC UTILISABLES */
/*    AILLEURS QUE DANS STRIM T-M . */

/*   EN FONCTION DE LA LANGUE, ECRITURE DU MESSAGE DEMANDE SUR */
/*   L'UNITE IMP . */
/*   (REPRISE DES SPECIFS DE VFORMA) */

/*   LE MESSAGE EST INITIALISE A 'IL MANQUE LE MESSAGE', ET CELUI-LA */
/*   EST REMPLACE PAR LE MESSAGE DEMANDE S'IL EXISTE . */


/*   LES MESSAGES FRANCAIS ONT ETE PRIS DANS LA 3.2 LE 26.2.88, ALORS */
/*   QUE LES ANGLAIS ONT ETE PRIS DANS ENGUS, ET QUE LES */
/*   ALLEMANDS VIENNENT DE LA 312 . */


/* $    HISTORIQUE DES MODIFICATIONS : */
/*     ------------------------------ */
/*      4-09-1991 : FCR ; MENAGE */
/*      02-05-88 : PP ; CORRECTION DE SYNTAXE DE FORMAT */
/*      26.2.88 : PP ECRITURE VERSION ORIGINALE . */
/* > */
/* ***********************************************************************
 */

/*  LOCAL : */

/* ----------------------------------------------------------------------*
 */
/*  RECHERCHE DU MESSAGE EN FONCTION DE LA LANGUE , DE LA ROUTINE */
/*  CONCERNEE, ET DU NUMERO DE MESSAGE */

/*  LECTURE DE LA LANGUE : */
    /* Parameter adjustments */
    ct -= ct_len;
    --xt;
    --it;

    /* Function Body */
    mamdlng_(cln, 3L);

/*  INUM : TYPE DE MESSAGE  : 0 QUE DU TEXTE, 1 1 ENTIER A ECRIRE */
/*        -1 MESSAGE INEXISTANT (1 ENTIER ET 1 CHAINE) */

    inum = -1;
    if (__s__cmp(cln, "FRA", 3L, 3L) == 0) {
	__s__copy(cfm, "('   Il manque le message numero ',I5' pour le programm\
e de nom : ',A8)", 80L, 71L);
	if (__s__cmp(crout, "MCRLIST", crout_len, 7L) == 0) {
	    if (*num == 1) {
		inum = 1;
		__s__copy(cfm, "(/,' Nombre d''allocation(s) de memoire effectu\
ee(s) : ',I6,/)", 80L, 62L);
	    } else if (*num == 2) {
		inum = 1;
		__s__copy(cfm, "(' Taille de l''allocation = ',I12)", 80L, 35L);
	    } else if (*num == 3) {
		inum = 1;
		__s__copy(cfm, "(' Taille totale allouee  = ',I12 /)", 80L, 36L);
	    }
	} else if (__s__cmp(crout, "MCRDELT", crout_len, 7L) == 0) {
	    if (*num == 1) {
		inum = 0;
		__s__copy(cfm, "(' L''allocation de memoire a detruire n''exist\
e pas  ')", 80L, 56L);
	    } else if (*num == 2) {
		inum = 0;
		__s__copy(cfm, "(' Le systeme refuse une destruction d''allocat\
ion de memoire  ')", 80L, 65L);
	    }
	} else if (__s__cmp(crout, "MCRRQST", crout_len, 7L) == 0) {
	    if (*num == 1) {
		inum = 1;
		__s__copy(cfm, "(' Le nombre maxi d''allocations de memoire est\
 atteint :',I6)", 80L, 62L);
	    } else if (*num == 2) {
		inum = 1;
		__s__copy(cfm, "(' Unite d''allocation invalide : ',I12)", 80L, 
			40L);
	    } else if (*num == 3) {
		inum = 1;
		__s__copy(cfm, "(' Le systeme refuse une allocation de memoire \
de ',I12,' octets')", 80L, 66L);
	    }
	} else if (__s__cmp(crout, "CRINCR", crout_len, 6L) == 0) {
	    if (*num == 1) {
		inum = 0;
		__s__copy(cfm, "(' L''allocation de memoire a incrementer n''ex\
iste pas')", 80L, 57L);
	    }
	} else if (__s__cmp(crout, "CRPROT", crout_len, 6L) == 0) {
	    if (*num == 1) {
		inum = 1;
		__s__copy(cfm, "(' Le niveau de protection est invalide ( =< 0 \
) : ',I12)", 80L, 57L);
	    }
	}
/* ------------------------------------------------------------ */
    } else if (__s__cmp(cln, "DEU", 3L, 3L) == 0) {
	__s__copy(cfm, "('   Es fehlt die Meldung Nummer ',I5,' fuer das Progra\
mm des Namens : ',A8)", 80L, 76L);
	if (__s__cmp(crout, "MCRLIST", crout_len, 7L) == 0) {
	    if (*num == 1) {
		inum = 1;
		__s__copy(cfm, "(/,' Anzahl der ausgefuehrten dynamischen Anwei\
sung(en) : ',I6,/)", 80L, 65L);
	    } else if (*num == 2) {
		inum = 1;
		__s__copy(cfm, "(' Groesse der Zuweisung = ',I12)", 80L, 33L);
	    } else if (*num == 3) {
		inum = 1;
		__s__copy(cfm, "(' Gesamtgroesse der Zuweisung = ',I12,/)", 80L, 
			41L);
	    }
	} else if (__s__cmp(crout, "MCRDELT", crout_len, 7L) == 0) {
	    if (*num == 1) {
		inum = 0;
		__s__copy(cfm, "(' Zu loeschende dynamische Zuweisung existiert\
 nicht !! ')", 80L, 59L);
	    } else if (*num == 2) {
		inum = 0;
		__s__copy(cfm, "(' System verweigert Loeschung der dynamischen \
Zuweisung !!')", 80L, 61L);
	    }
	} else if (__s__cmp(crout, "MCRRQST", crout_len, 7L) == 0) {
	    if (*num == 1) {
		inum = 1;
		__s__copy(cfm, "(' Hoechstzahl dynamischer Zuweisungen ist erre\
icht :',I6)", 80L, 58L);
	    } else if (*num == 2) {
		inum = 1;
		__s__copy(cfm, "(' Falsche Zuweisungseinheit : ',I12)", 80L, 37L)
			;
	    } else if (*num == 3) {
		inum = 1;
		__s__copy(cfm, "(' System verweigert dynamische Zuweisung von '\
,I12,' Bytes')", 80L, 61L);
	    }
	} else if (__s__cmp(crout, "CRINCR", crout_len, 6L) == 0) {
	    if (*num == 1) {
		inum = 0;
		__s__copy(cfm, "(' Zu inkrementierende dynamische Zuweisung exi\
stiert nicht !! ')", 80L, 65L);
	    }
	} else if (__s__cmp(crout, "CRPROT", crout_len, 6L) == 0) {
	    if (*num == 1) {
		inum = 1;
		__s__copy(cfm, "(' Sicherungsniveau ist nicht richtig ( =< 0 ) \
: ',I12)", 80L, 55L);
	    }
	}
/* ------------------------------------------------------------ */
    } else {
	__s__copy(cfm, "('   Message number ',I5,' is missing '                \
            ,'for program named: ',A8)", 80L, 93L);
	if (__s__cmp(crout, "MCRLIST", crout_len, 7L) == 0) {
	    if (*num == 1) {
		inum = 1;
		__s__copy(cfm, "(/,' number of memory allocations carried out: \
',I6,/)", 80L, 54L);
	    } else if (*num == 2) {
		inum = 1;
		__s__copy(cfm, "(' size of allocation = ',I12)", 80L, 30L);
	    } else if (*num == 3) {
		inum = 1;
		__s__copy(cfm, "(' total size allocated = ',I12,/)", 80L, 34L);
	    }
	} else if (__s__cmp(crout, "MCRDELT", crout_len, 7L) == 0) {
	    if (*num == 1) {
		inum = 0;
		__s__copy(cfm, "(' Memory allocation to delete does not exist !\
! ')", 80L, 51L);
	    } else if (*num == 2) {
		inum = 0;
		__s__copy(cfm, "(' System refuses deletion of memory allocation\
 !! ')", 80L, 53L);
	    }
	} else if (__s__cmp(crout, "MCRRQST", crout_len, 7L) == 0) {
	    if (*num == 1) {
		inum = 1;
		__s__copy(cfm, "(' max number of memory allocations reached :',\
I6)", 80L, 50L);
	    } else if (*num == 2) {
		inum = 1;
		__s__copy(cfm, "(' incorrect unit of allocation : ',I12)", 80L, 
			40L);
	    } else if (*num == 3) {
		inum = 1;
		__s__copy(cfm, "(' system refuses a memory allocation of ',I12,\
' bytes ')", 80L, 57L);
	    }
	} else if (__s__cmp(crout, "CRINCR", crout_len, 6L) == 0) {
	    if (*num == 1) {
		inum = 0;
		__s__copy(cfm, "(' Memory allocation to increment does not exis\
t !! ')", 80L, 54L);
	    }
	} else if (__s__cmp(crout, "CRPROT", crout_len, 6L) == 0) {
	    if (*num == 1) {
		inum = 1;
		__s__copy(cfm, "(' level of protection is incorrect ( =< 0 ) : \
',I12)", 80L, 53L);
	    }
	}
    }

/* ----------------------------------------------------------------------*
 */
/*  REALISATION DU WRITE , AVEC OU SANS DONNEES : */

    iunite = mnfnimp_();
    if (inum == 0) {
	io___5.ciunit = iunite;
	s__wsfe(&io___5);
	e__wsfe();
    } else if (inum == 1) {
	io___6.ciunit = iunite;
	s__wsfe(&io___6);
	do__fio(&c__1, (char *)&it[1], (ftnlen)sizeof(integer));
	e__wsfe();
    } else {
/*  LE MESSAGE N'EXISTE PAS ... */
	io___7.ciunit = iunite;
	s__wsfe(&io___7);
	do__fio(&c__1, (char *)&(*num), (ftnlen)sizeof(integer));
	do__fio(&c__1, crout, crout_len);
	e__wsfe();
    }

    return 0;
} /* macrmsg_ */

