LAPACK  3.9.1
LAPACK: Linear Algebra PACKage

◆ lsame()

logical function lsame ( character  CA,
character  CB 
)

LSAME

Purpose:
 LSAME returns .TRUE. if CA is the same letter as CB regardless of
 case.
Parameters
[in]CA
          CA is CHARACTER*1
[in]CB
          CB is CHARACTER*1
          CA and CB specify the single characters to be compared.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 52 of file lsame.f.

53 *
54 * -- Reference BLAS level1 routine --
55 * -- Reference BLAS is a software package provided by Univ. of Tennessee, --
56 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
57 *
58 * .. Scalar Arguments ..
59  CHARACTER CA,CB
60 * ..
61 *
62 * =====================================================================
63 *
64 * .. Intrinsic Functions ..
65  INTRINSIC ichar
66 * ..
67 * .. Local Scalars ..
68  INTEGER INTA,INTB,ZCODE
69 * ..
70 *
71 * Test if the characters are equal
72 *
73  lsame = ca .EQ. cb
74  IF (lsame) RETURN
75 *
76 * Now test for equivalence if both characters are alphabetic.
77 *
78  zcode = ichar('Z')
79 *
80 * Use 'Z' rather than 'A' so that ASCII can be detected on Prime
81 * machines, on which ICHAR returns a value with bit 8 set.
82 * ICHAR('A') on Prime machines returns 193 which is the same as
83 * ICHAR('A') on an EBCDIC machine.
84 *
85  inta = ichar(ca)
86  intb = ichar(cb)
87 *
88  IF (zcode.EQ.90 .OR. zcode.EQ.122) THEN
89 *
90 * ASCII is assumed - ZCODE is the ASCII code of either lower or
91 * upper case 'Z'.
92 *
93  IF (inta.GE.97 .AND. inta.LE.122) inta = inta - 32
94  IF (intb.GE.97 .AND. intb.LE.122) intb = intb - 32
95 *
96  ELSE IF (zcode.EQ.233 .OR. zcode.EQ.169) THEN
97 *
98 * EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
99 * upper case 'Z'.
100 *
101  IF (inta.GE.129 .AND. inta.LE.137 .OR.
102  + inta.GE.145 .AND. inta.LE.153 .OR.
103  + inta.GE.162 .AND. inta.LE.169) inta = inta + 64
104  IF (intb.GE.129 .AND. intb.LE.137 .OR.
105  + intb.GE.145 .AND. intb.LE.153 .OR.
106  + intb.GE.162 .AND. intb.LE.169) intb = intb + 64
107 *
108  ELSE IF (zcode.EQ.218 .OR. zcode.EQ.250) THEN
109 *
110 * ASCII is assumed, on Prime machines - ZCODE is the ASCII code
111 * plus 128 of either lower or upper case 'Z'.
112 *
113  IF (inta.GE.225 .AND. inta.LE.250) inta = inta - 32
114  IF (intb.GE.225 .AND. intb.LE.250) intb = intb - 32
115  END IF
116  lsame = inta .EQ. intb
117 *
118 * RETURN
119 *
120 * End of LSAME
121 *
logical function lsame(CA, CB)
LSAME
Definition: lsame.f:53