テキスト・ファイルからの MQSC コマンドの実行

MQSC コマンドを対話式で実行する方法は、迅速にテストを行うのに適していますが、非常に長いコマンドや、繰り返し実行するコマンドの場合には、stdin をテキスト・ファイルからリダイレクトする方法を検討してください。

stdin をテキスト・ファイルからリダイレクトするには、先に一般的なテキスト・エディターを使用して MQSC コマンドの入ったテキスト・ファイルを作成してから、runmqsc コマンドを実行します。
注: runmqsc コマンドをリダイレクトによってクライアント・モードで実行する場合は、以下のようにします。stdinテキスト・ファイルから取得し、資格情報を提供するために -u フラグを指定すると、 runmqsc コマンドはパスワードの入力を求めるプロンプトを出さず、代わりにパスワードが読み取られます。stdinを使用して提供されたデータの最初の行がstdinパスワードです。 これを行うには、「echo」や「cat」などのコマンド・ライン・ツールを使用し、パスワードに続けて MQSC スクリプトを runmqsc コマンドに渡します。stdin.
runmqsc コマンドを使用するとき、シェル・リダイレクト演算子を使用してください。 例えば、次のコマンドは、テキスト・ファイル myprog.in に含まれている一連のコマンドを実行します。

runmqsc < myprog.in

同様にして、出力をファイルにリダイレクトすることもできます。 入力用の MQSC コマンドが格納されているファイルを MQSC コマンド・ファイルと呼びます。 キュー・マネージャーからの応答が格納されている出力ファイルを出力ファイルと呼びます。

runmqsc コマンドで stdinstdout の両方をリダイレクトするには、次の形式のコマンドを使用します。

runmqsc < myprog.in > myprog.out

このコマンドは、MQSC コマンド・ファイル myprog.in. に含まれる MQSC コマンドを呼び出します。キュー・マネージャー名が指定されていないため、MQSC コマンドはデフォルトのキュー・マネージャーに対して実行されます。 出力はテキスト・ファイル myprog.out に送られます。 図 1 は、MQSC コマンド・ファイル myprog.in からの抽出を示しています。 図 2 は、 myprog.outの出力の対応する抽出を示しています。

デフォルトではないキュー・マネージャー ( saturn.queue.manager) に対して runmqsc コマンドで stdin および stdout をリダイレクトするには、次の形式のコマンドを使用します。

runmqsc saturn.queue.manager < myprog.in > myprog.out

MQSC コマンド・ファイル

MQSC コマンドは、ユーザーが理解できる形式、つまり ASCII テキストで書きます。 図 1 は、MQSC コマンド・ファイルからの抜粋で、MQSC コマンド (DEFINE QLOCAL) とその属性を示しています。 MQSC コマンド には、各 MQSC コマンドとその構文の説明が含まれています。
図1: MQSC コマンド・ファイルからの抽出

.
.
.
DEFINE QLOCAL(ORANGE.LOCAL.QUEUE) REPLACE +
DESCR(' ') +
PUT(ENABLED) +
DEFPRTY(0) +
DEFPSIST(NO) +
GET(ENABLED) +
MAXDEPTH(5000) +
MAXMSGL(1024) +
DEFSOPT(SHARED) +
NOHARDENBO +
USAGE(NORMAL) +
NOTRIGGER;
.
.
.

IBM® MQ 環境間での移植性を考慮して、MQSC コマンド・ファイルの行の長さは 72 文字に制限してください。 正符号 (+) は、コマンドが次の行に続くことを示します。

MQSC コマンド・レポート

runmqsc コマンドはレポートを戻し、これは stdout に送られます。 レポートには、次のものが含まれています。
  • MQSC コマンドをレポートのソースとして識別するヘッダー。
    
    Starting MQSC for queue manager jupiter.queue.manager.
    
    ここで、 jupiter.queue.manager はキュー・マネージャーの名前です。
  • 発行された MQSC コマンドの番号付きリスト (任意)。 デフォルトでは、入力のテキストが出力にエコーされます。 この出力内では、 図 2に示すように、各コマンドの前にシーケンス番号が付きます。 ただし、 runmqsc コマンドで -e フラグを使用して、出力を抑止することができます。
  • エラーのあったコマンドについての構文エラー・メッセージ。
  • 各コマンドの実行結果を示すオペレーター・メッセージ。 例えば、DEFINE QLOCAL コマンドの正常終了を示すオペレーター・メッセージは、次のとおりです。
    
    AMQ8006: IBM MQ queue created.
    
  • スクリプト・ファイルの実行時の一般エラーのために出されるその他のメッセージ。
  • 読み取られたコマンドの数、構文エラーのあったコマンドの数、処理できなかったコマンドの数を示す、レポートの簡単な統計の要約。
    注: キュー・マネージャーは、構文エラーのないコマンドのみを処理しようとします。
図2: MQSC コマンド・レポート・ファイルからの抽出

Starting MQSC for queue manager jupiter.queue.manager.
.
.
12:   DEFINE QLOCAL('ORANGE.LOCAL.QUEUE') REPLACE +
:      DESCR(' ') +
:      PUT(ENABLED) +
:      DEFPRTY(0) +
:      DEFPSIST(NO) +
:      GET(ENABLED) +
:      MAXDEPTH(5000) +
:      MAXMSGL(1024) +
:      DEFSOPT(SHARED) +
:      NOHARDENBO +
:      USAGE(NORMAL) +
:      NOTRIGGER;
AMQ8006: IBM MQ queue created.
:
.
.

システムに提供された MQSC コマンド・ファイルを実行する

IBM MQには、以下の MQSC コマンド・ファイルが用意されています。
amqscos0.tst
サンプル・プログラムが使用するオブジェクトの定義
amqscic0.tst
CICS® トランザクションのキューの定義。

[Windows] IBM MQ for Windowsでは、これらのファイルはディレクトリー MQ_INSTALLATION_PATH\tools\mqsc\samplesにあります。 MQ_INSTALLATION_PATH は、 IBM MQ がインストールされている上位ディレクトリーを表します。

[UNIX][Linux] UNIX and Linux® システムでは、これらのファイルは MQ_INSTALLATION_PATH/sampディレクトリーにあります。 MQ_INSTALLATION_PATH は、 IBM MQ がインストールされている上位ディレクトリーを表します。

次のコマンドが実行されました。


runmqsc < amqscos0.tst >test.out

runmqsc を使用してコマンドを確認する

runmqsc コマンドを使用すると、MQSC コマンドを実際に実行しなくても、ローカル・キュー・マネージャーでそれらのコマンドを確認することができます。 これを確認するには、例えば次のように、-v フラグを runmqsc コマンドに設定します。

runmqsc -v < myprog.in > myprog.out
MQSC コマンド・ファイルに対して runmqsc を呼び出すと、キュー・マネージャーは、実際に MQSC コマンドを実行することなく、各コマンドを確認してレポートを戻します。 これによって、コマンド・ファイル内のコマンドの構文を検査できます。 これは、次のような場合に特に重要です。
  • コマンド・ファイルから多数のコマンドを実行する場合
  • MQSC コマンド・ファイルを複数回繰り返して使用する場合

返されるレポートは、 図 2に示すようなものです。

リモートから MQSC コマンドを確認するには、この方法を用いることはできません。 例えば、次のコマンドを試行するとします。

runmqsc -w 30 -v jupiter.queue.manager < myprog.in > myprog.out

キュー・マネージャーがリモートであることを示すために使用する -w フラグは無視され、コマンドは検証モードでローカルで実行されます。 30 は、 IBM MQ がリモート・キュー・マネージャーからの応答を待機する秒数です。