/*Translated by FOR_C, v3.4.2 (-), on 07/09/115 at 08:30:08 */ /*FOR_C Options SET: ftn=u io=c no=p op=aimnv s=dbov str=l x=f - prototypes */ #include #include "fcrt.h" #include "lsame.h" #include LOGICAL32 /*FUNCTION*/ lsame( byte ca, byte cb) { LOGICAL32 lsame_v; long int inta, intb, zcode; /* -- LAPACK auxiliary routine (version 3.1) -- * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. * November 2006 * * .. Scalar Arguments .. */ /* .. * * Purpose * ======= * * LSAME returns .TRUE. if CA is the same letter as CB regardless of * case. * * Arguments * ========= * * CA (input) CHARACTER*1 * * CB (input) CHARACTER*1 * CA and CB specify the single characters to be compared. * * ===================================================================== * * .. Intrinsic Functions .. */ /* .. * .. Local Scalars .. */ /* .. * * Test if the characters are equal * */ lsame_v = ca == cb; if (lsame_v) return( lsame_v ); /* Now test for equivalence if both characters are alphabetic. * */ zcode = 'Z'; /* Use 'Z' rather than 'A' so that ASCII can be detected on Prime * machines, on which ICHAR returns a value with bit 8 set. * ICHAR('A') on Prime machines returns 193 which is the same as * ICHAR('A') on an EBCDIC machine. * */ inta = ( ca ); intb = ( cb ); if (zcode == 90 || zcode == 122) { /* ASCII is assumed - ZCODE is the ASCII code of either lower or * upper case 'Z'. * */ if (inta >= 97 && inta <= 122) inta -= 32; if (intb >= 97 && intb <= 122) intb -= 32; } else if (zcode == 233 || zcode == 169) { /* EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or * upper case 'Z'. * */ if (((inta >= 129 && inta <= 137) || (inta >= 145 && inta <= 153)) || (inta >= 162 && inta <= 169)) inta += 64; if (((intb >= 129 && intb <= 137) || (intb >= 145 && intb <= 153)) || (intb >= 162 && intb <= 169)) intb += 64; } else if (zcode == 218 || zcode == 250) { /* ASCII is assumed, on Prime machines - ZCODE is the ASCII code * plus 128 of either lower or upper case 'Z'. * */ if (inta >= 225 && inta <= 250) inta -= 32; if (intb >= 225 && intb <= 250) intb -= 32; } lsame_v = inta == intb; /* RETURN * * End of LSAME * */ return( lsame_v ); } /* end of function */