OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
lsame.f File Reference

Go to the source code of this file.

Functions/Subroutines

logical function lsame (ca, cb)
 LSAME

Function/Subroutine Documentation

◆ 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
!> 
[in]CB
!>          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 50 of file lsame.f.

51*
52* -- LAPACK auxiliary routine --
53* -- LAPACK is a software package provided by Univ. of Tennessee, --
54* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
55*
56* .. Scalar Arguments ..
57 CHARACTER CA, CB
58* ..
59*
60* =====================================================================
61*
62* .. Intrinsic Functions ..
63 INTRINSIC ichar
64* ..
65* .. Local Scalars ..
66 INTEGER INTA, INTB, ZCODE
67* ..
68* .. Executable Statements ..
69*
70* Test if the characters are equal
71*
72 lsame = ca.EQ.cb
73 IF( lsame )
74 $ 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:51