端末・専用ソフト不要 BizRobo! で AS400 を操作してみよう

## はじめに

ふだん使う機会はないのですが、先日業務で話題に上がり、横から聞いていて「実際どんな感じなんだろうか？」と思ったので自身の記録として試してみました。

内輪向けの情報発信なので、編集はほぼ行わず一方で時間が経って見返しても意味が分かるように動画をまとめています。

百聞は一見に如かず。

:::note
本記事は、BizRobo! v11.4.0.2 の利用を前提に解説します。
:::

## BizRobo!からAS400を操作する様子
15分強の動画
<iframe width="100%" height="430" src="https://www.youtube.com/embed/giSR8ufmbE4?si=JryJtYWH7n58FrEG" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

## 動画の補足・メモ

### 👍 BizRobo! でターミナルを操作する時にDAS端末を用意する必要がありますか？

ないです。
Chromium や WebKit、CSV や PDF などと同様で BizRobo 内にターミナルのエミュレータを持っているため。

### 👍 オプション指定に関する補足

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/52e9114f-7501-3089-e22e-8a8714478606.png)

#### 文字コード（LineCodePage）

| 文字セット名 | ホスト コード ページ パラメータ |補足|
|:-|:-|:--|
| US/Canada  | cp037 (デフォルト) ||
|  Japanese | cp930, cp939  |これら二つの主な違いは、1バイト文字のEBCDIC[^1]が「英数カナ」なのか「英数小文字」なのかによって決まります。つまり、CP930は「英数カナ拡張」（IBM i（AS/400）のCCSIDでは5026に該当）であり、一方CP939は「英数小文字拡張」（CCSIDは5035に該当）です。これらの違いにより、どちらを使用するかが決まります。[^2]|

#### ターミナル タイプ（env.TERM）

| ターミナル・タイプ | 内容 |補足|
|:-|:-|:--|
| IBM-3477-FC  |  27x132-capable color ||
|  IBM-3477-FG | 27x132-capable mono	 |  |
|  IBM-3180-2 | 27x132-capable mono	  ||
|  IBM-3179-2 | 24x80-capable color  ||
|  IBM-3196-A1 | 24x80-capable mono	  ||
|  IBM-5292-2 | 24x80-capable color	  ||
| IBM-5291-1|24x80-capable mono	 ||
|IBM-5251-11	|24x80-capable mono	| |
|IBM-5555-B01 (DBCS が有効)|24x80-2バイト文字セットcapable mono|日本語環境向け|
|IBM-5555-C01 (DBCS が有効)|24x80-2バイト文字セットcapable color|日本語環境向け|

#### デバイス名（env.DevName）

`env.DevName` を設定する必要があるのは、特定のワークステーションIDを指定してAS/400に接続したい場合です。ワークステーションIDを指定しない場合、`QPADEV<数字>` の形式でIDが自動的に設定されます。ただし、同じ名前で複数のセッションを同時にアクティブにすることはできません。つまり、一度に一つのセッションだけが特定のワークステーションIDを使用できます。[^2]


[^1]: Extended Binary Coded Decimal Interchange Code　文字コードの一部で、主にIBMのメインフレームで使用されます。

[^2]: Bing AI を参考。

### 👍 ターミナルを操作する時には `キープレス` よりも、専用のアクションを使っての実装がおすすめ

ターミナルの操作はキーボードで行いますが、単純に `キープレス` を使うのではなく、各ターミナル用（今回は tn5250用）に準備されている `アプリケーション アクション` を使って操作を実装するのがいいでしょう。

:::note warn
`閉じる` 以外のアクションについては、アプリケーションタブから命令を挿入しただけでは不十分で、「移動したい方法（行・列）」や「入力したいテキスト」を設定する必要があります。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/f108dd09-aba9-9b61-9213-84413a079f65.png)

| アクション | 説明 |
|:-|:-|
| `閉じる`  | [ターミナル] ウィンドウを閉じます。  |
| `ステップを移動`<br> (行または列)  | アプリケーション ツリーで使用されている行または列の座標に基づいて、指定した位置にカーソルを移動します。各パラメータは、水平方向および垂直方向の移動を容易にするためのオプションです。|
| `フィールドに入力` <br>(テキスト)  | 指定したテキストをフィールドに入力し、[FieldExit] キーを使用して次のフィールドに進みます。 <br> ただし、メニュー選択時の数値入力（メニューIDの指定）については、単純に `キープレス` を使用しましょう。|


## 【補足】動画で登場する各種マテリアル

#### 公開されている AS400 の環境

https://www.pub400.com/

#### PCから接続して利用するための tn5250 エミュレータ

https://www.tn5250.com/

#### pub400 利用にあたり参考にさせていただいたサイト

https://qiita.com/You_name_is_YU/items/256045b1335f72bef66e

#### ロボットファイル

https://github.com/kiban-unyo/Sample_AS400_handling

## まとめ

BizRobo! 内蔵のターミナルエミュレータ、地味に良いところとして「ロボットがエラーとなりターミナルを閉じた場合にホストコンピュータ側とのセッションも併せて切断してくれる」点が挙げられます。

サードパーティのターミナルエミュレータ（特にWebインターフェイスのもの）においては、画面を閉じてもホスト側とのセッションを保持したままで、毎回エミュレータ管理システムへログインしてセッションを切断する必要がある製品もあるので。[^3]

[^3]: BizRobo! では対応していない富士通や日立などの国産メインフレームのターミナルを操作したい場合にはサードパーティ製のターミナルエミュレータを通してロボットを自動化することになるので。