Answer to question 15
The question was deliberately a tricky one. The fact that you should
have accessed the goodies disk should have pushed you into
a detective role...
If you issued the commands as suggested in the question, then HI would simply be
an unknown command. TS would have been accepted.
Normally, both are immediate CMS commands, meaning that they
are not part of XEDIT under normal circumstances.
The goodies disk, however, contains the TS EXEC. This
procedure issues the SET EXECTRAC ON command under the covers...
In CMS, it gives the same
result as the TS immediate command, so, one is not aware that a procedure
is actually executing a command. In XEDIT however,
it gives you the impression to be able to issue the immediate command from
a full-screen environment.
Don't think now that we are searching to confuse you by all means.
You will regularly be confronted with a similar 'abnormal' behavior of the
system, and your reflex should be to investigate why. In many cases,
the 'standard' commands will have been replaced with homonym procedures or
modules. So, when somebody is complaining that the system doesn't work
as described in the manuals, start looking for such things !
It's maybe good to have a brief review of
the kind of commands you can find on a
CMS system:
- Nucleus commands, for which
there is nothing you
can find on disk. Nowadays, most standard CMS commands are part of the CMS nucleus
as this is best for performance - they don't have to be read
form disk before each execution, and their coding is shared, as the
CMS nucleus is a saved system.
- Commands that reside on DISK, so you can find the file, the
filetype is MODULE.
- Nucleus extensions. This is a situation in between
both previous cases.
Via the NUCXLOAD command, one can load a module from disk
into storage and it will stay there for the duration of the CMS session. Such modules can
be listed with the NUCXMAP command.
Some
modules will NUCXLOAD themselves
at first invocation. Note that it is possible to NUCXLOAD
ABC MODULE as XYZ MODULE,
which can make things trickier.
And, since
VM/SP Release 6, nucleus extensions can also be
contained in so called logical shared segments, which in turn
get loaded via the SEGMENT LOAD segname command.
- EXECs. These can reside on a minidisk or in storage.
EXEC procedures (or XEDIT macros) can be loaded in storage via the
EXECLOAD command. The command EXECMAP can then be
used to list these procedures. EXECs can also be contained
in logical shared segments or in the CMSINST shared segment.
Note also that it is again possible to
EXECLOAD MY FILE (as) HIS EXEC.
To verify if a procedure exists, and whether it will be loaded from
disk or storage, you can use the EXECSTAT command.
- Immediate commands are most of the time just a
special case of nucleus resident commands, but we learned
that it is possible to define your own immediate commands.
- A last type that often is forgotten is a
synonym. CMS synonyms
are defined by listing them in a file (usually with filetype SYNONYM)
and activated with the
SYNONYM fn [ft [fm]] command.
A Query SYNONYM SYSTEM/USER/ALL command allows listing the active synonyms.
And, for XEDIT we have to add:
- XEDIT subcommands. These are part of the XEDIT program, and
nothing shows their existence, except the documentation.
- XEDIT macros. These are files with a filetype
XEDIT and can live on disk or in storage, just as the EXEC procedures.
Some "standard" XEDIT commands
are actually macro's (e.g. ALL, ALTER, SORT, JOIN)
- Synonyms are defined with the
SET SYNONYM command.
Use the backward navigation button to return to the lesson.