##はじめに
前回の記事(『Macで3270エミュレーターを使ってみる』)のフォローで、使用した3270エミュレーターのソフト・キーボードでキー・アサインの不明部分を調査するためにネットワーク・レベルで送受信パケットを捕捉し解析してみましょう。
##本編
###方法
3270エミュレーターのソフト・キーボードで発生するアテンションIDを調査するのが主目的であり、できるだけシンプルな試験手順とします。
- ツールはWireshark
こちらからダウンロード。感覚的な使い勝手で操作はいたって容易です。パケット内容を解釈して形式化してくれるので解析対象部分もすぐに識別できます。
(導入・起動方法は簡単なので割愛)
この画面でソフト・キーボード(FKey)からアテンション・キーを押下するとメインフレームにデータが送信されます。'EYECATCHER'の文字列はEBCDICエンコーディングでx'C5 E8 C5 C3 C1 E3 C3 C8 C5 D9'。
###結果
TN3270プロトコル接続なのでTELNETのパケットに着目し、ユーザー・データ(すなわち3270データストリーム)を解析します(下図の反転部分)。
最初の3バイトのx'7d 40 4a'が3270制御コード、それ以降がメインフレームに送信されている画面データ('EYECATCHER')を示しています。インバウンド・データストリーム形式の時、先頭がアテンションIDとなり、x'7d'すなわちエンター・キーのアテンションIDが送信されていることが分かります。続く2バイトはカーサー・アドレスでx'40 4a'は、24 x 80画面のスクリーン・サイズで1行目の11カラム目を指しています。
3270データストリームについてはこちらを参照。
おまけ
最後81バイト目のx'ef'(d'239')は、RFC885(TELNET END OF RECORD OPTION)で規定されているTELNETデータのEnd-Of-Recordエスケープ・シーケンス。
##まとめ
上述の手順を繰り返し、不明であったソフト・キーボード(FKey)のアテンション・キーのIDを補足すると以下の通りとなります。
使用ツールではパケットがASCIIエンコーディングで形式化・表示される為、送信データ内容(EBCDICエンコーディング)が判読できないのがちょっと残念(エンコード指定のオプションがあるかもしれません)。