x3270 -script - scripting facility for x3270
SYNOPSIS
x3270 -script [x3270-options]
DESCRIPTION
The -script switch allows x3270
to be operated under the control of another program.
Typically this would be a script using expect(1)
or the co-process facility of the Korn Shell ksh(1).
When the -script switch is given, x3270
looks for commands on its standard input, and places the responses on
standard output and standard error output.
Commands are X actions; the syntax is the same as for the right-hand
side of an X translation table (an x3270
keymap), with two exceptions: only one action may appear per line, and
if no parameters are needed by the action, the parentheses may be omitted.
Any x3270 action may be specified.
Several new actions have been defined for use by scripts, and the behavior
of certain other actions (and of x3270
in general) is different when an action is initiated by a script.
Some actions generate output; some may delay completion until the certain
external events occur, such as the host unlocking the keyboard.
The completion of every command is marked by a two-line message on standard
output.
The first line is the current status of x3270, documented below.
If the command is successful, the second line is the string "ok"; otherwise it
is the string "error".
STATUS FORMAT
The status message consists of 12 blank-separated fields:
- Keyboard State
- If the keyboard is unlocked, the letter U.
If the keyboard is locked waiting for a response from the host, or if not
connected to a host, the letter L.
If the keyboard is locked because of an operator error (field overflow,
protected field, etc.), the letter E.
- Screen Formatting
- If the screen is formatted, the letter F.
If unformatted or in ANSI mode, the letter U.
- Field Protection
- If the field containing the cursor is protected, the letter P.
If unprotected or unformatted, the letter U.
- Connection State
- If connected to a host, the string C(hostname).
Otherwise, the letter N.
- Emulator Mode
- If connected in 3270 mode, the letter I.
If connected in ANSI line mode, the letter L.
If connected in ANSI character mode, the letter C.
If not connected, the letter N.
- Model Number (2-5)
-
- Number of Rows
- The current number of rows defined on the screen.
The host can request that x3270
use a 24x80 screen, so this number may be smaller than the maximum number of
rows possible with the current model.
- Number of Columns
- The current number of columns defined on the screen, subject to the same
difference for rows, above.
- Cursor Row
- The current cursor row (zero-origin).
- Cursor Column
- The current cursor column (zero-origin).
- Window ID
- The X window identifier for the main
x3270
window, in hexadecimal preceded by
0x.
DIFFERENCES
When an action is initiated by a script, x3270
behaves in several different ways:
If an error occurs, the usual pop-up window does not appear.
Instead, the text is written to standard error output.
If end-of-file is detected on standard input, x3270 exits.
(A script can exit without killing x3270
by using the CloseScript() action, below.)
The Quit() action always causes x3270 to exit.
(When called from the keyboard, it will exit only if not connected to a host.)
The Clear(), Enter(), PF(), and PA() actions will
not complete until the host unlocks the keyboard.
If the parameter to a String() action includes a code for one these
actions, it will also wait for the keyboard to unlock before completing.
NEW ACTIONS
The following actions have been defined or modified for use with scripts.
(Note that unlike the status line display, the row and col
coordinates used in these actions use [0,0] as their origin, not [1,1]).
- AnsiText()
- Outputs whatever data that has been output by the host in ANSI mode
since the last time that AnsiText() was called.
The data is preceded by the string data:, and has had all control
characters expanded into C backslash sequences.
This is a convenient way to capture ANSI
mode output in a synchronous manner without trying to decode the screen
contents.
-
Ascii(row, col, rows, cols)
Ascii(row, col, len)
Ascii(len)
Ascii()
- Outputs an ASCII text representation of the screen contents.
Each line is preceded by the string data:, and there are no control
characters.
If all four parameters are given, a rectangular region of the screen is output.
If three parameters are given, len characters are output, starting at
the specified row and column.
If only the len
parameter is given, that many characters are output, starting at the cursor
position.
If no parameters are given, the entire screen is output.
- AsciiField()
- Outputs an ASCII text representation of the field containing the cursor.
The text is preceded by the string data:.
- Connect(hostname)
- Connects to a host.
The action does not return until
x3270
is successfully connected in the proper mode, or the connection fails.
- ContinueScript(keyword)
- This action continues a script that is paused with
PauseScript().
The keyword parameter becomes the output of the PauseScript()
action, preceded by the string data:.
Obviously, the ContinueScript()
action would not actually be used in a script; instead it must be generated
by the keyboard or a macro.
- CloseScript()
- Causes x3270 to stop reading commands from standard input.
This is useful to allow the script to exit, with
x3270
proceeding interactively.
(Without this action, x3270
would exit when it detected end-of-file on standard input.)
- Disconnect()
- Disconnects from the host.
-
Ebcdic(row, col, rows, cols)
Ebcdic(row, col, len)
Ebcdic(len)
Ebcdic()
- The same function as Ascii() above, except that rather than
generating
ASCII text, each character is output as a hexadecimal EBCDIC code, preceded by
0x.
- EbcdicField()
- The same function as AsciiField() above, except that it generates hexadecimal
EBCDIC
codes.
- Info(message)
- Pops up an informational message.
- MoveCursor(row, col)
- Moves the cursor to the specified coordinates.
- PauseScript
- Delays execution of a script until a ContinueScript()
action is executed (presumably by a keyboard command or a macro).
The parameter to the ContinueScript()
action becomes the output of the PauseScript()
action, preceded by the string data:.
- Wait()
- A useful utility for use at the beginning of scripts and after the
Connect() action.
Waits until the screen is formatted, and the host has positioned the cursor
on a modifiable field.
SEE ALSO
expect(1)
ksh(1)
x3270(1)
Last modified 9. December 1994