Directories
The most important difference is that a Gnosis directory structure can have many names for the same key to an object. As a result of this characteristic, it is possible to remove the directory entry for an object without deleting the object itself. The general problem of space recovery and the life time of objects is handled with guarded space banks {(p2,guarded)}. This technique allows direct user control over the lifetime of objects.
Another important differences is the lack of a system-wide root directory. This means that, unless you explicitly pass your directory to another user (or the process that created your command system passes it), there is no way that ANYONE else can access it.
It may happen that there is a key in your directory with same name as a CL84 reserved word. In order to access one of these keys it will be necessary to specify the name as a string (i.e. in quotes).
Either level of command syntax may be proceeded by the key work "FORK". If this is done the key will be forked rather than called. Any returned data or keys will be lost.
The High Level Command Syntax
The tokens that follow the key and the operation are interpreted as parameters of the operation. They are divided into two groups, positional parameters and key word parameters. The positional parameters come first. The key word parameters are separated from the positional parameters with a comma. They are specified as key word - token pairs. A list of the key words may be obtained by using the "help" operation (a question mark) after typing the required positional parameters and the comma.
A token may be of one of five general types:
Template_directory
63
'that''s mine'
"that's yours"
'012345'x
nocompile)
(2) The key named TEMPLATE_DIRECTORY in the directory is accessed. If there is no key with that name then high level syntax calls are not available.
(3) The TEMPLATE_DIRECTORY key is assumed to be a named sequence record collection, and is accessed using the type of the key expressed as a four byte binary number. If there is no matching record or if the record does not have an associated key then high level calls are not available for this key.
(4) The key returned in step 3 is assumed to be a named sequence record collection and accessed using the EBCDIC operation specified in the command, translated to upper case if necessary. The data area of the record is then interpreted as the template.
The second part of the template describes, using the low level syntax, how the parameters specified in the high level syntax are to be interpreted as a gate jump.
Question mark (?) may be used to request help at any point. If it immediately follows (no spaces) a "word" token it will list all the choices matching the partially typed token. If it is entered alone it will list the available options (e.g. key names in the directory or available key words) or print the "help" data for that specific token.
Examples:
Similary, if the last (or only) command of a pipe expression is followed by "> KEYNAME" or ">> KEYNAME" then its "standard output" (SOK6) will be respectivly placed in or appended to the object KEYNAME (which must be acceptable to the os simulator {(p3,ossim)} for QSAM simulation). If KEYNAME does not exist in the directory, a fresh segment {(p2,fsc)} will be created to hold the data.
FORK
SIK6
SOK6
The ability to directly control which data and keys are passed on which jumps of the extended jump protocol is provided to aid in calling factories passing strings and other similar situations. (N.B. the factory can not accept a string on the first call of an extended jump sequence.) For example: