home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Geek Gadgets 1
/
ADE-1.bin
/
ade-dist
/
octave-1.1.1p1-src.tgz
/
tar.out
/
fsf
/
octave
/
libcruft
/
blas
/
lsame.f
< prev
next >
Wrap
Text File
|
1996-09-28
|
2KB
|
90 lines
LOGICAL FUNCTION LSAME ( CA, CB )
* .. Scalar Arguments ..
CHARACTER*1 CA, CB
* ..
*
* Purpose
* =======
*
* LSAME tests if CA is the same letter as CB regardless of case.
* CB is assumed to be an upper case letter. LSAME returns .TRUE. if
* CA is either the same as CB or the equivalent lower case letter.
*
* N.B. This version of the routine is only correct for ASCII code.
* Installers must modify the routine for other character-codes.
*
* For EBCDIC systems the constant IOFF must be changed to -64.
* For CDC systems using 6-12 bit representations, the system-
* specific code in comments must be activated.
*
* Parameters
* ==========
*
* CA - CHARACTER*1
* CB - CHARACTER*1
* On entry, CA and CB specify characters to be compared.
* Unchanged on exit.
*
*
* Auxiliary routine for Level 2 Blas.
*
* -- Written on 20-July-1986
* Richard Hanson, Sandia National Labs.
* Jeremy Du Croz, Nag Central Office.
*
* .. Parameters ..
INTEGER IOFF
PARAMETER ( IOFF=32 )
* .. Intrinsic Functions ..
INTRINSIC ICHAR
* .. Executable Statements ..
*
* Test if the characters are equal
*
LSAME = CA .EQ. CB
*
* Now test for equivalence
*
IF ( .NOT.LSAME ) THEN
LSAME = ICHAR(CA) - IOFF .EQ. ICHAR(CB)
END IF
*
RETURN
*
* The following comments contain code for CDC systems using 6-12 bit
* representations.
*
* .. Parameters ..
* INTEGER ICIRFX
* PARAMETER ( ICIRFX=62 )
* .. Scalar Arguments ..
* CHARACTER*1 CB
* .. Array Arguments ..
* CHARACTER*1 CA(*)
* .. Local Scalars ..
* INTEGER IVAL
* .. Intrinsic Functions ..
* INTRINSIC ICHAR, CHAR
* .. Executable Statements ..
*
* See if the first character in string CA equals string CB.
*
* LSAME = CA(1) .EQ. CB .AND. CA(1) .NE. CHAR(ICIRFX)
*
* IF (LSAME) RETURN
*
* The characters are not identical. Now check them for equivalence.
* Look for the 'escape' character, circumflex, followed by the
* letter.
*
* IVAL = ICHAR(CA(2))
* IF (IVAL.GE.ICHAR('A') .AND. IVAL.LE.ICHAR('Z')) THEN
* LSAME = CA(1) .EQ. CHAR(ICIRFX) .AND. CA(2) .EQ. CB
* END IF
*
* RETURN
*
* End of LSAME.
*
END