z/OSソフトウェア製品移植のための前提知識(一般論)
最初にカテゴリーを作ってから随分と日が空いてしまったが、z/OS(MVS)オペレーティング・システム用ソフトウェア製品を、富士通のMSPあるいは日立製作所のVOS3に移植するための、知識、手法、環境その他、について、まとめていってみたい。
ポーティングやローカライズのやり方は千差万別、いろんなやり方があり、このサイトで述べることが全てではない。ただ記載したものは、すべて私が、これまでの実戦の中でやってきたこと、得た知識、経験であります。なので紹介できるのは、アセンブラー言語で開発されたMVS用システムソフトウェア製品を、MSPとVOS3で動かすためにどうしてきたか、と言うことに限定されます。
今日では、MSPやVOS3への移植は日本の支店や代理店で直接行うことは少なく、日本国内固有のOSであっても開発元の本国で行われることが多い、と言う印象を持っている。このカテゴリーで紹介することが、みなさんの実践に役立つことはほとんどないかも知れないが、メインフレームOSやメインフレーム用ソフトウェアに関わらず、ポーティングやローカライズのヒントやアドバイスになれば幸いである。
一般論
MSPとVOS3は、元々はIBM社のMVSオペレーティング・システムの互換OSとして作られた。メッセージ、ABENDコードやAPIの名前から復帰コードに至るまで、見た目も中身もそっくりである。OSのメッセージもIEAがJAA、IECがJBB、などprefixは変えてあっても、中身は一緒と言うものも少なくない。当時から変わっていないものは今でもそうである。
80年代前半にMVS/XAが出る前の、24ビット版OSのMVS/SPまでは、よほどマニアックなソフトでない限り、システム系PPであっても、ポーティングは容易であった。MACLIBとMODGENだけ取り替え、再アセンブルしてOK、あるいはMVS版のロードモジュールをそのまま動かした、と言うものも少なくなかった。
MVS/XA以降は、だんだんと面倒になってくる。I/Oに関してのメカニズムは大きく変わったが、オフライン・デバイスに直接アクセスするようなソフトでない限り、チャネルプログラムを使うソフトであっても、API(EXCP)はまだ同じであった。一番の違いは31ビット・プログラミングであった。特にMSPは、AEオプションと言う独自の31ビット・サポートを追加し、PSWのアドレスモード・インディケーターを、MVS/XAと異なる位置に持ってきたり、GETMAINなど仮想記憶領域に関するサービスのAPIに互換を持たせなかったので、単なる再アセンブルではもう済まなくなってきた。ただ31ビット・プログラミングに関してはMSP/EXになってから、MVS/XA互換となり、APIなどに富士通独自のアドレス拡張オプションを使わなくても済むようになった。
MVS/ESAが使用するS/390(ESA)アーキテクチャーは、CPUなどハードウェアの互換はあるが、データ空間、ハイパー空間の利用に関しては注意が必要となる。プログラミング上は基本的に互換があるが、MSPもVOS3も標準では使えない環境になっている。
MSPではAPIは公開されているが、MAFと呼ばれる追加のハードウェア機構が必要になる。富士通の製品は標準で使わないので、データ空間、ハイパー空間は事実上使えない。データ空間とハイパー空間を使うソフトを導入するためには、ユーザーに追加のハードウェアを購入してもらわなければならない。またMAFがなければアクセスレジスターや、リンケージ・スタックも使用できない。これらを前提にコーディングされているソフトウェアは書き換えが必要である。
VOS3はMSPと違い追加のハードウェアは不要である。ただしCPUをM/ASAモードに設定する必要がある。現在ではM/ESA以前のM/EAやM/EXモードになっていることはまずないので、これはそれほど気にしなくてよいであろう。なおクロスメモリー・サービスを使用するには、IPLパラメーターJAASYSnnに、追加のパラメーターを設定する必要がある。マニュアルに載っていない非公開パラメーターなので、ここに記載できない。顧客からメーカーに問い合わせてもらい、追加する必要がある。VOS3はMSPよりはるかにハードルが低いが、それでもMVSのように最初から標準で使えるようになっていない。
OSの機能、その構造やAPIなど、OSとしての互換性は、このMVS/ESAまでに実装された部分に関して持っていると考えてよい。
OS/390以降のMVSとMSP/VOS3では、OSの構造やAPIのみならず、機能的にも互換はなくなってきた。
(続く)