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