PiO 1985年8月号掲載。MZ-80Bでぱっくまん氏によって発表されたDAN GAMEの続編です。続編といっても作者が違う、当時よくある勝手に続編物の1つです。警官から逃げつつ、落ちてる□をとっていくドットイレースタイプのゲームです。動作もまあまあですので結構遊べるゲームとなってます。
TURBO2
THE チャンバラ
バクDAN GAME
STEINS;GATE
4月から新シリーズがあるみたいなので、まずはTVシリーズの最初のものを見てみました。
5pb./Nitroplusということで、CHAOS;HEADとか好きだったので、難なく視聴できました。OP曲もいとうかなこさんでいい感じでした。
話の中心は、タイムリープ・タイムトラベルですが、出だしでは触れられてなかったので、見ていくうちに小出しに演出されていて、次第にはまっていくのが自分的に心地よかったです。世界線という言葉で自分が存在している時間軸を表現していて、偶然発明したタイムマシン機能で過去にメールを送ることで、世界線をかえて世の中が変わっていくという点がなかなか良かった。これにより、幼馴染が死に至ってしまうのを、変えた世界線を苦労して戻していくという展開がいいです。過去を変えてしまうと大事になるって事を次第に理解して、なんとか戻道とするのもよかった。
ジョン・タイターネタやネットスラングも数多く出てきて、元ネタを知ってるとより楽しめるのがいい感じです。
プロセス間通信
VOSにもUNIX系システムにあるようなプロセス間での同期処理やデータ共有を行うための仕組みがあります。
1.イベント通知
ダミーのファイルを用意して、受信側プロセスへ送信側プロセスからイベントという通知を行うことができます。業務ではあまり使う機会がありませんでしたが、使い方では利用価値があります。
2.キュー
キューという特殊なファイルを使っての通信手段です。一方通行の1 Way Server Queue、データの送受信ができる2 Way Server Queue、相手がいなくても送れるメッセージキューがあります。それぞれのキューによってアクセス方法が異なるので、用途に合わせた作りこみとなります。
3.共有メモリ
物理ファイルと合わせてプロセス間でメモリ共有を可能にします。同じアドレスにデータをマップし、それぞれのプロセスでメモリI/Oを瞬時に別プロセスへ反映できます。別プロセスで同じメモリアクセスを防ぐのにロック機能を使用して排他制御を独自行う必要がありました。
4.シグナル
シグナルもAPIが用意されてます。シグナル処理をしてないプログラムは、シグナルを受信するとデフォルト動作を行います。BREAKシグナルだと、プロセス情報を表示してユーザープロンプト待ちにできます。端末がないプロセスは終了しますが。デフォルト動作が異常事態にわかりやすい情報を残すので、慎重にプログラムしないと情報を失ってしまう場合もあるので実務ではほとんど使いませんでした。
コマンドFORM
Stratus VOSの強力なユーザーインターフェイスにコマンドFORM機能があります。作成するプログラムやコマンドマクロ(いわゆるシェルスクリプトみたいなもの)に一定のコーディング規則の1つとして、プログラムにはs$parse_command、コマンドマクロには&begin_parametersという記述を加える事で、一貫したFORM機能を持つこととなり、プログラムの引数をユーザーから指定して渡すことができるようになります。
それ故、引数が不明なコマンドでも、コマンド名をタイプしてDISPLAY FORMキーを押すか、引数に-formを指定すると画面にどのような引数を受けられるか表示します。必要なデータを指定して実行するとコマンドを実行できます。コマンド名がわかっていて、引数がわからない場合に有効です。コマンドもコマンドマクロも同じように表示されるので、ユーザーにはコマンドなのかコマンドマクロなのか区別することなく同じように利用できます。コマンドFORMを開いて、実行のキャンセルもできるので、ユーザープログラムも規則に従ってプログラムしておいた方が便利になります。まあ、こんな機能不要!と割り切ってプログラミングするのもアリですが。
サブルーチンリファレンスでもs$parse_commandの説明が一番長いと思われます(記憶が若干あいまいですが)。この機能だけでも1冊のマニュアルが書けてしまうくらい多機能なのでプログラミングする方は熟知すべきサブルーチンの1つです。
LUNAR ESCAPE
FMS
Stratus VOSにはForms Management System(FMS:書式管理システム)というtelnetなどの端末上で画面制御を行う非常に強力なパッケージを持ってます。LinuxでnCursesがありますが、それに含まれるformライブラリがそれに近いと思います。Formという言葉から想像できると思いますが、画面を帳票イメージで表示を行い、入力項目の入力を促し、プログラムは1画面単位の情報を受け取って処理することができます。Windowsなどで言う、ダイアログというか1ウインド単位での画面I/Oを行う感じです。
今現在で、画面操作を行おうとすると、Webサーバを立ち上げてCGIなどでサーバへデータを受けて処理するようなシステムが主流かと思いますので、レガシーな方法となってるのかも。
画面のI/Oでも多言語対応ですので、背景項目や入力項目に漢字やいろいろな言語を使うことが可能です。まあ、それなりに使い込んでないと多言語を扱うのは設定とプログラミング技術が必要でしたけどね。漢字とカナで2言語なので、その使い分けは意味を知らないと何でこういった設定で、こういった処理が必要か理解できないと思います。業務で使うノウハウや日本語マニュアルは残してきたので使い込めてるでしょう。
このシステムが、約30年前に普通に使えたので、UNIX系OSで画面操作を行おうとしたときは、FMSを移植しないとダメかな?とか当時思いました。無いものは仕方ないので、それなりなものは提供しました。韓国へパッケージを売った時は、取り扱ってた会社が独自の画面操作プログラムを持ってたので、それが入手できていれば開発環境もだいぶ変わったのかなと当時思いました。それから時代に流されながら生きてしまったので何も残せなかったのがやや心残り。