Annotation of rpl/lapack/lapack/lsame.f, revision 1.9

1.1       bertrand    1: *> \brief \b LSAME
                      2: *
                      3: *  =========== DOCUMENTATION ===========
                      4: *
1.7       bertrand    5: * Online html documentation available at
                      6: *            http://www.netlib.org/lapack/explore-html/
1.1       bertrand    7: *
                      8: *  Definition:
                      9: *  ===========
                     10: *
                     11: *      LOGICAL FUNCTION LSAME( CA, CB )
                     12: *
                     13: *     .. Scalar Arguments ..
                     14: *      CHARACTER          CA, CB
                     15: *     ..
1.7       bertrand   16: *
1.1       bertrand   17: *
                     18: *> \par Purpose:
                     19: *  =============
                     20: *>
                     21: *> \verbatim
                     22: *>
                     23: *> LSAME returns .TRUE. if CA is the same letter as CB regardless of
                     24: *> case.
                     25: *> \endverbatim
                     26: *
                     27: *  Arguments:
                     28: *  ==========
                     29: *
                     30: *> \param[in] CA
                     31: *> \verbatim
                     32: *> \endverbatim
                     33: *>
                     34: *> \param[in] CB
                     35: *> \verbatim
                     36: *>          CA and CB specify the single characters to be compared.
                     37: *> \endverbatim
                     38: *
                     39: *  Authors:
                     40: *  ========
                     41: *
1.7       bertrand   42: *> \author Univ. of Tennessee
                     43: *> \author Univ. of California Berkeley
                     44: *> \author Univ. of Colorado Denver
                     45: *> \author NAG Ltd.
1.1       bertrand   46: *
1.7       bertrand   47: *> \date December 2016
1.1       bertrand   48: *
                     49: *> \ingroup auxOTHERauxiliary
                     50: *
                     51: *  =====================================================================
                     52:       LOGICAL FUNCTION LSAME( CA, CB )
                     53: *
1.7       bertrand   54: *  -- LAPACK auxiliary routine (version 3.7.0) --
1.1       bertrand   55: *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
                     56: *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
1.7       bertrand   57: *     December 2016
1.1       bertrand   58: *
                     59: *     .. Scalar Arguments ..
                     60:       CHARACTER          CA, CB
                     61: *     ..
                     62: *
                     63: * =====================================================================
                     64: *
                     65: *     .. Intrinsic Functions ..
                     66:       INTRINSIC          ICHAR
                     67: *     ..
                     68: *     .. Local Scalars ..
                     69:       INTEGER            INTA, INTB, ZCODE
                     70: *     ..
                     71: *     .. Executable Statements ..
                     72: *
                     73: *     Test if the characters are equal
                     74: *
                     75:       LSAME = CA.EQ.CB
                     76:       IF( LSAME )
                     77:      $   RETURN
                     78: *
                     79: *     Now test for equivalence if both characters are alphabetic.
                     80: *
                     81:       ZCODE = ICHAR( 'Z' )
                     82: *
                     83: *     Use 'Z' rather than 'A' so that ASCII can be detected on Prime
                     84: *     machines, on which ICHAR returns a value with bit 8 set.
                     85: *     ICHAR('A') on Prime machines returns 193 which is the same as
                     86: *     ICHAR('A') on an EBCDIC machine.
                     87: *
                     88:       INTA = ICHAR( CA )
                     89:       INTB = ICHAR( CB )
                     90: *
                     91:       IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 ) THEN
                     92: *
                     93: *        ASCII is assumed - ZCODE is the ASCII code of either lower or
                     94: *        upper case 'Z'.
                     95: *
                     96:          IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32
                     97:          IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32
                     98: *
                     99:       ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 ) THEN
                    100: *
                    101: *        EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
                    102: *        upper case 'Z'.
                    103: *
                    104:          IF( INTA.GE.129 .AND. INTA.LE.137 .OR.
                    105:      $       INTA.GE.145 .AND. INTA.LE.153 .OR.
                    106:      $       INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64
                    107:          IF( INTB.GE.129 .AND. INTB.LE.137 .OR.
                    108:      $       INTB.GE.145 .AND. INTB.LE.153 .OR.
                    109:      $       INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64
                    110: *
                    111:       ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 ) THEN
                    112: *
                    113: *        ASCII is assumed, on Prime machines - ZCODE is the ASCII code
                    114: *        plus 128 of either lower or upper case 'Z'.
                    115: *
                    116:          IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32
                    117:          IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32
                    118:       END IF
                    119:       LSAME = INTA.EQ.INTB
                    120: *
                    121: *     RETURN
                    122: *
                    123: *     End of LSAME
                    124: *
                    125:       END

CVSweb interface <joel.bertrand@systella.fr>