#include "ESMF_LapackBlas.inc" !> \brief \b LSAME ! ! =========== DOCUMENTATION =========== ! ! Online html documentation available at ! http://www.netlib.org/lapack/explore-html/ ! ! Definition: ! =========== ! ! LOGICAL FUNCTION LSAME( CA, CB ) ! ! .. Scalar Arguments .. ! CHARACTER CA, CB ! .. ! ! !> \par Purpose: ! ============= !> !> \verbatim !> !> LSAME returns .TRUE. if CA is the same letter as CB regardless of !> case. !> \endverbatim ! ! Arguments: ! ========== ! !> \param[in] CA !> \verbatim !> \endverbatim !> !> \param[in] CB !> \verbatim !> CA and CB specify the single characters to be compared. !> \endverbatim ! ! Authors: ! ======== ! !> \author Univ. of Tennessee !> \author Univ. of California Berkeley !> \author Univ. of Colorado Denver !> \author NAG Ltd. ! !> \date November 2011 ! !> \ingroup auxOTHERauxiliary ! ! ===================================================================== LOGICAL FUNCTION LSAME( CA, CB ) ! ! -- LAPACK auxiliary routine (version 3.4.0) -- ! -- LAPACK is a software package provided by Univ. of Tennessee, -- ! -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- ! November 2011 ! ! .. Scalar Arguments .. CHARACTER CA, CB ! .. ! ! ===================================================================== ! ! .. Intrinsic Functions .. INTRINSIC ICHAR ! .. ! .. Local Scalars .. INTEGER INTA, INTB, ZCODE ! .. ! .. Executable Statements .. ! ! Test if the characters are equal ! LSAME = CA.EQ.CB IF( LSAME ) & & RETURN ! ! Now test for equivalence if both characters are alphabetic. ! ZCODE = ICHAR( 'Z' ) ! ! Use 'Z' rather than 'A' so that ASCII can be detected on Prime ! machines, on which ICHAR returns a value with bit 8 set. ! ICHAR('A') on Prime machines returns 193 which is the same as ! ICHAR('A') on an EBCDIC machine. ! INTA = ICHAR( CA ) INTB = ICHAR( CB ) ! IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 ) THEN ! ! ASCII is assumed - ZCODE is the ASCII code of either lower or ! upper case 'Z'. ! IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32 IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32 ! ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 ) THEN ! ! EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or ! upper case 'Z'. ! IF( INTA.GE.129 .AND. INTA.LE.137 .OR. & & INTA.GE.145 .AND. INTA.LE.153 .OR. & & INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64 IF( INTB.GE.129 .AND. INTB.LE.137 .OR. & & INTB.GE.145 .AND. INTB.LE.153 .OR. & & INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64 ! ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 ) THEN ! ! ASCII is assumed, on Prime machines - ZCODE is the ASCII code ! plus 128 of either lower or upper case 'Z'. ! IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32 IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32 END IF LSAME = INTA.EQ.INTB ! ! RETURN ! ! End of LSAME ! END