c3270 - curses-based IBM host access tool
c3270 [options] [host]
c3270 opens a telnet connection to an IBM host in a console window. It implements RFCs
2355 (TN3270E), 1576 (TN3270) and 1646 (LU name selection), and supports IND$FILE file
transfer. If the console is capable of displaying colors, then c3270 emulates an IBM
3279. Otherwise, it emulates a 3278.
The full syntax for host is:
Prepending a p: onto hostname causes the connection to go through the telnet-passthru ser-
vice rather than directly to the host. See PASSTHRU below.
Prepending an s: onto hostname removes the "extended data stream" option reported to the
host. See -tn below for further information.
Prepending an n: onto hostname turns off TN3270E support for the session.
A specific LU name to use may be specified by prepending it to the hostname with an `@'.
Multiple LU names to try can be separated by commas. An empty LU can be placed in the
list with an extra comma.
On systems that support the forkpty library call, the hostname may be replaced with -e and
a command string. This will cause c3270 to connect to a local child process, such as a
The port to connect to defaults to telnet. This can be overridden with the -port option,
or by appending a port to the hostname with a colon `:'. (For compatability with previous
versions of c3270 and with tn3270(1), the port may also be specified as a second, separate
c3270 understands the following options:
Forces all characters to be displayed in bold. This helps with PC consoles which
display non-bold characters in unreadably dim colors.
Specifies an EBCDIC host character set. See CHARACTER SETS below.
Sets the initial value of toggle to false. The list of toggle names is under TOG-
Uses file as the hosts file, which allows aliases for host names and scripts to be
executed at login. See ibm_hosts(1) for details.
Specifies a keyboard map to be found in the resource c3270.keymap.name or the file
name. See KEYMAPS below for details.
The model of 3270 display to be emulated. The model name is in two parts, either
of which may be omitted:
The first part is the base model, which is either 3278 or 3279. 3278 specifies a
monochrome 3270 display; 3279 specifies a color 3270 display.
The second part is the model number, which specifies the number of rows and col-
umns. Model 4 is the default.
Model Number Columns Rows
2 80 24
3 80 30
4 80 43
5 132 27
Note: Technically, there is no such 3270 display as a 3279-4 or 3279-5, but most
hosts seem to work with them anyway.
The default model for a color display is 3279-4. For a monochrome display, it is
-mono Forces 3278 emulation.
Makes the screen larger than the default for the chosen model number. This option
has effect only in combination with extended data stream support (controlled by the
"c3270.extended" resource), and only if the host supports the Query Reply
structured field. The number of columns multiplied by the number of rows must not
exceed 16383 (3fff hex), the limit of 14-bit 3270 buffer addressing.
Specifies a different TCP port to connect to. n can be a name from /etc/services
like telnet, or a number. This option changes the default port number used for all
connections. (The positional parameter affects only the initial connection.)
Causes c3270 to automatically start a pr3287 printer session. If luname is ".",
then the printer session will be associated with the interactive terminal session
(this requires that the host support TN3270E). Otherwise, the value is used as the
explicit LU name to associate with the printer session.
Sets the initial value of toggle to true. The list of toggle names is under
Specifies the terminal name to be transmitted over the telnet connection. The
default name is IBM-model_name-E, for example, IBM-3279-4-E for a color display, or
IBM-3278-4-E for a monochrome display.
Some hosts are confused by the -E suffix on the terminal name, and will ignore the
extra screen area on models 3, 4 and 5. Prepending an :s on the hostname, or
setting the "c3270.extended" resource to "false", removes the -E from the terminal
name when connecting to such hosts.
The name can also be specified with the "c3270.termName" resource.
-trace Turns on data stream and event tracing at startup. The default trace file name is
Specifies a file to save data stream and event traces into, overriding the default
Places a limit on the size of a trace file. If this option is not specified, or is
specified as 0 or none, the trace file will be unlimited. If specified, the trace
file cannot already exist, and the (silently enforced) minimum size is 64 Kbytes.
The value of size can have a K or M suffix, indicating kilobytes or megabytes
-xrm "c3270.resource: value"
Sets the value of the named resource to value. Resources control less common c3270
options, and are defined under RESOURCES below.
The -charset option or the "c3270.charset" resource controls the EBCDIC host character set
used by c3270. Available sets include:
Charset Name Code Page Display Character Sets
apl 37 3270cg-1a
belgian 500 3270cg-1a 3270-cg1
bracket 37 3270cg-1a 3270-cg1
brazilian 275 3270cg-1a 3270-cg1
finnish 278 3270cg-1a 3270-cg1
french 297 3270cg-1a 3270-cg1
german 273 3270cg-1a 3270-cg1
icelandic 871 3270cg-1a 3270-cg1
iso-hebrew 424 iso8859-8
iso-turkish 1026 iso8859-9
italian 280 3270cg-1a 3270-cg1
norwegian 277 3270cg-1a 3270-cg1
russian 880 koi8-r
solvenian 870 iso8859-2
thai 838 iso8859-11 tis620.2529-0
uk 285 3270cg-1a 3270-cg1
us-intl 37 3270cg-1a 3270-cg1
The default character set is bracket, which is useful for common IBM hosts which use
EBCDIC codes 0xAD and 0xBD for the `[' and `]' characters, respectively.
c3270 uses the ibm_hosts database to define aliases for host names, and to specify macros
to be executed when a connection is first made. See ibm_hosts(5) for details.
You may specify a different ibm_hosts database with the "c3270.hostsFile" resource.
NVT (ANSI) MODE
Some hosts use an ASCII front-end to do initial login negotiation, then later switch to
3270 mode. c3270 will emulate an ANSI X.64 terminal until the host places it in 3270 mode
(telnet BINARY and SEND EOR modes, or TN3270E mode negotiation).
If the host later negotiates to stop functioning in 3270 mode, c3270 will return to ANSI
In NVT mode, c3270 supports both character-at-a-time mode and line mode operation. You
may select the mode with a menu option. When in line mode, the special characters and
operational characteristics are defined by resources:
Mode/Character Resource Default
Translate CR to NL c3270.icrnl true
Translate NL to CR c3270.inlcr false
Erase previous character c3270.erase ^?
Erase entire line c3270.kill ^U
Erase previous word c3270.werase ^W
Redisplay line c3270.rprnt ^R
Ignore special meaning c3270.lnext ^V
of next character
Interrupt c3270.intr ^C
Quit c3270.quit ^\
End of file c3270.eof ^D
Separate keymaps can be defined for use only when c3270 is in 3270 mode or NVT mode. See
KEYMAPS for details.
c3270 has a number of configurable modes which may be selected by the -set and -clear
If set, c3270 operates in uppercase-only mode.
If set, c3270 behaves in some un-3270-like ways. First, when a character is typed
into a field, all nulls in the field to the left of that character are changed to
blanks. This eliminates a common 3270 data-entry surprise. Second, in insert
mode, trailing blanks in a field are treated like nulls, eliminating the annoying
`lock-up' that often occurs when inserting into an field with (apparent) space at
If set, the ANSI terminal emulator automatically assumes a NEWLINE character when
it reaches the end of a line.
The names of the toggles for use with the -set and -clear options are as follows:
Blank Fill blankFill
Track Cursor cursorPos
Trace Data Stream dsTrace
Trace Events eventTrace
Save Screen(s) in File screenTrace
These names are also used as the first parameter to the Toggle action.
If the terminal that c3270 is running on has at least one more row that the 3270 model
requires (e.g., 25 rows for a model 2), c3270 will display a status line. The c3270
status line contains a variety of information. From left to right, the fields are:
Three symbols indicate the state of the connection to the host. If connected, the
right-hand symbol is a solid box; if not, it is a question mark.
If the keyboard is locked, an "X" symbol and a message field indicate the reason
for the keyboard lock.
The letter "T" indicates that one or more keystrokes are in the typeahead buffer.
The letter "K" indicates that a temporary keymap is in effect.
The letter "R" indicates that the keyboard is in reverse field entry mode.
The letter "I" indicates that the keyboard is in insert mode.
The letter "P" indicates that a pr3287 session is active.
The LU name associated with the session, if there is one.
The cursor row and column are optionally displayed, separated by a "/".
Here is a complete list of basic c3270 actions. Script-specific actions are described on
the x3270-script(1) manual page.
Actions marked with an asterisk (*) may block, sending data to the host and possibly
waiting for a response.
*Attn attention key
BackSpace move cursor left (or send
BackTab tab to start of previous input
CircumNot input "^" in NVT mode, or
"notsign" in 3270 mode
*Clear clear screen
Compose next two keys form a special
*Connect(host) connect to host
*CursorSelect Cursor Select AID
Delete delete character under cursor
(or send ASCII DEL)
DeleteField delete the entire field
DeleteWord delete the current or previous
*Disconnect disconnect from host
Down move cursor down
Dup duplicate field
*Enter Enter AID (or send ASCII CR)
Erase erase previous character (or
send ASCII BS)
EraseEOF erase to end of current field
EraseInput erase all input fields
Escape escape to c3270> prompt
Execute(cmd) execute a command in a shell
FieldEnd move cursor to end of field
FieldExit clear to end of field and skip
to next (5250 emulation)
FieldMark mark field
HexString(hex_digits) insert control-character
Home move cursor to first input
Insert set insert mode
*Interrupt send TELNET IP to host
Key(keysym) insert key keysym
Key(0xxx) insert key with ASCII code xx
Left move cursor left
Left2 move cursor left 2 positions
MonoCase toggle uppercase-only mode
MoveCursor(row, col) move cursor to (row,col)
Newline move cursor to first field on
next line (or send ASCII LF)
NextWord move cursor to next word
*PA(n) Program Attention AID (n from
1 to 3)
*PF(n) Program Function AID (n from 1
PreviousWord move cursor to previous word
Printer(Start[,lu]|Stop) Start or stop printer session
PrintText(command) print screen text on printer
Quit exit c3270
Redraw redraw window
Reset reset locked keyboard
Right move cursor right
Right2 move cursor right 2 positions
*Script(command[,arg...]) run a script
*String(string) insert string (simple macro
*SysReq System Request AID
Tab move cursor to next input
Toggle(option[,set|clear]) toggle an option
ToggleInsert toggle insert mode
ToggleReverse toggle reverse-input mode
*Transfer(option=value...) file transfer
Up move cursor up
ignore do nothing
Any of the above actions may be entered at the c3270> prompt; these commands are also
available for use in keymaps (see KEYMAPS). Command names are case-insensitive.
Parameters can be specified with parentheses and commas, e.g.:
or with spaces, e.g.:
Parameters can be quoted with double-quote characters, to allow spaces, commas, and
parentheses to be used.
c3270 also supports the following interactive commands:
Help Displays a list of available commands.
Show Displays statistics and settings.
Trace Turns tracing on or off. The command trace on enables data stream and keyboard
event tracing; the command trace off disables it. The qualifier data or keyboard
can be specified before on or off to enable or disable a particular trace. After
on, a filename may be specified to override the default trace file name of
The -keymap option allows a keymap to be specified. If the option -keymap xxx is given,
then c3270 will first look for a resource named c3270.keymap.xxx; if that is not found,
then it will look for a file named xxx.
Multiple keymaps may be specified be separating their names with commas. Definitions in
later keymaps supercede those in earlier keymaps.
In addition, separate keymaps may be defined that apply only in 3270 mode or only in NVT
mode. For example, the resource definition c3270.keymap.xxx.nvt will augment the
definition of c3270.keymap.xxx, when c3270 is in NVT mode. Similarly, the resource
definition c3270.keymap.xxx.3270 will augment the definition of c3270.keymap.xxx, when
c3270 is in 3270 mode.
Keymaps specify actions to perform when a particular sequence of keys is pressed. Each
line in a keymap has the following syntax:
[Meta][Ctrl]<Key>key...: Action[(param[,...])] ...
Ctrl<Key>A <Key>F1: PF(13)
The optional Meta or Ctrl qualifiers specify that the Meta and Ctrl keys are pressed along
with the specified key, respectively. The key is either a valid X11 keysym (these are the
ISO 8859-1 symbol names, such as equal for `=' and a for `a') or a valid symbolic ncurses
key name, such as UP. The Action is an action from the ACTIONS list, above. More than
one action may be specified. (Note that symbolic ncurses key names can be used only if
the c3270.cursesKeymap resource is set to True, which enables ncurses keymap mode.)
Keymap entries are case-sensitive and modifier-specific. This means that a keymap for the
b key will match only a lowercase b. Actions for uppercase B, or for Meta-b or Control-B,
must be specified separately.
The base keymap is:
Ctrl<Key>a Ctrl<Key>a Key(0x01)
Ctrl<Key>a Ctrl<Key>] Key(0x1d)
Ctrl<Key>a <Key>Tab BackTab
Ctrl<Key>a <Key>c Clear
Ctrl<Key>a <Key>e Escape
Ctrl<Key>a <Key>r Reset
Ctrl<Key>a <Key>l Redraw
Ctrl<Key>a <Key>m Compose
Ctrl<Key>a <Key>^ Key(notsign)
Ctrl<Key>a <Key>F(n) PF(n+12)
Ctrl<Key>a <Key>1 PA(1)
Ctrl<Key>a <Key>2 PA(2)
Ctrl<Key>a <Key>3 PA(3)
The base 3270-mode keymap adds:
THE META OR ALT KEY
Some keyboards do not have a Meta key. Instead, they have an Alt key. Sometimes this key
acts as a proper Meta key, that is, it is a modifier key that sets the high-order bit(0x80) in the code that is transmitted for each key. Other keyboards send a two-character
sequence when the Alt key is pressed with another key: the Escape character(0x1b),
followed by the code for the other key.
The resource c3270.metaEscape and the termcap km attribute control how c3270 will
interpret these sequences. When c3270.metaEscape is set to true, or when c3270.metaEscape
is set to auto and the termcap km attribute is set, the keyboard is assumed to have a
separate Meta key. The Escape key can be used as an ordinary data key and has no special
When c3270.metaEscape is set to true, or when c3270.metaEscape is set to auto and the
termcap km attribute is not set, the keyboard is assumed to use the Escape character as a
prefix to indicate that the following character is supposed to have the high-order bit
set. When c3270 sees an Escape character from the keyboard, it sets a short timeout. If
another character arrives before the timeout expires, then c3270 will combine the two
characters, setting the high-order bit of the second. In an event trace file, the
combined character is listed as derived. In a keymap, only the combined character or the
Meta prefix may be used. The Escape key can still be used by itself, but only if there is
a short pause before pressing another key.
The default value for c3270.metaEscape is auto.
The Transfer action implements IND$FILE file transfer. This action requires that the
IND$FILE program be installed on the IBM host, and that the 3270 cursor be located in a
field that will accept a TSO or VM/CMS command.
Because of the complexity and number of options for file transfer, the parameters to the
Transfer action take the unique form of option=value, and can appear in any order. The
Option Required? Default Other Values
Direction No send receive
Host No tso vm
Mode No ascii binary
Cr No remove add, keep
Exist No keep replace, append
Recfm No fixed, variable,
Allocation No tracks, cylinders,
The option details are as follows.
send (the default) to send a file to the host, receive to receive a file from the
The name of the file on the host.
The name of the file on the local workstation.
Host The type of host (which dictates the form of the IND$FILE command): tso (the
default) or vm.
Mode Use ascii (the default) for a text file, which will be translated between EBCDIC
and ASCII as necessary. Use binary for non-text files.
Cr Controls how Newline characters are handled when transferring Mode=ascii files.
remove (the default) strips Newline characters in local files before transferring
them to the host. add adds Newline characters to each host file record before
transferring it to the local workstation. keep preserves Newline characters when
transferring a local file to the host.
Exist Controls what happens when the destination file already exists. keep (the default)
preserves the file, causing the Transfer action to fail. replace overwrites the
destination file with the source file. append appends the source file to the
Recfm Controls the record format of files created on the host. fixed creates a file with
fixed-length records. variable creates a file with variable-length records.
undefined creates a file with undefined-length records (TSO hosts only). The Lrecl
option controls the record length or maximum record length for Recfm=fixed and
Recfm=variable files, respectively.
Lrecl Specifies the record length (or maximum record length) for files created on the
Specifies the block size for files created on the host. (TSO hosts only.)
Specifies the units for the TSO host PrimarySpace and SecondarySpace options:
tracks, cylinders or avblock.
Primary allocation for a file created on a TSO host. The units are given by the
Secondary allocation for a file created on a TSO host. The units are given by the
There are several types of script functions available.
The String Action
The simplest method for scripting is provided via the String action. The arguments
to String are one or more double-quoted strings which are inserted directly as if
typed. The C backslash conventions are honored as follows. (Entries marked * mean
that after sending the AID code to the host, c3270 will wait for the host to unlock
the keyboard before further processing the string.)
An example keymap entry would be:
Meta<Key>p: String("probs clearrdr\n")
Note: The strings are in ASCII and converted to EBCDIC, so beware of inserting
There is also an alternate form of the String action, HexString, which is used to
enter non-printing data. The argument to HexString is a string of hexadecimal
digits, two per character. A leading 0x or 0X is optional. In 3270 mode, the
hexadecimal data represent EBCDIC characters, which are entered into the current
field. In NVT mode, the hexadecimal data represent ASCII characters, which are
sent directly to the host.
The Script Action
This action causes c3270 to start a child process which can execute c3270 actions.
Standard input and output from the child process are piped back to c3270. The
Script action is fully documented in x3270-script(1).
c3270 allows the direct entry of accented letters and special symbols. Pressing and
releasing the "Compose" key, followed by two other keys, causes entry of the symbol
combining those two keys. For example, "Compose" followed by the "C" key and the ","
(comma) key, enters the "C-cedilla" symbol. A C on the status line indicates a pending
The mappings between these pairs of ordinary keys and the symbols they represent is
controlled by the "c3270.composeMap" resource; it gives the name of the map to use. The
maps themselves are named "c3270.composeMap.name". The default is "latin1", which gives
mappings for most of the symbols in the ISO 8859-1 Latin-1 character set that are not in
the 7-bit ASCII character set.
Note: The default keymap defines Meta<Key>m as the "Compose" key. You may set up your own
"Compose" key with a keymap that maps some other keysym onto the Compose action.
c3270 supports associated printer sessions via the pr3287(1) program. The Printer action
is used to start or stop a pr3287 session.
The action Printer Start starts a printer session, associated with the current LU. (This
works only if the host supports TN3270E.)
The action Printer Start lu starts a printer session, associated with a specific lu.
The action Printer Stop stops a printer session.
The resource c3270.printer.command specifies the command used to print each job; it
defaults to lpr. The resource c3270.printer.assocCommandLine specifies the command used
to start an associated printer session. It defaults to:
pr3287 -assoc %L% -command "%C%" %H%
The resource c3270.printer.luCommandLine specifies the command used to start a specific-LU
printer session. It defaults to:
pr3287 -command "%C%" %L%@%H%
When the printer session command is run, the following substitutions are made:
%C% Command (value of
%H% Host IP address
%L% Current or specified LU
See pr3287(1) for further details.
c3270 supports the Sun telnet-passthru service provided by the in.telnet-gw server. This
allows outbound telnet connections through a firewall machine. When a p: is prepended to
a hostname, c3270 acts much like the itelnet(1) command. It contacts the machine named
internet-gateway at the port defined in /etc/services as telnet-passthru (which defaults
to 3514). It then passes the requested hostname and port to the in.telnet-gw server.
Certain c3270 options can be configured via resources. Resources are defined in the file
.c3270pro in the user's home directory, and by -xrm options. The definitions are similar
to X11 resources, and use a similar syntax. The resources available in c3270 are:
Resource Default Option Purpose
allBold Auto -allbold Display all
blankFill False -set blankFill Blank Fill mode
charset bracket -charset EBCDIC character
charset.foo Definition of
character set foo
composeMap latin1 Name of composed-
cursesKeymap True Set curses keymap
dsTrace False -trace Data stream tracing
eof ^D NVT-mode EOF
erase ^H NVT-mode erase
extended True Use 3270 extended
eventTrace False -trace Event tracing
ftCommand ind$file Host file transfer
hostsFile -hostsfile Host alias/macro
icrnl False Map CR to NL on
inlcr False Map NL to CR in
intr ^C NVT-mode interrupt
keymap -keymap Keyboard map name
keymap.foo Definition of
kill ^U NVT-mode kill
lineWrap False -set lineWrap NVT line wrap mode
lnext ^V NVT-mode lnext
m3279 (note 1) -mono 3279 (color)
metaEscape Auto Interpret ESC-x as
monoCase False -set monoCase Mono-case mode
numericLock False Lock keyboard for
numeric field error
oerrLock True Lock keyboard for
oversize -oversize Oversize screen
port telnet -port Non-default TCP
printer.* (note 4) Printer session
quit ^\ NVT-mode quit
rprnt ^R NVT-mode reprint
secure False Disable "dangerous"
termName (note 2) -tn TELNET terminal
traceDir /tmp Directory for trace
traceFile (note 3) -tracefile File for trace
typeahead True Allow typeahead
werase ^W NVT-mode word-erase
Note 1: m3279 defaults to True if the terminal supports color, False otherwise. It
can be forced to False with the -mono option.
Note 2: The default terminal type string is constructed from the model number,
color emulation, and extended data stream modes. E.g., a model 2 with color
emulation and the extended data stream option would be sent as IBM-3279-2-E. Note
also that when TN3270E mode is used, the terminal type is always sent as some type
Note 3: The default trace file is x3trc.pid in the directory specified by the
Note 4: See PRINTER SUPPORT for details.
In .c3270pro, lines are continued with a backslash character.
-xrm options override definitions found in .c3270pro. If more than one -xrm option is
given for the same resource, the last one on the command line is used.
x3270(1), s3270(1), tcl3270(1), ibm_hosts(5), x3270-script(1), pr3287(1), telnet(1),
Data Stream Programmer's Reference, IBM GA23-0059
Character Set Reference, IBM GA27-3831
RFC 1576, TN3270 Current Practices
RFC 1646, TN3270 Extensions for LUname and Printer Selection
RFC 2355, TN3270 Enhancements
Modifications Copyright 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001 by Paul Mattes.
Original X11 Port Copyright 1990 by Jeff Sparkes.
Permission to use, copy, modify, and distribute this software and its documentation
for any purpose and without fee is hereby granted, provided that the above
copyright notice appear in all copies and that both that copyright notice and this
permission notice appear in supporting documentation.
Copyright 1989 by Georgia Tech Research Corporation, Atlanta, GA 30332.
All Rights Reserved. GTRC hereby grants public use of this software. Derivative
works based on this software must incorporate this copyright notice.
5250 Emulation Code Copyright Minolta (Schweiz) AG, Beat Rubischon.
01 May 2002 c3270(1)