LAPACK 3.3.1
Linear Algebra PACKage

SRC/xerbla_array.f

Go to the documentation of this file.
00001       SUBROUTINE XERBLA_ARRAY( SRNAME_ARRAY, SRNAME_LEN, INFO)
00002 *
00003 *  -- LAPACK auxiliary routine (version 3.2.2)                        --
00004 *
00005 *  -- June 2010    
00006 *
00007 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
00008 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
00009 *
00010       IMPLICIT NONE
00011 *     .. Scalar Arguments ..
00012       INTEGER SRNAME_LEN, INFO
00013 *     ..
00014 *     .. Array Arguments ..
00015       CHARACTER(1) SRNAME_ARRAY(SRNAME_LEN)
00016 *     ..
00017 *
00018 *  Purpose
00019 *  =======
00020 *
00021 *  XERBLA_ARRAY assists other languages in calling XERBLA, the LAPACK
00022 *  and BLAS error handler.  Rather than taking a Fortran string argument
00023 *  as the function's name, XERBLA_ARRAY takes an array of single
00024 *  characters along with the array's length.  XERBLA_ARRAY then copies
00025 *  up to 32 characters of that array into a Fortran string and passes
00026 *  that to XERBLA.  If called with a non-positive SRNAME_LEN,
00027 *  XERBLA_ARRAY will call XERBLA with a string of all blank characters.
00028 *
00029 *  Say some macro or other device makes XERBLA_ARRAY available to C99
00030 *  by a name lapack_xerbla and with a common Fortran calling convention.
00031 *  Then a C99 program could invoke XERBLA via:
00032 *     {
00033 *       int flen = strlen(__func__);
00034 *       lapack_xerbla(__func__, &flen, &info);
00035 *     }
00036 *
00037 *  Providing XERBLA_ARRAY is not necessary for intercepting LAPACK
00038 *  errors.  XERBLA_ARRAY calls XERBLA.
00039 *
00040 *  Arguments
00041 *  =========
00042 *
00043 *  SRNAME_ARRAY (input) CHARACTER(1) array, dimension (SRNAME_LEN)
00044 *          The name of the routine which called XERBLA_ARRAY.
00045 *
00046 *  SRNAME_LEN (input) INTEGER
00047 *          The length of the name in SRNAME_ARRAY.
00048 *
00049 *  INFO    (input) INTEGER
00050 *          The position of the invalid parameter in the parameter list
00051 *          of the calling routine.
00052 *
00053 * =====================================================================
00054 *
00055 *     ..
00056 *     .. Local Scalars ..
00057       INTEGER I
00058 *     ..
00059 *     .. Local Arrays ..
00060       CHARACTER*32 SRNAME
00061 *     ..
00062 *     .. Intrinsic Functions ..
00063       INTRINSIC MIN, LEN
00064 *     ..
00065 *     .. External Functions ..
00066       EXTERNAL XERBLA
00067 *     ..
00068 *     .. Executable Statements ..
00069       SRNAME = ''
00070       DO I = 1, MIN( SRNAME_LEN, LEN( SRNAME ) )
00071          SRNAME( I:I ) = SRNAME_ARRAY( I )
00072       END DO
00073 
00074       CALL XERBLA( SRNAME, INFO )
00075 
00076       RETURN
00077       END
 All Files Functions