メインフレームを見てみよう~前編~
作者の勤める会社でも、そろそろ「メインフレームをやめよう」という動きが活発になってきました。えーと、2年ぶり、3回目くらいかな?その前は確か5、6年前だったと思います。
メインフレームってそもそも何よ?と言う人にわかりやすく言うと、でかいコンピュータ。最近はかなりコンパクトになってきてますけど、それでも結構な大きさで、業務用冷蔵庫みたいなのがでん、と偉そうに置かれている姿が特徴と言えば特徴。十数年前の機種だと、それこそ古いアニメや映画に出ているような、クルクル回る丸い機械がついていたりする、ちょっとワクワクしちゃうようなコンピュータです。
なお、暴走しても火花を吹いたりはしません。ロマン成分が足りませんね。
このメインフレーム、一般向けに売ってはならないという制限などはないのですが、その大きさ故に設置場所も選ぶし、結構電力消費も大きいので専用電源が必要。オマケにその使い勝手もPCやスマホとは全く違うので、仮に一般家庭で購入しても使い道が……です。あと、とてもお高い。構成を色々カスタマイズ出来るので一概には言えないのですが、四桁万円が当たり前。個人が買うとかあり得ないレベルの金額です。
さて、このメインフレームが一体どんな仕組みで動いていて、どうやって操作するのか。ちょっとばかり犯罪チックな感じで紹介します。
※本稿で書かれている内容は実際にやろうとしてもとても出来るものではありません。あくまでも「こう言う感じでプログラムやデータが管理されている」「こんな操作をする」という紹介です。
さて、とりあえずどこかの企業で業務システムが稼働しているメインフレームから得意先のデータと取り引きデータを取り出して持ち帰る、と言うことをやってみようかと思います。
まず、何をするべきかというと……そのメインフレームを操作出来る場所への侵入。
は?と言われそうですが、一般的にメインフレームはインターネットにつながっていたとしても、バッファオーバーランで任意のコードを実行、と言うのがなかなか難しいのです。何しろ、CPUが独自開発されている物を使っていたりするので、任意のコードというのがわからないので。
と言うことで、あらかじめ自宅にメインフレームを買い込んで解析してどうにかすると言う現実味の薄い方法――CPUの命令などが公開されていないのです――か、社員証を盗んだり、ビルの鍵を複製したりと言った手段でどうにか侵入するしかありません。とりあえずここでは物理的に忍び込んで、と言う手段をとります。ここまでで既にハードルが高くなってる気がしますが、気にしたら負けです。
さて、目の前にはメインフレームの本体と、それを操作するメインコンソール。よし、データを盗み出してやろうとメインコンソールを操作しようとして……詰む。
このメインコンソール――コンピュータの操作をするためのキーボードとディスプレイの組み合わせ――というのは、作成済みのプログラム――正確には後述する作成済みのジョブ――の実行指示と状況確認、本体の周辺機器を操作するコマンドの実行……くらいしか出来なくて、データを外部媒体にコピーするとか言った具体的な操作は一切受け付けてくれません。もちろん、あらかじめデータを取り出す処理を作っておけば、それを実行して持ち出すことは出来るのですが、「あらかじめ作っておいた処理」を持ち込んでメインフレーム内に入れる操作もできないという……本当に大雑把に操作するだけの機能しかない。言うなれば、あらかじめ登録してある番号以外へ電話出来ない子供向け携帯みたいなものです。と言うことで、頑張って侵入したのに無駄骨でした。
仕方が無いので、データを取り出す処理を作って持ち込むことにする?事前に同じ機種、同じOSで同じバージョンのメインフレームを自宅に用意しないと作れませんが。あと、持ち込んでどうやって入れるかという問題が残りますけど。
こうなったらもう、夜半過ぎに侵入して、朝、社員が出社するまでの間にデータを取り出す処理をその場で作って持ち帰ることにしましょうか。
ハードルがぐんぐん上がっているのは目をつむりましょう。
では、どうやればデータを取り出す処理を作れるのかというと、接続端末を用意しなければなりませんが、さすがにハードとしての接続端末はもう販売されていません。仮にどこかで中古を入手しても、大抵の場合「TCP/IP?知らない子ですね」という機械で、モデム直結以外認めないとかそう言うのしかありません。直結させる場合、メインフレームの本体裏側に繋いで、とかそう言う感じになるのですが、繋いだ線を認識させるには……システムの設定情報の定義ファイルを書き換えて更新処理を実行しなければなりません。どうやって定義ファイルを書き換えるかというと、接続端末から操作しなければなりませんが……よし詰んだ。
仕方が無いので、端末ソフトウェア――これは普通のPCで使えます――経由で接続することにしましょうか。これがまた一般向けの販売はされていないのですけどね。そりゃそうです。メインフレームに接続する以外の使い道がないのですから、メインフレームを導入した企業以外に売る意味がないわけですから。
では、どうにかそれを用意したとして、気軽に接続出来るかというと……これがまた難しい。メインフレームの機種――だいたいメーカー独自です――によるのですが、ネットワーク番号と端末番号をメインフレーム側に登録しないと使えない。
ネットワーク番号というのは……物理的な線の番号。言うなればLANケーブルを差し込む口の番号。端末番号というのはそこに割り振る番号で、1番、2番……と割り振られます。つまり、ネットワーク番号2番の端末番号5番は端末番号100番、と言う風にメインフレームに登録されているのに合わせて……その登録内容を確認するには端末として接続して設定情報を……結局、タマゴとニワトリ、どちらが先かという話になりました。
既にこの時点で心が折れそうになってきました。とりあえず……ターゲット企業のシステム部門に侵入し、諸々のセキュリティを突破して社員のPCを直接操作する方が早そうです。
と言うことで、どうにか侵入し、PCの操作にかかります。PC自身のログとかは残さないように色々と注意しながら操作出来る、としましょうか。この時点で相当に高度な操作になってますが、気にしてはいけません。目的のためには手段を選んでいられないのです。
では、まずは得意先データを探しましょう。
どこにあるかというと……わかりません。
メインフレームで動くシステムはほとんどの場合、その企業独自システムとなっているので、データファイル名などもその企業――もしくはその開発を行った企業――が独自に決めているのです。つまり、
「得意先データだからTOKUISAKI」
なんてことは……無い、かな?
まあ、仮にTOKUISAKIだったとしても、そのデータがどこにあるかをどうやって調べるか、です。
どういうこと?と思った方へ。
メインフレームの「ファイル」は「格納しているディスク装置」を指定しなければならないという仕様です。PCっぽく言うと、CドライブにあるのかDドライブにあるのか……と言う概念に近いですね。ただし、ディスク装置名は……任意です。A001なんて名前がついているかも知れませんし、安易に「ディスクだからDで始めよう」となってるかも知れません。
ちなみにどんなディスク装置がついているかはメインコンソールでコマンドを実行すればわかります。改めてメインコンソールのところへ向かいましょう。
え?コマンドがわからない?
知らんがな。
メーカーごとにバラバラで統一されてるわけではないんだから、マニュアルでも見て下さい、というのが回答です。ちなみにこのマニュアルって小さい構成のメインフレームでも50冊くらいあるのでそこから探すだけでもひと苦労でしょう。もちろん最近はマニュアルも電子化されていますが、時々ただ単に紙のマニュアルをスキャンしただけというのもあって、テキスト検索機能がないものもあります。何の役にも立ちません。
さて、ディスク装置についた名前がわかったら……次は装置タイプを確認せねばなりません。「は?」と思った方もいるでしょうが、PCに置き換えるとこんな感じです。
Cドライブは512GBのSSD、Dドライブは4TBのHDD……
ディスク装置ごとに装置タイプも一緒に把握しておかないと、ファイル名の一覧も取得出来ません。頑張って調べましょう……メインコンソールでコマンド実行したときに表示されます。キチンとメモしておきましょうね。ちなみに、作者の知ってるメインフレームだとディスクが100本くらいつながっているのを見たことがありますので、メモするだけでも相当時間がかかりそうですね。
メインコンソールの操作画面をコピーしたりテキスト出力したり出来ないかって?
出来ます。
出力がフロッピーディスクだったりしますけど。
さて、ディスク装置がわかったので早速その中身を!
ここまで来れば想像がつくと思いますが、ディスク内のファイル一覧を見るコマンドとかそう言うのはありません。所定の形式と文法で命令を記述したJCLソースなるファイルを作り、ジョブとして実行しなければなりません。
問い:ジョブって何?
答え:メインフレームコンピュータで処理を実行する場合、ジョブと呼ばれる単位でタスクや処理をまとめます。ジョブは、特定の作業やプログラムの実行を指示する一連の手順や命令の集合でJCLという独自言語を使用して記述されます。
仕方ないのでジョブを作って実行することにします。
続きは山の日に!