Annotation of rpl/lapack/blas/lsame.f, revision 1.1.1.1

1.1       bertrand    1:       LOGICAL FUNCTION LSAME(CA,CB)
                      2: *
                      3: *  -- LAPACK auxiliary routine (version 3.1) --
                      4: *     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
                      5: *     November 2006
                      6: *
                      7: *     .. Scalar Arguments ..
                      8:       CHARACTER CA,CB
                      9: *     ..
                     10: *
                     11: *  Purpose
                     12: *  =======
                     13: *
                     14: *  LSAME returns .TRUE. if CA is the same letter as CB regardless of
                     15: *  case.
                     16: *
                     17: *  Arguments
                     18: *  =========
                     19: *
                     20: *  CA      (input) CHARACTER*1
                     21: *
                     22: *  CB      (input) CHARACTER*1
                     23: *          CA and CB specify the single characters to be compared.
                     24: *
                     25: * =====================================================================
                     26: *
                     27: *     .. Intrinsic Functions ..
                     28:       INTRINSIC ICHAR
                     29: *     ..
                     30: *     .. Local Scalars ..
                     31:       INTEGER INTA,INTB,ZCODE
                     32: *     ..
                     33: *
                     34: *     Test if the characters are equal
                     35: *
                     36:       LSAME = CA .EQ. CB
                     37:       IF (LSAME) RETURN
                     38: *
                     39: *     Now test for equivalence if both characters are alphabetic.
                     40: *
                     41:       ZCODE = ICHAR('Z')
                     42: *
                     43: *     Use 'Z' rather than 'A' so that ASCII can be detected on Prime
                     44: *     machines, on which ICHAR returns a value with bit 8 set.
                     45: *     ICHAR('A') on Prime machines returns 193 which is the same as
                     46: *     ICHAR('A') on an EBCDIC machine.
                     47: *
                     48:       INTA = ICHAR(CA)
                     49:       INTB = ICHAR(CB)
                     50: *
                     51:       IF (ZCODE.EQ.90 .OR. ZCODE.EQ.122) THEN
                     52: *
                     53: *        ASCII is assumed - ZCODE is the ASCII code of either lower or
                     54: *        upper case 'Z'.
                     55: *
                     56:           IF (INTA.GE.97 .AND. INTA.LE.122) INTA = INTA - 32
                     57:           IF (INTB.GE.97 .AND. INTB.LE.122) INTB = INTB - 32
                     58: *
                     59:       ELSE IF (ZCODE.EQ.233 .OR. ZCODE.EQ.169) THEN
                     60: *
                     61: *        EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
                     62: *        upper case 'Z'.
                     63: *
                     64:           IF (INTA.GE.129 .AND. INTA.LE.137 .OR.
                     65:      +        INTA.GE.145 .AND. INTA.LE.153 .OR.
                     66:      +        INTA.GE.162 .AND. INTA.LE.169) INTA = INTA + 64
                     67:           IF (INTB.GE.129 .AND. INTB.LE.137 .OR.
                     68:      +        INTB.GE.145 .AND. INTB.LE.153 .OR.
                     69:      +        INTB.GE.162 .AND. INTB.LE.169) INTB = INTB + 64
                     70: *
                     71:       ELSE IF (ZCODE.EQ.218 .OR. ZCODE.EQ.250) THEN
                     72: *
                     73: *        ASCII is assumed, on Prime machines - ZCODE is the ASCII code
                     74: *        plus 128 of either lower or upper case 'Z'.
                     75: *
                     76:           IF (INTA.GE.225 .AND. INTA.LE.250) INTA = INTA - 32
                     77:           IF (INTB.GE.225 .AND. INTB.LE.250) INTB = INTB - 32
                     78:       END IF
                     79:       LSAME = INTA .EQ. INTB
                     80: *
                     81: *     RETURN
                     82: *
                     83: *     End of LSAME
                     84: *
                     85:       END

CVSweb interface <joel.bertrand@systella.fr>