*     *************************************************************************

      subroutine exflag( ipdevc, iflag, info )

*     *************************************************************************

*     Purpose :
*     ---------

*     This routine prints out the message corresponding
*     to the error detected during the minimization.
*     The error code is contained in variable IFLAG and
*     the information about the error detected is contained
*     in variable INFO.

*     Parameters :
*     ------------

*     ipdevc  ( int )

*       input  : output device unit number for printing 
*                messages.
*       output : unmodified.

*     iflag    ( int )

*       input  : the error code.
*       output : unmodified.

*     info    ( int )

*       input  : some information about the error detected.
*       output : unmodified.

*     Routines used :
*     ---------------

*     None.

*     Programming :
*     -------------

*     D. Tuyttens

*     ========================================================================

*     Routine parameters

      integer  ipdevc, iflag, info

*     Internal variables

      write(ipdevc,1000)
 1000 format(//,1x,24('>'),2x,'    PROBLEM IN LSNNO !!!     ',24('<'),/)
*
*     The error code is tested.
*
      goto ( 101, 102, 103, 104, 105, 106,
     +       107, 108, 109, 110, 111, 112,
     +       113, 114, 115, 116, 117, 118 ) iflag
*
*     The routine prints out the messages corresponding 
*     to the errors detected.
*
*
*     The double precision work space length is too small.
*
 101  continue
      write(ipdevc,1001) info
 1001 format(/' The total available work space provided in',
     +        ' the double precision vector WK is too small',/,
     +        ' The minimum neccessary length is ',i7)
      return
*
*     The integer work space length is too small.
*
 102  continue
      write(ipdevc,1002) info
 1002 format(/' The total available work space provided in',
     +        ' the integer vector IWK is too small',/,
     +        ' The minimum neccessary length is ',i7)
      return
*
*     The length reserved for array FUVAL is too small.
*
 103  continue
      write(ipdevc,1003) info
 1003 format(/' The total available space provided in the',
     +        ' double precision vector FUVAL is too small',/,
     +        ' The minimum neccessary length is ',i7)
      return
*
*     The bounds are inconsistent.
*
 104  continue
      write(ipdevc,1004) info
 1004 format(/' The bounds on variable ',i4,' are inconsistent.')
      return
*
*     Inconsistent fixed variable value.
*
 105  continue
      write(ipdevc,1005) info
 1005 format(/' The initial value of the fixed variable ',i4,' is',
     +        ' inconsistent with the bounds.')
      return
*
*     A facility that is not available at present.
*
 106  continue
      write(ipdevc,1006) info
 1006 format(/' The status of element function ',i4,' corresponds',
     +        ' to a facility that is not available at present.')
      return
*
*     Maximum number of iterations executed before obtaining
*     an initial feasible solution.
*
 107  continue
      write(ipdevc,1007) info
 1007 format(/' The maximum number of iterations ',i4,' is reached',
     +        ' before obtaining an initial feasible solution.' )
      return
*
*     Infeasible problem.
*
 108  continue
      write(ipdevc,1008) 
 1008 format(/' The problem is infeasible.')
      return
*
*     The linear subproblem solved for searching an initial
*     feasible solution is unbounded.
*
 109  continue
      write(ipdevc,1009) 
 1009 format(/' The linear subproblem solved for searching an',
     +        ' initial feasible solution is unbounded.')
      return
*
*     The graph is not connected.
*
 110  continue
      write(ipdevc,1010) 
 1010 format(/' The graph is not connected.')
      return
*
*     Maximum number of independent sets is reached.
*
 111  continue
      write(ipdevc,1011) info
 1011 format(/' The number of independent sets is larger than the',
     +        ' maximum predicted ',i3)
      return
*
*     The algorithm failed in the noise of the problem.
*
 112  continue
      write(ipdevc,1012) 
 1012 format(/' The algorithm is stopped because the difference',
     +        ' between two successive function values along the',/,
     +        ' current linesearch is insignificant to the noise',
     +        ' on these function values.')
      return
*
*     Maximum number of minor iterations is reached.
*
 113  continue
      write(ipdevc,1013) info
 1013 format(/' More than ',i4,' minor iterations have been performed.')
      return
*
*     The SIMPLEX routine is stopped because the linear function
*     is increasing.
*
 114  continue
      write(ipdevc,1014) 
 1014 format(/' The SIMPLEX routine is stopped because the linear',
     +        ' function is increasing.')
      return
*
*     Incorrect partition of the variables.
*
 115  continue
      write(ipdevc,1015) info
 1015 format(/' Before a maximal basis spanning tree is searched, ',
     +        ' the total number of variables partitioned in the',/,
     +        ' fixed, superbasic and nonbasic sets ',i4,' differs',
     +        ' from the total number of variables of the problem.')
      return
*
*     The number of basic variables is incorrect.
*
 116  continue
      write(ipdevc,1016) info
 1016 format(/' The number of basic variables ',i4,' is incorrect.')
      return
*
*     The partition of the superbasic variables is incorrect.
*
 117  continue
      write(ipdevc,1017) info
 1017 format(/' The total number of superbasic variables partitioned',
     +        ' in the different insets ',i4,' differs from the',/,
     +        ' total number of superbasics variables in the problem.')
      return
*
*     The direction found is not descent.
*
 118  continue
      write(ipdevc,1018) 
 1018 format(/' The directional derivative at the beginning of the',
     +        ' linesearch in non-negative.')
*
      return
      end
