
汎用機時代のデータ通信 ~温故知新シリーズ2~
-
2022年6月16日
汎用機時代
ココネコネクトでサーバエンジニアをしているYです。 「温故知新シリーズ」第2弾として、改めて過去の技術を書いていきたいと思います。 今回は今もまだ使用されている、汎用機でのデータの扱いをまとめてみました。
クライアント・サーバシステム
クラサバと言われてました。
広義では今のwebサービスもブラウザとwebサーバーとでクライアント・サーバ関係が成り立っています。
ここでは専用のPCをクライアントと呼び、このPCを使用することでホストとの通信を行える様になっています。
処理の流れ
例えば自分が扱っていた損害保険のシステムだと以下の流れでデータが取り込まれます。
- 事故が発生
- 担当者が事故現場の情報を収集し、クライアントPCに入力
- 帰社してPCの情報をホストコンピューターに接続
- ホストがクライアントに入力されたデータを取り込み、DBに書き込む
クライアントプログラムのインストール
フロッピーディスク1による手作業でのコピーを行っていました。
クライアント200台とかキツかった。
バグとかで1日4回とかインストール作業があったことも。
(フロッピーディスク 3.5インチのものを主に使用。1.44MBの大容量を格納でき、今でも保存のアイコンに用いられていることもちらほら。ドクター中松が発明したという噂も。)
固定長データ
固定長データって何
別名「電文」と呼ばれてました。
余計なデータを送信しないように、以下のような厳密に定義された形でのデータ送信を行なっていました。
今でこそJSONやxml等が当たり前ですが、現在とは異なり、通信環境も悪く、保存するためのストレージも小さかったので、限りあるリソースを有効に使用するための当時の主流となっていました。
上記の画像をもとに、実際に送信していたデータとしては以下のような形になります。
100-10-001 やまだたろう 20220530163045 |
全角の文字の前と後には特殊な制御コードが入っており、これをシフトコードと呼んでいました。
大概使用する文字列よりも長く確保し、末尾にバッファとして数十〜数百バイトの予備枠を設けていました。これをFILLERと呼んでましたね。
文字コード
文字コードも異なっており、ASCIIではなく、EBCDIC(エビシディック)が主流でした。
前述の全角文字を表示するためのシフトコードは、EBCDICから文字コードが切り替わりますよ。という符号と考えてもらえるとわかりやすいかもしれません。
シフトコードの前側、上記の「やまだたろう」の前1バイトはシフトアウトと言います。
この文字を境に、EBCDICコードから切り替わるサインです。 逆に終わりはシフトインと言い、EBCDICコードに戻るサインです。
取り扱うデータ量増加に伴う地獄
上述の固定長データで恐ろしいのがデータの増加です。
- 新規項目の追加
上記のFILLERを利用して、末尾に新しい項目を追加します。余裕です。 - 項目の分割
以下の様に一つの項目の続きを後ろに追加するケースが結構多くありました。後から後から追加されるので、1、2、3とかになることもありました。
- 固定長データのレングス変更
最悪のパターンです。
予期しない問題が発生するケースが多かった記憶があります。
当然テストは十分にしている(つもりな)んですけどね。
2000年問題
固定長データによる、送信データ量を抑えたことで発生した日本中が盛り上がった問題です。
原因としては、以下のように年号を西暦下2桁で保持していたことによるためでした。
1999年1月1日 ⇛ 990101
これにより、2000年になった瞬間に、1900年として取り扱われ、
プログラムの誤作動が発生し得ると話題になりました。
結果としては何も起きなかった印象でした。
多分ソートとかで一部の誤作動はあったとは思いますが、
ニュースになるくらい驚異となるような問題は無かったです。
メーカー独自のプロトコル
TCP/IPは当時からあったもののその概念を元にメーカー独自でプロトコルが作られていました。
そのため、メーカー間での通信のやり取り(IBMのホストコンピュータと富士通のDBとか)はできません。
そういった理由からか、これらのシステムからの乗り換えは完全にリプレースというケースが多かったです。
まだ一部のシステムは現役ということも、リプレースのコストとの兼ね合いかもしれません。
終わりに
故きを温ね新しきを知ることで、今一度初心に返り、楽しんでプログラミングできる一助になればと思います。
cocone connectでは一緒に働く仲間を募集中です。
ご興味のある方は、こちらのリンクからぜひご応募ください。
cocone connect株式会社 採用情報
https://recruit.jobcan.jp/coconeconnect
cocone connect株式会社 公式サイト
また、ココネでも一緒に働く仲間を募集中です。
ご興味のある方は、ぜひこちらの採用特設サイトをご覧ください。