Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option プログラム作成の手引


CBLEEADM('COMMAND ')

〈このページの構成〉

名称

運用コマンドの実行

形式

PROCEDURE DIVISIONの指定

CALL 'CBLEEADM' USING 一意名1 一意名2 一意名3 一意名4

DATA DIVISIONの指定

32ビットアーキテクチャの場合
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'COMMAND '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
  02 データ名C  PIC S9(9) COMP.
  02 データ名D  PIC S9(9) COMP.
01 一意名2.
  02 データ名E  PIC 9(9) COMP.
  02 データ名G  PIC X(n).
01 一意名3.
  02 データ名H  PIC 9(9) COMP.
  02 データ名J  PIC X(n).
01 一意名4.
  02 データ名K  PIC 9(9) COMP.
  02 データ名M  ADDRESS.
64ビットアーキテクチャの場合
01 一意名1.
  02 データ名A  PIC X(8) VALUE 'COMMAND '.
  02 データ名B  PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名Z  PIC S9(9) COMP VALUE ZERO.
  02 データ名C  PIC S9(9) COMP.
  02 データ名D  PIC S9(9) COMP.
01 一意名2.
  02 データ名E  PIC 9(9) COMP.
  02 データ名G  PIC X(n).
01 一意名3.
  02 データ名H  PIC 9(9) COMP.
  02 データ名J  PIC X(n).
01 一意名4.
  02 データ名K  PIC 9(9) COMP.
  02 FILLER     PIC X(4).
  02 データ名M  ADDRESS.

機能

オンライン中にコマンドを入力したときと同様に,UAPからコマンドを実行します。コマンドの処理が完了するまで待ち,コマンドの実行結果を戻します。コマンドの処理が終了すると,標準出力情報と標準エラー出力情報が返ります。

コマンドの実行形式ファイルを格納したディレクトリをサーチパスに追加しておいてください。

UAPで値を設定するデータ領域

●データ名A

コマンドの実行を示す要求コードを「VALUE 'COMMAND△'」と設定します。

●データ名Z

0を設定します。

●データ名D

応答監視時間を設定します(単位:秒)。指定できる範囲は-1,0〜65535です。

-1を指定した場合,プロセス関連定義のcall_cmd_timeオペランドで指定した値が応答監視時間になります。0を設定した場合は,時間監視をしません。

●データ名E

データ名Gに設定したコマンドの文字列の長さを設定します(単位:バイト)。2047を超えて指定できません。

●データ名G

実行する運用コマンドの文字列を設定します。指定できる文字列の最大長は2048バイトです(末尾の空白を含む)。

●データ名H

コマンドの実行結果として標準出力に出力する文字列(データ名Jに返される値)の長さに1を加えた値を設定します(単位:バイト)。指定できる値は1〜32768です。

データ名Hの値は,UAPから実行するコマンドに応じて決めてください。出力結果を受け取る必要がない場合は,1を設定してください。

処理終了後は,データ名Jに格納された実際の文字列の長さが返されます。データ名H自身の長さは含みません。

●データ名J

コマンドの実行結果として標準出力に出力する文字列を受け取る領域です。UAPで値を設定しておく必要はありませんが,事前にこのデータ名Jが指すアドレスから,(データ名Hの値+データ名Kの値)分の領域を確保しておいてください(単位:バイト)。出力結果を受け取る必要がない場合でも,この長さの領域を確保してください。

●データ名K

コマンドの実行結果として標準エラー出力に出力する文字列(データ名Mに返される値)の長さに13を加えた値を設定します(単位:バイト)。指定できる値は13〜32780です。

データ名Kの値は,UAPから実行するコマンドに応じて決めてください。出力結果を受け取る必要がない場合は,13を設定してください。

処理終了後は,データ名Mに格納した実際の文字列の長さが返されます。データ名K自身の長さは含みません。

TP1/EEから値が返されるデータ領域

データ名B以外を参照できるのは,ステータスコードが,00000,01811,01813,01814,または01815のときだけです。ほかのステータスコードのときは,参照できません。

●データ名B

ステータスコードが,5けたの数字で返されます。

●データ名C

実行したコマンドが,正常終了したか異常終了したか(シェルの終了コード)が返されます。コマンドをバックグラウンド実行した場合は,正常終了か異常終了かに関係なく0が返されます。

注※

waitpid(2)で指定した形式で,sh(1)の終了ステータスを示します。

●データ名H

処理終了後に,データ名Jに格納された文字列の長さが返されます(単位:バイト)。データ名H自身の長さは含みません。

●データ名J

コマンドの実行結果として標準出力に出力した文字列が返されます。

文字列の長さは,最大で(CBLEEADM('COMMAND ')を呼び出すときにデータ名Hに設定した値−1)です(単位:バイト)。

長さの最大を超える文字列は切り捨てられます。また,パイプの容量を超えた分も切り捨てられます。

●データ名K

処理終了後に,データ名Mに格納された文字列の長さが返されます(単位:バイト)。データ名K自身の長さは含みません。

●データ名M

コマンドの実行結果として標準エラー出力に出力した文字列を格納した領域の先頭アドレスが返されます。

文字列の長さは,最大で(CBLEEADM('COMMAND ')を呼び出すときにデータ名Kに設定した値−13)です(単位:バイト)。

長さの最大を超える文字列は切り捨てられます。また,パイプの容量を超えた分も切り捨てられます。

ステータスコード

ステータスコード

意味

00000

シェルの終了コードは0(コマンドの実行が正常終了)です。標準出力および標準エラー出力の領域に文字列を格納しました。

00001

TP1/EEの環境下にありません。

00004

UOCから発行しているため,この機能は使用できません。

00005

オフラインバッチプロセスから発行しているため,この機能は使用できません。

01811

シェルの終了コードは0以外(コマンドの実行が異常終了)です。標準出力および標準エラー出力のデータを領域に格納しました。

01812

データ名に設定した値が間違っています。要求コード(データ名A)が間違っている場合も含みます。

01813

標準出力のデータが,領域に収まりません。

01814

標準エラー出力のデータが,領域に収まりません。

01815

標準出力のデータと標準エラー出力のデータの両方が,領域に収まりません。

01816

システムコール(close,pipe,dup,またはread)の呼び出しに失敗しました。

01817

運用コマンド実行サーバ関連の定義が指定されていません。

01818

運用コマンド実行サーバへの通信が失敗しました。

01819

メモリが不足しました。

01820

そのほかのエラーが発生しました。

注意事項

  1. このプログラムで実行できるTP1/EEのコマンドは,トランザクション種別によって異なります。詳細は「2.6 運用コマンド実行機能」を参照してください。

  2. サーチパスに指定したディレクトリ間で,コマンド名が重複しないように注意してください。コマンド名が重複している場合,正しいコマンドが実行されないおそれがあります。

  3. ファイル操作に関連するコマンドを実行する場合,ファイルのI/Oなどの処理に時間が掛かるため,実行する場合は十分注意してください。