there are a number of peculiar discrepancies between these types of operations in mIRC. unfortunately the identity suggested by drum doesn't hold true for over half of the range of characters supported by $chr()! here are a few examples of pairs of seemingly identical checks along with the number of characters for which they have different results:

Code:
if ($chr(N) isupper)
if ($chr(N) === $upper($chr(N)))


45,825 chars, $chr(223) is the first.

Code:
if ($chr(N) islower)
if ($chr(N) === $lower($chr(N)))


45,603 chars, $chr(304) is the first.

these results are mostly accounted for by the 45,533 characters which are neither upper nor lower (according to islower and isupper), the first example being $chr(443).

Code:
if ($chr(N) isalnum)
if ($chr(N) isalpha) || ($chr(N) isnum)


303 characters, $chr(178) is the first.

on the plus side: the following are, rather unremarkably, pairs of equivalent checks:

Code:
if ($chr(N) isupper)
if ($isupper($chr(N)))

if ($chr(N) islower)
if ($islower($chr(N)))

if ($chr(N) isalpha)
if ($chr(N) isletter)


"The only excuse for making a useless script is that one admires it intensely" - Oscar Wilde