[Date Prev][Date Next][Subject Prev][Subject Next][ Date Index][ Subject Index]

Re: lower o slash again



> Robert Holmgren suggested that I post my actual routine, which I did
> not do because it's both long and not very interesting as XPL goes,
> and I didn't want to bore everybody. If my routine was really cool,
> believe me, I wouldn't hesitate to show it off.

Charles, the issue is not boredom vs. liveliness. Having raised this issue
twice, you must really want an answer; so let's not crap around. We
*must*, always, see actual code, and your problem perfectly illustrates
why.

Special character 809 is a 3-byte sequence. It consists of Ascii codes
254-41-2. That third character, note well, is a _two_, the character that
signals the end of a Help frame. It is a documented reserved character.
Ascii-2 so thoroughly halts the execution of any Help frame that you do not
require an ; processing just stops dead, wham. You can't see the {2}
embedded in this 3-byte char, but it's there. LIST your routine outside
XyWrite, and you'll see the {2}. (_Always_ LIST things when you encounter
inexplicable behavior like this!) WYSINotAlwaysWYG in XyWrite. So the
Ascii-2 *could* be your problem. Especially if you're running a routine in
a Help file, e.g. U2.

But, as it happens, it _isn't_ your problem. Consider the behavior. Your
routine appears to swallow the first two characters (254+41), then dumps
the third character {2} in your lap, so to speak. If the Ascii-2 were
functioning to terminate the routine, then it wouldn't be treated like a
stray character that gets thrown on screen (as you report) -- it would
simply terminate unobtrusively. Something else is going on. What is the
second character in the string? Close parenthesis {41}. What format are
you using to execute the command? "BX (command)". So there it is: The
second character is terminating the command, and, like good XPL, the third
and subsequent characters are being written to the screen, since that's
what your routine instructs. No bug.

The rule is iron clad: Never use parentheses with BlindeXecute (except
with canned commands like "wait" or "abort"). Use Q2 instead. It's much
more reliable, and also avoids several unrelated problems with the
parenthetic form. Just recode your routine as "BX command Q2", and
rejoice.


-----------
Robert Holmgren
holmgren@xxxxxxxx
-----------