Using the Terminal
Introduction to the Terminal
The Terminal is a simple command-line interface for entering ObjectScript commands and displaying current values. It is useful during learning, development, and debugging.
This chapter discusses the following topics:
If the Terminal displays a dialog box with the message Spy Mode On
, this means that you have accidentally pressed Alt+Shift+S
. To exit this mode, press Alt+Shift+S
again. This mode is not for general use and is not documented.
Also, if the Terminal appears to be unresponsive, you may have pressed Ctrl+S
, which pauses the automatic scrolling. If so, press Ctrl+Q
User Account That Owns the Terminal Process
The process is owned by the user that is logged in to Windows and is running the Terminal program (cterm.exe
Also, all environment variables and shared drive letter designations are those defined by the user that is running the Terminal.
You can use the Terminal interactively or in batch mode.
To use the Terminal interactively, do one of the following:
In either case, you then see the Terminal window. The prompt displayed in this window indicates the namespace in which you are currently working. For example:
In batch mode, you invoke the Terminal from the operating system command line, passing to it the name of a script file to run. This mode is not available for all operating systems.
The Terminal was designed to work with InterSystems IRIS™ applications. It uses two methods to communicate with InterSystems IRIS: local and network. The title bar indicates the communication mode currently in use.
Local communication is used when the Terminal communicates with the InterSystems IRIS server with which it was installed. In this case, the title bar displays InterSystems IRIS TRM:pid(instancename)
is the process ID of the InterSystems IRIS process with which the Terminal is communicating.
is the InterSystems IRIS instance in which the process is running.
Network communication uses the TELNET protocol over TCP/IP to communicate with either a Windows InterSystems IRIS server or with a UNIX® host. In this case, the title bar displays (server NT InterSystems IRIS Telnet)
is the host name of the remote server.
The communications stack for InterSystems IRIS is Winsock, and errors reported from this communications mode are the names of the Winsock error codes. For example, WSAECONNREFUSED
means the connection was refused.
In the Terminal, you can enter ObjectScript commands of all kinds. For example:
The Terminal implicitly issues the Use 0
command after each line you enter. This means that if you issue a Use
command to direct output to some other device, that command is essentially ignored.
Also, large input buffers may defer the action of keys that attempt to stop the input flow such as Ctrl-C
. This is also dependent on processor and connection speed. A special effort was made to respond to keystrokes before host input.
You can also run Terminal scripts
, which are files with the extension .scr
existing in your file system. The Terminal provides a small set of commands you can use in these scripts, including a command that sends an ObjectScript command to the Terminal, as if you had typed it manually.
When the Terminal begins execution, the code checks for the existence of a routine called ZWELCOME
in the %SYS
namespace. If such a routine is found, it is invoked immediately prior to the terminal login sequence, if any. The name of the routine implies its intended use, as a custom identification and welcome message to users.
The installation of ZWELCOME
into the %SYS
namespace requires an individual with administrator privileges and write access to the CACHESYS
routine executes in the %SYS
namespace with an empty $USERNAME
and with $ROLES
set to %ALL
. Take care to ensure that the failure modes of ZWELCOME
are benign. Also, this routine should not modify the $ROLES
Here is a simple example:
ZWELCOME() PUBLIC ;
Set ME = ##class(%SYS.ProcessQuery).%OpenId($JOB)
Write "Now: ", $ZDATETIME($HOROLOG, 3, 1), !
Write "Pid/JobNo: ", ME.Pid, "/", ME.JobNumber, !
Write "Priority: ", ME.Priority, !
The command prompt displays the current namespace, such as:
There are several ways to change namespaces in the Terminal:
Using the ZNSPACE Command
You can change to a new namespace with the ZNSPACE
command (which has a short form of ZN
The argument for the ZNSPACE
command is a single string that is the name of the namespace to change to. If you enter an invalid namespace name, ZNSPACE
throws a <NAMESPACE> error. See the ZNSPACE
reference page in the ObjectScript Reference
for more information.
You can change to a new namespace with the ^%CD
(change directory) routine:
You're in namespace USER
Default directory is c:\intersystems\iris\mgr\user\
routine prompts for a new namespace to change to. The namespace name is not case-sensitive. If you enter ?
at the prompt, ^%CD
displays a list of available namespaces. If you enter an invalid namespace name, ^%CD
presents an error message.
As noted previously, the Terminal prompt indicates the namespace in which you are currently working. The prompt may display additional information, to indicate the transaction level or the program stack level.
If you are within a transaction, a prefix is appended to the prompt to indicate the transaction level. The prefix is of the form TLn:
, where n
is the transaction level. For example, if you are in the User
namespace and you enter the ObjectScript command TSTART
, the prompt changes as follows:
If you exit the Terminal, that rolls back the transaction.
If an error occurs, a suffix is added to the prompt to indicate the program stack level. For example:
Current settings :-
No current settings
Compiler is NEW
To exit the TSQL shell, enter the ^
In the Terminal, you can also open various operating-system shells. To do so, type !
and press Enter
. The Terminal then opens your default operating-system shell, and the prompt shows the working directory. For example:
On Macintosh, you cannot open the C-shell this way; you receive a permission denied error. You can, however, use other shells (Bash, Bourne, or Korn).
To exit the shell, use the quit
command as appropriate for the shell.
Interrupting Execution in the Terminal
To interrupt the Terminal and stop any foreground execution, use one of the following key combinations:
To exit the Terminal, do either of the following:
This causes this copy of the Terminal to exit, closing any open files and stopping any foreground execution.
If this Terminal was connected to a server at startup, it exits on its own when the communications channel is closed.
If you accessed this Terminal via InterSystems Telnet
in the InterSystems Launcher, then it does not exit automatically when the communications channel is closed; instead it remains active so you that can connect again via the Connect