ZOAU(ZOA Utilities)(*1)は、z/OSの自動操作をサポートするための各種のランタイム(プログラミング・インターフェース)です。PythonやJavaからAPIを呼び出すかあるいはUSSシェルからコマンドとして実行することで、データセットやスプール内SYSOUTにアクセスしたりMVSコマンドを発行したりすることができます。例えば、USSシェルでは他のUnix(Linux)同様にlsコマンドでファイル一覧を表示することができますが、dlsというZOAUコマンドを実行することでMVSデータセット一覧を表示することができるようになります。jlsコマンドはデータセットではなくジョブの一覧リストを表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/z/z99999 > ls HelloWLD.class data2.ascii.txt hello.py zoau_test1.py HelloWLD.java demo.py ls zoau_test2.py TEST1.txt dls test0.py TEST2.txt hello.class test1.py data1.txt hello.java test2.py /z/z99999 > dls -l 'z99999.**' Z99999.ASM PO FB 80 VPWRKA Z99999.CLIST PO FB 80 VPWRKE Z99999.COBOL PO FB 80 VPWRKC Z99999.DA05.ASM PO FB 80 VPWRKN Z99999.DA05.LANGX PO VB 1562 VPWRKC Z99999.DA05.LOAD PO U 0 VPWRKG Z99999.INPUT PO FB 80 VPWRKG Z99999.JCL PO FB 80 VPWRKJ Z99999.LOAD PO U 0 VPWRKM Z99999.LRECL16 PO FB 16 MTM004 Z99999.OUTPUT PO FB 80 VPWRKH Z99999.PDS PO FB 80 VPWRKK Z99999.S0W1.ISPF.ISPPROF PO FB 80 VPWRKB Z99999.SOURCE PO FB 80 VPWRKI Z99999.SYSOUT PO VB 260 VPWRKC Z99999.TERSE PO FB 1024 VPWRKC Z99999.WORK PO FB 80 VPWRKL /z/z99999 > jls /z99999/* Z99999 Z99999 TSU03101 AC ? Z99999 Z99999P JOB03011 CC 0000 Z99999 Z99999R JOB03014 CC 0000 Z99999 Z99999P JOB03013 CC 0000 ISF767I Request completed. /z/z99999 > |
MVSの時代からz/OSの基本的な使い方として、ISPFとSDSFもしくはJCLと各種ユーティリティーの実行、コンソールからのコマンド入力が行われて来ました。しかしながら、3270エミュレーターの利用やJCLによるプログラムの実行手順は、オープン系システムでコンピューター・システムの使い方を習得したエンジニアにとっては異質な世界で大きなギャップがあります。ZOAUはそのギャップを埋めるべく、3270エミュレーターとJCLに替わってUSSシェル・コマンドによってあるいはPythonやJavaなどのオープン系システムにおいてポピュラーな言語のプログラムからMVSリソースにアクセスするサービスを提供します。
USSからMVSバッチ・ジョブを介してMVSにアクセスする方法もよく知られていますが、バッチ・ジョブは非同期に実行されるため、USS側の後続処理との同期合わせを行う様々な工夫が利用者によってなされました。しかし、同期型のMVSアクセス・サービスであるZOAUを利用すれば、同期合わせの工夫も必要無くより容易にMVSリソース(*2)を直接利用できます。
これまではz/OSシステムに携わるなら、3270エミュレーターによるTSOコマンドやISPFやSDSFの使い方を覚え、JCLの書き方も習ってプログラムをジョブとして実行する手順を理解し、必要に応じてMVSやJES2コマンドを実行するといった基本操作を身に付ける必要がありましたが、もはやコンピューター・エンジニアと言えば圧倒的にオープン系システムのエンジニアを言う今日では、オープン系システムの使い方のままz/OSを使えるように変わってきています。メインフレームといえどもコンピューターはただの道具に過ぎませんから、目的さえ果たせれば利用者にとって使いやすい方法を選択できるようになってきています(*3)。
*1 有償プログラム製品で別途オーダーが必要
*2 例えば、データセットへのアクセスやユーティリティーの実行など
*3 ZOA Utilitiesやwebブラウザーなどからz/OSにアクセスする機能を提供するz/OSMFなどは、従来のMVSプログラムと比べメモリーやCPUなどのハードウェア・リソースを大量に消費するが、今日のハードウェアのプロセッサー能力ではそれらを十分にカバーできるようになった。
ZOAUコマンドでIEBGENERを実行する
USSシェルからZOAUコマンドを使って、MVS側でIEBGENERユーティリティーを実行する例です。
1 2 3 4 5 |
/u/userid > mvscmd -p=iebgener --sysut1=userid.data1 --sysut2=userid.data2 --sysprint=* --sysin=dummy 1DATA SET UTILITY - GENERATE PAGE 0001 PROCESSING ENDED AT EOD /u/userid > |
mvscmdがMVS側でプログラムを実行するコマンドです。プログラムからのメッセージは、JCLであれば通常SYSOUTにルーティングしますが、USSシェルであればsshクライアント・ターミナルにルーティングできます。上記の例では、IEBGENERユーティリティーからのメッセージが端末に出力されていることがわかります。
実際に使用する場合は、コマンド単体で使うよりはシェル・スクリプト内に記述することが多いでしょう。バッチ・サブミットと違って同期を合わせる必要が無いため、MVS側リソースをアクセスする非定型処理を自動化するのも容易です。より複雑な処理が必要であれば、PythonやJavaと組み合わせることもできます。