TN3270(1)

名称
tn3270 - IBM の VM/CMS にフルスクリーンの端末としてログインする

書式
tn3270 [-d] [-n filename] [-t commandname] [sysname [port]]

解説
tn3270 によって UNIX マシンから IBM (互換) マシンへ、フルスクリーンの全二重の接続が可能になります。 tn3270 は IBM 3270 端末からリモートマシンにログインしたように見せかけます。もちろん、 ログインするリモートマシンにアカウントを持っていなければなりません。 tn3270 はユーザにとっては多くの点で Yale ASCII Terminal Communication System II に似たように見えます。 tn3270 は実際は Arpanet TELNET ユーザインタフェース ( telnet(1) を参照) を変更したものであり、 特定の状況下で生の 3270 コントロールストリームを解釈および生成します。

tn3270 のオプションは以下のものがあります:

-d  ソケットレベルのトレースを行なう (スーパーユーザ専用)。

-nfilename
    ネットワークトレースデータの出力 (コマンドの ``toggle netdate'' と ``toggle options''による。 telnet(1) を参照) を保存するファイルを指定します。 デフォルトは標準エラー出力です。

-tcommandname
    リモートの IBM マシンから受けた IBM 4994 スタイルの透過モードのデータを処理する UNIX コマンドを指定します。

sysname
    リモートシステムの名前です。もしリモートマシンの名前が指定されなかった 場合はコマンドを受け付けるためのプロンプトが出ます (下記参照)。

port
    リモートシステム上の接続ポートです。通常 tn3270 はリモートマシン上の標準的な TELNET ポート (ポート番号 23) に接続を試みます。

tn3270 は最初にリモートシステムに接続するときは 3270 モードでネゴシエーション を行います。 このネゴシエーションでは、 tn3270 が 3270 のどのモデルをエミュレートしているかをリモートシステムへ伝える ことも行います どのような場合でも、 tn3270 は 3278 端末をエミュレートします。特定のどのモデルかを決定するために、 tn3270 は実際の端末 (環境変数 TERM で定義したもの。 termcap(5) を参照 ) の行と列の数を見ます。 端末 (もしくは、マルチウィンドウシステムの場合は tn3270 が走っているウィンドウ) は少なくとも 80 列と 24 行以上の大きさがなけれ ばなりません。そうでないと tn3270 はエミュレーションモードになりません。もしその端末が 80 x 24 以上の大きさを持っていれば、 以下の表にしたがってエミュレーションを行います。

最小サイズ エミュレートする
(行*列) 端末
-------------- ------------
27*132 3278 model 5
43*80 3278 model 4
32*80 3278 model 3
24*80 3278 model 2

3270 端末のエミュレーションは UNIX プロセス内で行われます。 このエミュレーションではホストからの 3270 スタイルのコマンドを ユーザの端末画面を制御するための適切なシーケンスにマッピングします。 tn3270 はこれを行うために curses(3) と /usr/share/misc/termcap ファイルを利用します。 3270 キーボードの特殊なキー (プログラムファンクションキーなど) の エミュレーションも、 ASCII キーボードからのキーストロークのコントロールシーケンスを 適切な 3270 制御文字列へマッピングすることで実現しています。 このマッピングは端末依存であり、定義ファイルである /usr/share/misc/map3270, ( map3270(5) 参照) かもしくは環境変数 MAP3270 (必要であれば MAP3270A, MAP3270B なども。 mset(1) 参照) で定義されます。 ASCII キーボードの特殊なファンクションキーはどれでもいつでも利用可能です。 ユーザの端末用のエントリがない場合は、 tn3270 は端末タイプ unknown を探します。 もしこのエントリが見付からない場合は、デフォルトのキーマッピングを用います tn3270 ( map3270(5) 参照)。

特殊なキーボードマッピングシーケンスの最初の文字は ASCII escape (ESC) 、制御文字、もしくは ASCII delete (DEL) のいずれかです。もしユーザが解釈不能なキーシーケンスをタイプした場合 は、 tn3270 は ASCII bell (BEL) 、もしくはビジュアルベルがユーザの termcap エントリ内に定義されている ならばこれをユーザの端末に送り、 IBM のホストマシンには何も送りません。

もし tn3270 がリモートホストシステムの名前を指定せずに起動された場合、 tn3270 はプロンプト “tn3270> ” を出してローカルコマンドモードにはいります。このモードでは tn3270 は telnet(1) のすべてのコマンドを受け付け、さらに一つのコマンドが追加されます。

transcom
    IBM 4994 スタイルの透過モード処理のための UNIX コマンドを指定します。

tn3270 はホストに接続した後でも特殊なエスケープシーケンスをタイプすることで コマンドモードに入ることができます。 tn3270 がリモートホストとの間で 3270 モードのネゴシエーションに成功した場合、 コマンドモードに入るためのエスケープシーケンスは、 ユーザの端末に適合した map3270 エントリ ( map3270(5) 参照) によって定義されたものになります (通常はコントロール-C)。 エントリによって定義されていなければ単一文字 ‘^]’ (コントロール右角括弧) に初期設定されます。

コマンドモードの時にはどのようなホストログインセッションも生きています が一時的にサスペンドされます。そのホストログインセッションは コマンドプロンプトに対して空行を返す ( RETURN キーを押す) ことで復帰できます。 セッションは、リモートホストからログオフするか、ローカルコマンドモードで ``quit'' もしくは ``close'' とタイプすることで切断されます。

関連ファイル
/usr/share/misc/termcap
/usr/share/misc/map3270

注釈
IBM 4994 スタイル透過出力をリモートホストから tn3270 が受け取る時に IBM 4994 スタイルの透過モードコマンドが起動されます。入出力のパイプは二つ のプロセスの間のコミュニケーションのために生成されます。透過モード出力 の終了を送ることによって、リモートホストから 3270 クリアコマンドを受け 取ったときに、そのパイプはクローズされます。 透過モードは、3270 端末接続を介して ASCII 制御文字を送るために必要です。 ASCII グラフィック端末サポートはこの方法によって行われます。 transcom コマンドの開発者は、 transcom の標準入力パイプを閉じる時には ECHO と CRMOD をオフにして CBREAK モードとなるようにすべきです。

環境変数
tn3270 は以下の環境変数をチェックします: TERM, MAP3270, MAP3270[A...] 。 これらに関する情報は mset(1) に記載されています。 tn3270 は、さらに SHELL, KEYBD および API3270 もチェックします。

関連項目
mset(1), telnet(1), curses(3), termcap(3), map3270(5), termcap(5) Yale ASCII Terminal Communication, System II Program Description/Operator's Manual, IBM SB30-1911.

歴史
tn3270 は 4.3BSD から現れました。

バグ
tn3270 は遅く、けた外れにシステム資源を使います。

すべての 3270 ファンクションをサポートしているわけでも、 すべての Yale 拡張をサポートしているわけでもありません。

エラー状態 (保護領域にデータを入力する等) はベルを鳴らすだけではなくユーザの端末にメッセージを送るよう にするべきです。