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