Pythonプログラムを作成してバッチ・ジョブとして実行する

z/OSではまだまだ一般的ではありませんが、近年注目されているPythonはz/OSでも利用できます。「IBM Open Enterprise Python for z/OS」としてIBMのWebサイトからダウンロードしてz/OS(USS)へインストールすることができます。IBMのサポートを受けなければ無償で利用できます。

z/OS版Pythonの実行

sshクライアントでUSSシェルにログインして実行する

Unix(Linux)同様に、シェルにログインしてPythonコマンドを実行します。シェル上で実行する分には、z/OSも他のOSも大差はないです。

USS内の所定のディレクトリー(自分のuseridやアプリのディレクトリー等)にPythonのソース・プログラムを格納してからpythonコマンドで実行できます(テスト環境ではpython3)。

python3 hello.py

USSシェル上でのpythonプログラムの実行例です。ついでに同じことを行っているjavaプログラムも実行してみました。UNIXシェル上ではPythonもJavaも似た手順です。(※当然ながらPythonもJavaも追加でインストールされている必要があります)

バッチ・ジョブで実行する

PythonプログラムはUSS内で実行することになりますが、BPXBATCHユーティリティーによってバッチ・ジョブとしてUSSシェルを実行することもできます。

USSをバッチで起動してUSS内のPythonを実行します。STDPARM内の「SH」は、USSのUNIXシェルを起動することを示します。シェル内でPython3コマンドを実行しています。コマンドに続いて指定している「hello.py」がPythonのソース・プログラムです。指定したプログラムが読み込まれ解釈されて実行されます。

z/OS版Pythonのはろ~わーるど

MVS上のデータセット(JCL内)にPythonのソース・プログラムを書いた例です。JCL内のソース・プログラムをUSSファイル・システム内に書き込んだ後、次のステップでUSSシェルを起動して実行します。
Pythonは、ソース・プログラムの各行(文)が改行コードで区切られている必要があり行末に改行コードを追加するため、IEBGENERではなくUSSのOCOPYコマンドをTSOバッチ・セッションで実行して、SYSUT1 DDに定義されたストリーム内データセットとしてのPythonソース・プログラムを、SYSUT2 DDに定義された/u/yourdir/hello.pyファイルとしてコピーしています。ストリーム内データセットではなく、区分データセットのメンバーとしてプログラムを作成し格納して、SYSUT1をDSN=dsname(member)で定義してもかまいません。

MVS上でPythonを動かすということで、PythonソースもCOBOLやPL/I同様の80バイト固定長レコードで記述したサンプルを示していますが、TSOのISHELLやOEDITコマンド(あるいはVSCode)などで直接USSファイル・システム内にソース・プログラムのファイルを作成することもできます。その場合、バッチ処理でPythonプログラムを動かすのであれば、最初の例のようにBPXBATCHのステップだけを実行します。