2.5 バッチアプリケーション
2.5.4 コマンド/スクリプト
コマンド/スクリプトについて説明します。
Interstage Job Workload Serverでの“コマンド”および“スクリプト”とは、以下を示します。
・ コマンド
実行モジュール
アプリケーション(拡張子“exe”)
・ スクリプト
シェルスクリプト
バッチファイル(拡張子“bat”)
2.5.4.1 コマンド/スクリプトの形態
コマンド/スクリプトの形態について説明します。
バッチアプリケーションとして動作するコマンド/スクリプトの作成については、バッチ実行基盤の規定する形態はありません。
2.5.4.2 コマンド/スクリプトのインタフェース
バッチジョブ定義で設定した入力パラメタを、バッチアプリケーション(コマンド/スクリプト)に渡すことができます。また、バッチアプリ ケーションからの復帰コード(ジョブステップの終了コード)で、後続ジョブステップを実行するかを制御できます。
バッチジョブ定義とバッチアプリケーションの入力パラメタ、および復帰コードの関係を以下に示します。(例でのパス名などは、Solaris
およびLinuxの形式で記載しています。)
バッチアプリケーションには、以下のインタフェースがあります。
・ 入力パラメタ
・ 復帰コード
・ 環境変数
・ ファイル資源の割当て
■入力パラメタ
バッチアプリケーションのパラメタの値の設定は、バッチジョブ定義のジョブステップ定義のアプリケーション定義で行います。
・ コマンド/スクリプトに渡すことができるパラメタは、文字列だけです。
・ バッチアプリケーションのパラメタ数は最大32個です。
・ パラメタの最大長は1,024です。
■復帰コード
バッチアプリケーションの復帰コードを決定します。復帰コードの範囲は、バッチ実行基盤が動作するOSに準拠します。
また、バッチ実行基盤で使用できるユーザアプリケーションの復帰コードは、ジョブのジョブステップ終了コードとジョブ終了コードにも なります。
バッチ実行基盤とSystemwalker Operation Managerを連携する場合、バッチアプリケーションの復帰コードを0 ~ 200の範囲にしてくだ さい。バッチアプリケーションの復帰コードがこの範囲以外の場合には、Systemwalker Operation Managerの仕様にしたがいます。
復帰コードとして、“-529697949”は使用できません。使用した場合、バッチアプリケーションが異常終了したと見なします。
■環境変数
バッチアプリケーションで使用する環境変数です。
ジョブで使用できる環境変数には以下があります。
・ バッチアプリケーションに渡す環境変数
・ 2.2.1.2 ジョブ定義の環境変数定義
・ バッチワークユニットの環境変数
ジョブステップの環境変数、およびジョブの環境変数はバッチジョブ定義で設定して、バッチアプリケーションに渡すことができます。
ジョブステップの環境変数、およびジョブの環境変数を使用したバッチアプリケーション間のデータの引継ぎはできません。
バッチワークユニットの環境変数については、“Interstage Job Workload Server セットアップガイド”の“環境変数の設定指針”を参照し てください。
■ファイル資源の割当て
ファイル管理機能が、バッチジョブ定義に設定した資源名とファイルの物理的なパスの対応関係を環境変数に設定しバッチアプリケー ションに通知します。これにより、バッチアプリケーションに直接、物理的なパスを記述しないでファイルをアクセスできます。
以下にファイルのアクセス方法の例について示します。(例でのパス名などは、SolarisおよびLinuxの形式で記載しています。)
バッチジョブ定義で資源名“FIL1”を設定します。資源名“FIL1”は“/data/2006/”に割り当てられているファイル“file1”です。バッチアプ リケーションでは、環境変数である資源名“FIL1”に設定されたファイルのパスを取得して、“/data/2006/”に割り当てられているファイ ル“file1”にアクセスします。
ファイルの物理的なパスを変更する場合は、バッチジョブ定義のファイル名を変更することでアクセス対象のファイルを変更することが できるため、バッチアプリケーションの汎用性が高くなります。
2.5.4.3 コマンド/スクリプトの注意事項
バッチ実行基盤環境で実行する、バッチアプリケーション(コマンド/スクリプト)を開発する場合は、以下の注意事項を踏まえたうえで 設計します。
標準入力からのデータの読込みについて
バッチアプリケーション内で、標準入力(stdin)から業務データや制御データは読み込めません。
標準出力/標準エラー出力への出力について
バッチアプリケーションから標準出力(stdout)/標準エラー出力(stderr)に大量データを出力しないでください。標準出力/標準エラー 出力へ出力できるデータの量は、以下に示す上限があるため、上限を超えて出力した分のデータは、切り捨てられます。
標準出力/標準エラー出力に出力できるデータ量の上限 標準出力/標準エラー出力合わせて1ジョブあたり2メガバイト
ただし、標準出力/標準エラー出力には、バッチ実行基盤からジョブの実行に関するデータを出力するため、実際にバッチアプリケー ションから標準出力/標準エラー出力へ出力できるデータ量は、上記の上限以下となります。
また、バッチアプリケーション間で、標準出力/標準エラー出力を利用したデータの引継ぎはできません。
バッチアプリケーションから、標準出力/標準エラー出力に業務データ等の重要なデータを出力しないでください。
業務用データベースのトランザクション制御について
バッチ実行基盤では、バッチアプリケーションが使用する業務用データベースのトランザクション制御を行いません。バッチアプリケー ション内でトランザクション制御を行ってください。
IPC資源について
バッチ実行基盤では、バッチアプリケーションでのIPC資源の利用を管理しないため、プロセスダウン等が発生した場合、IPC資源が回 収されません。
入力要求を求めるアプリケーションの実行
バッチアプリケーション内で、標準出力/標準エラー出力にプロンプトを出力して入力要求を求めるような処理はできません。コンソー ルがないため応答することができず、ジョブは中断します。
文字コードについて
バッチ受付サービス、バッチ実行サービス、バッチワークユニット、コマンド/スクリプト、引継ぎファイルなどで扱うデータの文字コード は、すべて同じ文字コードに統一してください。
文字コードの設計については、“Interstage Job Workload Server セットアップガイド”の“文字コードの設計”を参照してください。
バッチ実行基盤が管理するプロセスの範囲について
バッチ実行基盤では、バッチジョブ定義のステップ定義に設定したバッチアプリケーションを実行し、当該バッチアプリケーションだけ を監視しています。このため、以下の注意事項があります。
・ バッチアプリケーションから、コマンドを実行する場合、実行したコマンドの終了を確認したあとに、バッチアプリケーションが終了 するように設計してください。実行されたコマンドの終了を待たずにバッチアプリケーションが終了すると、実行されたコマンドがゾ ンビプロセスとして、システム内に残ることがあります。