Master The Mainframeはいいぞ。っていうメモ

Master The Mainframeってのに参加しました。面白かったです。
ただ、色々書き散らすと文章がまとめ切れなくなってしまうので、Master The Mainframeについては自分で調べてください。
ここでは『名前を聞いてちょっと興味が出てきた人』向けにチャレンジ中思ったことなどを書き残しておきます。

Master The Mainframeはこんな人におすすめ

  • プログラミング,パズルジャンルのゲームが好きな人
    プログラミングジャンル : 具体例を挙げると、"SpaceChem"とか"Human Resorce Machine"みたいなやつですね。MTMが楽しめるなら逆説的にZachtronics製のゲームはハマると思います。
  • 新旧問わずコンピュータが好きな人
    コンピュータの動作原理とか設計思想みたいなところに興奮する人には向いていると思います。

操作を覚えながら課題を次々こなしていくのがパズルゲームみたいで楽しかったです。
一行が80文字である点など、古い計算機で用いられていたようなパンチカードの息吹を感じました。
(パンチカードの読み取り機が動くイメージが脳裏によぎる・・・動く実物を見たときは感動したなぁ・・・)

進める時のTIPS

ちゃんとメモを取る/まとまった時間で一気に進める

可能ならまとまった時間で一気に進めたほうが操作方法が定着するでしょう。こまかい操作は忘れがちなのでメモを取っておいたほうがいいと思います。

自動翻訳と日本IBMのドキュメントを活用する。

英語が堪能ならともかく、そうでないなら自動翻訳で概要を掴んでから原文を読んだほうが早く読み進められます(当たり前)
外部の掲示板の書き込みなども参考になるので、詰まったらメッセージコード(ICH114514とかIKJ364364とか行の左に出る英字3文字+数字のもの)をググりましょ。

ソースコードはローカルに保管しておく

オリジナルのコードを保管しておいて、書き換え、動作確認のたびにGitを使って管理しておくといい感じでした。
ちなみにVSCodeREXXとJCLのシンタックスハイライトプラグインがあるので、これを使うとローカルで書くのが楽になります。REXXやらJCLやらでMarketplaceを調べてみよう。
書き戻す際は一行ずつコピペです。もっと賢い方法があるような無いような・・・

どうやっても上手くいかない場合

手順どおりにやっても上手くいかない場合、メインフレーム側の問題という事もあります。実際に自分も一度メインフレーム側の問題で3日ほど手詰まりしてしまいました。同じような症状の人がSlackで質問を投げたため、解決してもらえましたが、それが無ければ詰まったままだったと思います。
どうしても解決できない問題に当たった場合はSlackでスクリーンショットを添付して聞いてみるべきだと思います。

操作についてのTIPS

logoffはちゃんとすること

logoff処理をしないで終了してしまうと、セッションが時間切れになるまでログオンしている扱いになってしまい、通常手順のlogonでは復帰できなくなってしまいます。
ただしReconnectオプションで復帰が効きます。Reconnectの左にSを入力して送信すれば切断したセッションに戻ってこれます。これを知るまで苦労しました。
デザリング環境で課題を行う場合、頻繁に切断されてしまうので、Reconnectを活用しましょう。画像の赤丸部分ですね。

f:id:sorenuts:20200102034738p:plain
logon画面

メインフレーム特有のキー

公式が推奨しているターミナルエミュレータには多分仮想のソフトウェアキーボードが実装されているはず。少なくともX3270にはついてました。

f:id:sorenuts:20200102035114p:plain
X3270の仮想キーボード

色々あるけどとりあえず自分が多用したのは以下の2つ。

Attnキー

REXXスクリプトとかがログを吐き出しすぎて止まらない時に割り込みをかけることができるというもの。
割り込みをかけてHIかHEコマンドを送信するとTSOで実行中のジョブが停止し、命令を受け付けます。
一応IBMのドキュメントを見ると、
- HI : 解釈停止
- HE : 実行停止
とあります。

使える時はいつでも、HI 即時コマンドを使うようにしてください。

とあるので、とりあえずHIで停止しておけばよさそう(よくわかんない)

Resetキー

入力不可能なフィールドでキー入力しようとするとカーソルがX印になり、操作ができない状態になることがあります。この時、RESETキーを押すことで入力不可状態を解除できます。課題を進める中でどこかで使用方法が書いてあったような気がするけど、知るまでは詰むので一応書いておきました。

エディタ画面の行追加、行消去

左の行番号にコマンドを打ち込んで送信すると行を挿入したり消去したりできます。
iコマンドが下に行を挿入。dコマンドが行を削除。
複数行にdを入力して送信すると複数行削除されるので活用しましょ。

参考になるサイト

とりあえずこの2つかと。
* 「メインフレーム・コンピューター」で遊ぼう
おそらく日本語で調べ物をすると必ず出てくるサイト。JCLやREXXの入門は役立ちます。ついでにメインフレーム自体についての様々なトリビアが得られるので一通り目を通しておくと、MTMをより楽しめる(?)と思います。
* IBM Knowledge Center
とりあえず日本語の方のURLを。わからない単語なりメッセージコードなりはここで調べましょう。サンプルコードもちょいちょいあるので、書き方がわからなかったりしたらここで調べると大変参考になると思います。