DockerでメインフレームOSを動かす

随分と前に[メインフレームOSをCentOS化で動かす](https://qiita.com/madilloar/items/7966d6191924e13483ec)を投稿しましたが、手順が長くてめんどくさいです。docker-composeで起動できるようにしたので参考まで。

wsl2で以下を試してます。まずは、このプロジェクトを``git clone``します。

```
git clone https://github.com/madilloar/PRJ_turnkey4.git
```

お詫び：
gitリポジトリの``docker_entrypoint.sh``で指定しているFILE変数にバグがありました。リポジトリは修正済です。
このファイル名が違っていたため、起動の都度、メインフレームOSが初期状態に戻ってしまっていました。

```
誤:FILE="/opt/turnkey4/conf/itk4-.cnf"
正:FILE="/opt/turnkey4/conf/tk4-.cnf"
```

## ホストOSでc3270エミュレータをインストールする
```
sudo apt-get install c3270
```

## ホストOSのでHOMEキーとENDキーを使えるようにxterm_myを登録する
```
sudo tic xterm_my.src
```

## ビルド
```
docker-compose build
```

## mvs 起動
```
docker-compose up -d
```

## mvsの実行状況をlogで確認
```
docker exec -it prj_turnkey4_turnkey4_1 bash -c 'tail -f /opt/turnkey4/log/3033.log'
```

これがログに出たら起動完了。
```
HHC01603I *
HHC01603I *                           ************   ****  *****          ||
HHC01603I *                           **   **   **    **    **           |||
HHC01603I *                           **   **   **    **   **           ||||
HHC01603I *                                **         **  **           || ||
HHC01603I *        |l      _,,,---,,_      **         ** **           ||  ||
HHC01603I * ZZZzz /,'.-'`'    -.  ;-;;,    **         ****           ||   ||
HHC01603I *      |,4-  ) )-,_. ,( (  ''-'  **         *****         ||    ||
HHC01603I *     '---''(_/--'  `-')_)       **         **  **       ||     ||    ||||||||||
HHC01603I *                                **         **   **      |||||||||||  Update 08
HHC01603I *       The MVS 3.8j             **         **    **            ||
HHC01603I *     Tur(n)key System           **         **     **           ||
HHC01603I *                              ******      ****     ***       ||||||
HHC01603I *
HHC01603I *            TK3 created by Volker Bandke       vbandke@bsp-gmbh.com
HHC01603I *            TK4- update by Juergen Winkelmann  winkelmann@id.ethz.ch
HHC01603I *                     see TK4-.CREDITS for complete credits
HHC01603I *
HHC02264I Script 5: file scripts/tk4-.rc processing ended
```

## TSOユーザ起動
起動を確認したら、TSOユーザでLOGONします。

次のコマンドを打つと、
```
./tso_user.sh
```

下記のように表示されます。

```
Terminal   CUU0C1                                                 Date  11.09.22
                                                                  Time  09:12:13

                           ************   ****  *****          ||
                           **   **   **    **    **           |||
                           **   **   **    **   **           ||||
                                **         **  **           || ||
        |l      _,,,---,,_      **         ** **           ||  ||
 ZZZzz /,'.-'`'    -.  ;-;;,    **         ****           ||   ||
      |,4-  ) )-,_. ,( (  ''-'  **         *****         ||    ||
     '---''(_/--'  `-')_)       **         **  **       ||     ||    ||||||||||
                                **         **   **      |||||||||||
       The MVS 3.8j             **         **    **            ||
     Tur(n)key System           **         **     **           ||
                              ******      ****     ***       ||||||

            TK3 created by Volker Bandke       vbandke@bsp-gmbh.com
            TK4- update by Juergen Winkelmann  winkelmann@id.ethz.ch
                     see TK4-.CREDITS for complete credits

```


``Logon ===>``プロンプトのところで``HERC01``と入力します。

``Logon ===>``プロンプトが表示されていないときは``Enter``キーを押下します。
すると、``INPUT NOT RECOGNIZED``と画面に表示されまるので、``HERC01``と入力し、``Enter``キーを押下します。

`` ENTER CURRENT PASSWORD FOR HERC01-``とパスワード要求が来ますので、``CUL8TR``と入力し、``Enter``キーを押下します。

すると、次のように表示されますので、

```
 ENTER CURRENT PASSWORD FOR HERC01-

 HERC01 LOGON IN PROGRESS AT 09:15:57 ON SEPTEMBER 11, 2022
 NO BROADCAST MESSAGES
 *****************************************************************************
 *                                                                           *
 *                                                                           *
 *                    Welcome to the TSO system on TK4-                      *
 *                    =================================                      *
 *                                                                           *
 *                                                                           *
 *****************************************************************************
 ***
```

``Enter``キーを押下します。すると、次のように表示されますので、

```
                |l      _,,,---,,_
          ZZZzz /,`.-'`'    -.  ;-;;,
               |,4-  ) )-,_. ,( (  `'-'
              '---''(_/--'  :-')_)

 "Little else matters than to write good code."
 - Karl Lehenbauer

 Another bit of wisdom from the fortune cookie jar

 ***
```

``Enter``キーを押下します。すると、次のように表示されたら、OKです。

```
 Terminal  CUU0C1                                                 Date  11.09.22
 System    TK4-                                                   Time  09:18:16
 TSO User  HERC01

 Option ===> 1

               The MVS 3.8j Tur(n)key System
        TK4- Version 1.00 Update 08 -- MVS PUT 8505

                      TSO Applications


      1  RFE        "SPF like" productivity tool
      2  RPF        "SPF like" productivity tool
      3  IM         IMON/370 system monitor
      4  QUEUE      spool browser
      5  HELP       general TSO help
      6  UTILS      information on utilities and commands available
      7  TERMTEST   verify 3270 terminal capabilities

                    Enter X to Terminate

  PF3=Terminate
```

あらかじめ用意されているTSOユーザ。

```
HERC01 CUL8TR
HERC02 CUL8TR
```

## mvs 停止
F3キーをどんどん押していくと、``READY``プロンプトにします。

```
        ******************************************************
        *** TSO Applications Menu terminated.              ***
        *** Enter TSOAPPLS at the READY prompt to restart. ***
        ******************************************************
 READY
```

ここで、``shutdown``と入力し、``Enter``キーを押下します。

```
 READY
shutdown
 JOB SHUTDOWN(JOB00001) SUBMITTED
 READY
```

``mvsの実行状況をlogで確認``でログを表示しているとわかりますが、次のログが最後に表示されて終了です。

```
09.23.40           $HASP085 JES2 TERMINATION COMPLETE
```

## 参考URL
ユーザマニュアル:
https://wotho.ethz.ch/tk4-/MVS_TK4-_v1.00_Users_Manual.pdf

## TeraTermでファンクションキーが使えるようにする
``TeraTerm_VT220.CNF``ファイルを``ttermpro.exe``と同じフォルダに置きます。
そして、``ttermpro.exe``の起動引数に``/K=TeraTerm_VT220.CNF``を指定します。

## Windowsターミナルでマウスが使える
Windowsターミナルで下図の赤線部分にマウスカーソルを移動し、左クリックするとメニュー操作できるのを発見。
![key.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76786/0a838b9c-45e7-3018-5b4c-c71b7e77f4c7.png)
例えば、「File」をクリックすると次のようになる。
![key2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76786/51944dc9-f2fe-96b1-a3dd-f52bb8cf49b3.png)