魔王の憂鬱 -10ページ目

魔王の憂鬱

情報通信っぽいことを、分かりやすく述べているつもりです。

あー、ノートも参考書も会社に置いてきてしまった;

今日は、(お酒の入っている)私の記憶を頼りに、

メインフレームのお話をいたしましょう。



今日も概論です。



時を遡る事1960年代の話。

当時のコンピュータと言えば、特定の機能・用途にしか

使うことのできないものでした。


ほら、昔って、ボタンが2つしかなくて、ピコピコ電子音のする

携帯ゲームとかあったじゃないですか。

ゲームソフト1本だけに対応するゲーム機。

そんなイメージを持っていただければ結構です。


かつ、一つのフロアを占拠しかねないほどの大きさを有しており、

値段も数千万したりします。規模により、桁が±1されますが。


そのため、当時は研究所や企業などが所有しておりました。



そんなコンピュータに、プログラムを組みかえることで

様々な用途に使用できるコンピュータが登場したのです。


この、「様々な用途」というのが、「"汎用"コンピュータ」と呼ばれる所以です。

この頃は、汎用的なことでさえ、画期的だったんですね。

ゲームソフトを入れ替えるだけで様々なゲームのできる、

ハードゲームというイメージを持つと分かりやすいかもです。



メインフレームでは、主に、大量のデータを編集したり、ソートしたり、

出力したりしています。

処理はオンライン処理とバッチ処理の2種類があります。


オンライン処理は、人間が画面を見ながら操作する処理です。

さらに手続き型と会話型に分かれるのですが・・今回は、まぁいいや。


バッチ処理というのは、特定の時間を設定しておいて、

自動的に実行してくれる処理のことです。



・・と言われておりますが、実はそうではありません。

バッチ処理も、すぐ実行するように設定すれば、処理の流れは

オンライン処理と変わらないのですね。


何が違うのかと言うと、バッチ処理では、大量のデータを

処理するという特徴があります。

日時処理ですとか、月次処理ですとか、

バックアップを取ったり、一括処理をしたり、

大量のデータに対して処理する場合にバッチ処理が使われています。



メインフレームでは、大量のデータを取り扱うのですが、

企業では今でも使われているくらいに、その信頼性は高いそうです。


1つのメインフレームに対して、複数のPCを接続できます。

本来は1対1で通信を行っているのですが、

メインフレームは、各PCに対して、極短い時間毎にローテーションして

接続を切り替えることにより、各PCにとっては、あたかも自分のPCが

ずっと通信を行っているかのように処理をすることができます。


出力先がPCであれば、対応するPC画面にてデータが出力され、

出力先がプリンターであれば、対応するプリンターにデータが出力されます。




・・とまぁ、大まかな部分で思いついたことを記述してみました。

分かりやすくというか、簡単な言葉で表すのも難しいですね;

文章にまとまりがないのも、お酒のせいだということで。


次回は、DBやファイルの話でもできたらいいなと思いますが、

今回の内容の補足をするかもです。


さんざん引っ張っておいてすみませんが、

ちょっと面白い事が分かったので、先にこちらをご紹介させてもらいます。



ゾーン10進数ってお分かりでしょうか?



コンピュータでの10進数の表現方法の一つなのですが、

これは、各桁の数字(0~9)を1バイト(8ビット)で表したものです。


ちなみに2進数表記で0~9は・・

1 → 0001

2 → 0010

3 → 0011

4 → 0100

5 → 0101

6 → 0110

7 → 0111

8 → 1000

9 → 1001

0 → 0000

となります。


・・あれ?4ビットで済んじゃいました;

1バイトは8ビットですので、これだと4ビット余っちゃいますよね;


実は、ゾーン10進数では、8ビットのうち、先頭4ビットを「1111」として、

続く4ビットで数値を表しているのですね。



例: 12

→ 11110001 11110010



さてここで問題です。「-12」は、どうやって表しましょうか?

直接的な答えは分からないかと思いますが、

方法だけでも考えてみてください。頭の体操です。













では答え。


符号をつけるときは、最下位桁の先頭4ビットで指定するのです。


例: +12

→ 11110001 11000010


例: -12

→ 11110001 11010010


この例でもお分かりの通り、

・「+」 → 1100

・「-」 → 1101

と記述します。


これがゾーン10進数です。



さて、パック10進数の話です。

パック10進数は、COBOLなんかで指定する事ができる属性でして、

これは、1バイトに2桁分の数値情報を記録させることができるというものです。


ちなみにCOBOLでは、これを「COMP-3」で指定します。これがパック10進数の指定。

「COMP」という指定もありますが、気になった方は調べてみましょう。



さぁ!どうやって1バイトに2桁分の数値情報を記録しましょうか!

勘のいい方でしたら、ピンときたのではないでしょうか?






はい、答え。

先ほどのゾーン10進数で登場しました、0~9を示す4ビットの情報、

あれを2つつなげれば・・ほら、8ビットで2桁分の数値情報のできあがりです。


例: 12

→ 00010010


このパック10進数は、符号の情報を必ず記述しなければなりません。

記述する位置は、最下位桁の直後です。


例: -123

→ 00010010 00111101


パック10進数も、

・「+」 → 1100

・「-」 → 1101

というのは同じです。



では、ここで最後の問題です。

パック10進数は、8ビット(1バイト)単位で扱われるのですが、

「+12」や「-12」の場合、合計12ビットとなってしまいますよね?

これを、どうやって1バイト単位として記述しましょうか?


これは私も疑問に思ったのですが、

参考書を見て「ナルホドね!」と、ちょっとテンションが上がってしまいました。






では答え。

「+12」 → 「+012」

「-12」 → 「-012」

と、解釈しちゃうのです。


例: +12 → +012

→ 00000001 00101100


例: -12 → -012

→ 00000001 00101101


どうでしょう?「ナルホドね!」と思いませんか?

いや、少なくとも私はそう思ったのですが・・。




さて、

このパック10進数というのは、

ゾーン10進数に比べてほぼ半分のバイト数で

数値を記録できるという利点があります。

当時は、何かの金額など、桁数の多い(10桁前後)項目に

指定される傾向があったようですね。


今は、そこまで気にする必要はないでしょうが。



参考文献:

はじめてのEASYTRIEVEPLUS

株式会社パンソフィック

結局月曜日は休みましたが、復活しました。

どうも胃腸風邪だったらしく、食中毒ではなかったみたいですね。



さて、

現在、メインフレームで使われているプログラムについて

調査・解析する業務を行っているのですが、


いかんせん、メインフレームというのはむかーしむかしのコンピュータであり、

現在、資料というものがほとんどないという現状です。

少ないですが、サイトや参考書など、あることはあります。

質問サイト(?)で、よく質問されてもいます。

あとは・・マニュアルを見るしかありません。


私も調べるのに苦労しているのですが、

せっかく学んだ事柄ですし、

今更学ぶ方はごとんどいないかもしれませんが、

必要となった方には本当に役立つかと思いますので、

しばらくはメインフレームのお話でもしようかと思います。


所詮は勉強したての戯言ですので、

完全に本当の事であるという自信はありません。

参考文献に載せておきますサイトや参考書を

見るのが一番かもしれませんよ(オイオイ)。





参考文献:

「メインフレーム・コンピュータ」で遊ぼう

http://www.arteceed.net/


メインフレーム実戦ハンドブック 神居 俊哉 著  高尾 司 監修  RIC