|Re: Those solid block characters in the characters menu.|
Message #4 Posted by James M. Prange (Michigan) on 3 Nov 2006, 1:12 a.m.,
in response to message #3 by James M. Prange (Michigan)
Certain restrictions are (ordinarily) imposed on global names.
Most of these are for the sake of the parsers. For example, a
global name should not contain any separators ("white space"), any
delimiter characters, any of various mathematical operator
characters (such as +, -, *, /, <, =, >, and so on), it shouldn't
start with a numeric character (numerals 0 through 9 and whichever
of period or comma is the fraction mark), although you can have
numeric characters anywhere else in the name, and it shouldn't be
the same as a built-in name. Also, a global name should have at
least one character and no more than 127 characters.
I don't know the reason for the restriction to 127 characters; the
two-nibble "character count" field in a global name object should
allow up to 255 characters, although 127 characters seems "long
enough" for my purposes. Perhaps it was a restriction imposed by
whatever operating system or compiler the developers of UserRPL
were using, or perhaps it was originally a "nibble count" (like
some other objects have) instead of a "character count" (or maybe
someone was thinking that it was).
However, the 48 and 49 series do have a $>ID SysRPL command that
converts a character string to an ID (global name), and an ID>$
SysRPL command that does the reverse. On the 49 series, if you
have library 256 attached, you can use the S~N command to toggle a
string to a global name or vice versa. Also on the 49 series, the
filer has a "RENAME" operation that allows you to replace any
global name with any other name. These work with any string of up
255 characters, even to make what would otherwise be "invalid" as
a global name. I don't recall exactly what happens if you try
making a global name with over 255 characters, but I expect that
it would be a bad thing to do.
So you can make a global name such as 'A B' that contains a
separator, or '1+2' which begins with a numeric character and
contains a mathematical operator, or 'SIN' that duplicates a
built-in name, or with up to 255 characters. However, the wisdom
of doing so seems very doubtful, as the parsers, such as pressing
ENTER with a command line present, perhaps other editors such as
the equation writer or matrix writer, STR\-> (which I think Conn4x
"Text" transfers use), OBJ\-> on a string, or receiving a Kermit
"ASCII" transfer, will very likely interpret the "global name"
differently from what you intended, or give you an "Invalid
Also note that Conn4x translates (if needed) global names to file
names that are valid as "long file names" for MS Windows on
transfers from the calculator, and does the reverse translation on
transfers to the calculator.
For storing as a binary-transferred file on an MMC or SD card, if
the global name would be a long file name with MS Windows, the
file is stored with both the long file name and an "8.3" MS-DOS
short file name.
For other file transfers, such as Kermit or Xmodem, you should
choose a name that will be valid both as a global name and a file
name for whatever file system is used on the other device.
Note that if you have the calculator set to use the comma as the
fraction mark, then the period is a separator, so transferring a
file with a "file name extension" to the calculator fails.