Bill,

Replace is a relativly new function, so many of us use Join(Split()) instead for wider source compatability. Mart's example will just remove spaces, returning a dotted-decimal format.

Since the OP doesn't show how the individual IP elements are used, the resulting dotted-decimal format is now easy to break into a 4-element array:
 Code:
$IPAddress = Join(Split(@IPADDRESS0, ''), '')
$aIpAddr = Split($IPAddress, '.')


Still, it's odd that eliminating that code resolves the problem.

Jimmy:
The line "$LogonServer = SubStr(@LSERVER,3,Len(@LSERVER))" is not 100% correct.. If the len of @LSERVER is 9, the statement says "Return 9 characters from the @LSERVER string, starting with the third character." Kix is forgiving and returns 7 characters, but a more accurate statement is also simpler to construct:
 Code:
$LogonServer = SubStr(@LSERVER,3)
This says "Return all remaining chars from the string, starting with the third character". Both return the same value, so not entirely "wrong", but could throw an error if used in this manner in another (less forgiving) language.

As for "variables and macros in strings" change
At (3,5) 'Hello @Fullname'
to
At (3,5) 'Hello ' @Fullname
which keeps macros out of strings. The reason for this is to avoid ambiguity in evaluating string contents.. combined with the SetOption function you can disable kix from processing macros and variables inside of strings so it will print "$" or "@" when you expect it to.

Glenn
_________________________
Actually I am a Rocket Scientist! \:D