      SUBROUTINE XERBLA_ARRAY(SRNAME_ARRAY, SRNAME_LEN, INFO)
*
*  -- LAPACK auxiliary routine (version 3.0) --
*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
*     September 19, 2006
*
      IMPLICIT NONE
*     .. Scalar Arguments ..
      INTEGER SRNAME_LEN, INFO
*     ..
*     .. Array Arguments ..
      CHARACTER(1) SRNAME_ARRAY(SRNAME_LEN)
*     ..
*
*  Purpose
*  =======
*
*  XERBLA_ARRAY assists other languages in calling XERBLA, the LAPACK
*  and BLAS error handler.  Rather than taking a Fortran string argument
*  as the function's name, XERBLA_ARRAY takes an array of single
*  characters along with the array's length.  XERBLA_ARRAY then copies
*  up to 32 characters of that array into a Fortran string and passes
*  that to XERBLA.  If called with a non-positive SRNAME_LEN,
*  XERBLA_ARRAY will call XERBLA with a string of all blank characters.
*
*  Say some macro or other device makes XERBLA_ARRAY available to C99
*  by a name lapack_xerbla and with a common Fortran calling convention.
*  Then a C99 program could invoke XERBLA via:
*     {
*       int flen = strlen(__func__);
*       lapack_xerbla(__func__, &flen, &info);
*     }
*
*  Providing XERBLA_ARRAY is not necessary for intercepting LAPACK
*  errors.  XERBLA_ARRAY calls XERBLA.
*
*  Arguments
*  =========
*
*  SRNAME_ARRAY (input) CHARACTER(1) array, dimension (SRNAME_LEN)
*          The name of the routine which called XERBLA_ARRAY.
*
*  SRNAME_LEN (input) INTEGER
*          The length of the name in SRNAME_ARRAY.
*
*  INFO    (input) INTEGER
*          The position of the invalid parameter in the parameter list
*          of the calling routine.
*
* =====================================================================
*
*     ..
*     .. Local Scalars ..
      INTEGER I
*     ..
*     .. Local Arrays ..
      CHARACTER*32 SRNAME
*     ..
*     .. Intrinsic Functions ..
      INTRINSIC MIN, LEN
*     ..
*     .. External Functions ..
      EXTERNAL XERBLA
*     ..
*     .. Executable Statements ..
      SRNAME = ''
      DO I = 1, MIN( SRNAME_LEN, LEN( SRNAME ) )
         SRNAME( I:I ) = SRNAME_ARRAY( I )
      END DO

      CALL XERBLA( SRNAME, INFO )

      RETURN
      END
