z/OSソフトウェア製品移植のための前提知識(OS機能の互換)
OS機能の互換
コンパチOSであるので、OSの内部構造、機能、API、ユーザー・インタフェース(コンソール・オペレーター、TSOユーザー)は同じ(であった)と考えてよい。
過去形にしたのは理由がある。1つ1つ細かくあげつらうことはここではしないが、MSPとVOS3を互換OSと言っていいのは、概ねMVS/SP第3版(MVS/ESA)までであろう。APIなどの互換はほぼこのレベルまでで、MVS/ESAの第4版以降で追加されたものには、一部を除き追従されていない。ただし同等の機能が全く別のAPIで実装されているものもある。さらに新しい、OS/390、z/OSで追加されたものはMVS専用と考えるのが妥当である。同じものがあれば、それはラッキーであった、と考える方がよい。互換のあるAPI、ないAPIなどの具体的なものは、改めて解説したい。
このことは、ESA第4版以降のMVSとMSP/VOS3の機能面の開きが徐々に増えていったことと関連している。OSとして互換機能を実装しなかったり、互換ではない形で実装したのだから、APIにもそれが影響しているのである。余談だが、ESA第4版は1993年、OS/390が1996年頃の製品であるが、この時代は、「メインフレームなんぞもう古い、置き場所も金も食う、これからはUnixだ、インターネットだ、ダウンサイジングだ」と、今で言うIT業界上げて、メインフレームを止めよう、と言い始めた頃であった。
僕がやっていたプロダクトも、この頃からMVSの新しいAPIなどを使うようになってきて、どうしても無理なものはMSPやVOS3への実装はせずに、ばっさり機能を落としたりするものも増えていったと記憶しています。MVSの新しいAPIで特に増えたのは、同じ事をやるのに、昔はOSの制御表をたどったり、制御表を自分で作って、OSのモジュールを直接呼び出していたようなものが、マクロ命令などで提供されるようになったもの。当然MVSでのプログラミングは楽になるが、MSPなどではそう言う部分を昔からの古典的な方法に戻すことになる。
IBMがすごいところは、OSのエンハンスによって、今までは裸同然で見せていたものを、鍵の掛かるところに移したり、構造を変えたり、簡単に探せなくなったりした部分を、隠すのではなく、APIを提供することによって、ユーザーやベンダーの既存のプログラムが困らないようにしていたこと。元々APIでなかったものでも、多くのプログラムが処理のために使っていたり、OSと同じような制御をやっていたりする部分は、新たなAPIとして追加されて行きました。
BCP(基本部分)
OS/390やz/OSでもBCPの基本部分は変わっていないので、結果としてMSPもVOS3も互換が保たれている。まぁここだけはこれからも同じであろう。
JES2
JES2互換のJESが、MSPではJES、VOS3ではJSS3となる。機能面、操作面には今でも互換が残るが、JESの機能を使ったり、JES関連のリソースにアクセスしてサービスを提供するソフトは、かなり苦労することになる。SAPIやFSSなどサブシステム機能のサポートもほとんどない。何よりインターナルは一切公開されていないので、メーカーに情報の開示を求めることになる。SDSFがやってるようなことをMSPやVOS3でやるのはかなり面倒。もっともJES2と違って、リリースアップの度に中が変わることはないので、一度作れば長持ちする。僕の経験では、大きな対応はJOB番号が5桁になったときに1回やったぐらい。
DFSMS
MSPもVOS3も、MVSにおける昔のDFP相当と言える。QSAM、BSAM、BPAMなどは24ビットアクセスに関しては互換である。31ビットアクセスに関してはVOS3は可能だがMVSとはAPIに互換はない。MSPは31ビットアクセスができない。VSAMも基本は互換を持っている。ただしカタログに関してはSVC26など古典的なインタフェースには互換があるが、内部構造に関しては似てはいるが互換ではない、と考える方が無難。PDSEに相当するものはなく、代わりにMSPはGEM、VOS3はLIMEと言う独自のライブラリ機能がある。もちろん三者の間に互換はない。
CCWには互換がある、と言うかアーキテクチャーは同じなので、CCWも同じである。DASDやTAPEなどの基本的なアクセスに関しては、一部を除けば同様のCCWでアクセスできると考えてよい。ただしIOSのインタフェースは同じではない。これも公開されていないので、メーカーに問い合わせることになる。なおEXCPに関しては互換であるが、format1CCWはサポートされていない。
TSO/ISPF
TSOに関しては互換と考えてよいが、APIは少ない。現在のMVSには豊富なAPIが提供されているが、MSP/VOS3ではTGET/TPUT、GETLINE/PUTLINEなど昔からある基本的なものしか用意されていないと考えればよい。コマンドプロセッサーのインタフェースなどは同じである。なお、端末のデータストリームが異なるので、FULLSCRモードのI/Oではデータの互換はない。
ISPF/DMとMSPのPFDは似ているが、MVSの頃の昔のISPFレベルの互換である。今のISPFで作成したダイアログはパネルも含め、そのままでは使えない、と考えるのが無難。ISPFのどの機能を使っているかにもよるが、PFDにない機能やAPIの部分は削って作り直すことになる。
VOS3はASPENになるが、ISPF/DMに相当する部分が公開されていない。必要ならメーカーに情報開示を要求するか、FULLSCRで画面をデザインするかとなる。
VTAM
昔はMVSとMSP/VOS3をVTAMで相互に繋げ、クロスドメインを構成できるほど互換があった。しかし現在では直接繋げることはできない。APIに関しては互換性が高く、こちらも一部を除けば、マクロ命令レベルで互換がある。ただしLU6.2、APPCはIBM独自のものなので、MSP/VOS3では使えない。LU0、LU1、LU2、LU3との通信は可能である。VOS3ではVTAMに代わり、XNFと言う独自のネットワーク・サービスが主流なので、VTAMプログラムを動かすためにはVTAMを、別途追加購入してもらわなければならない。
TCP/IP
APIにはまったく互換がない。表記の仕方が違う、と言うレベルではなく全くの別物である。またMSPの場合、公開されているAPIでは、一度に数十?数百ものクライアントの通信を行うサーバーソフトなどを作るには制約が多いので、別のAPIを開示してもらった方がよい。
しかしSNAと違ってプロトコルは同じなので、TCP/IPであれば、MVS、MSP、VOS3を相互に接続し、プログラム間で通信し合うことはできる。
DB/DC
IMS、CICS、DB2に関しては一切の互換はないものと考える。実際にそうだから。IMSと富士通のAIMは構造的に似ているが、プログラミング互換はないので、移植の必要なプログラムはAIMに合わせて作り直しとなる。
COBOL/PL1
言語としては共通なので、コンパイラーに依存したコーディングを除けば、ソースレベルで互換がある。しかし実行プログラムがどこまで動くかは、使用しているOSのサービスに影響される。データセットやVSAMをアクセスするぐらいのバッチプログラムであれば再コンパイルか少しの修正で移植できるだろうが、データベースのアクセスをしていたり、オンライン・プログラムであれば、移植先のDB/DCに合わせて書き直しとなる。
こう並べてみると、互換があるのはOSの基本部分とTSOのコマンドライン・インタフェースぐらいで、全く別物ではないにしろ、互換OSと呼ぶにはだいぶ無理がでているように思える。OSを取り巻く環境や製品類も含めると別物になるけど、純粋にOSの部分だけで言えば、やはり互換OSであることに違いはないか...
(続く)