技術解説とヒント
<<2008年5月の目次>>
●V5R4 でのスプール・ファイルの保管/リストア
●Windows ネットワーキング名の取得
●CL から AIX プログラムを実行する方法の概要
●専用権限を表示/処理するための CL コマンド


CL から AIX プログラムを実行する方法の概要

Q:
QP2SHELL プログラムの基本的な概要を教えていただけますか? CL からポータブル・アプリケーション・ソリューション環境 (PASE) プログラムを実行する必要があるのですが、QP2SHELL にどのパラメーターを渡したらよいか分かりません。


A:
QP2SHELL プログラムは、i5/OS プログラムから PASE 内で実行される AIX プログラムを起動します。CALL コマンドを使用して AIX プログラムを直接呼び出すことはできないので、PASE を起動して AIX プログラムを実行するように指示する方法が必要で、QP2SHELL がその手段になります。

最初のパラメーターは、PASE 内で実行する AIX プログラムの IFS スタイルのパス名です。その他のパラメーターはオプションです。それぞれのオプション・パラメーターは、AIX プログラムにパラメーターとして渡されます。したがって、パラメーターは次のように使用されます。

CALL QP2SHELL PARM('/path/to/aixpgm'
[ 'aixparm1' 'aixparm2' 'aixparm3' ... 'aixparmN' ])

例えば、PASE で ls (ディレクトリーのリスト表示) コマンドを呼び出したい場合は、次のようにコーディングできます。

CALL PGM(QP2SHELL) PARM('/QOpenSys/usr/bin/ls')

このコードは、PASE を新しい活動化グループ内で開始し、/QOpenSys/usr/bin サブディレクトリーにある ls プログラムを実行します。ls にパラメーターは渡しません。

ls プログラムに -a パラメーターを渡したい場合は、QP2SHELL への追加のパラメーターに入れて指定します。

CALL PGM(QP2SHELL)
PARM('/QOpenSys/usr/bin/ls' '-a')

この構文を使用すると、PASE に組み込まれている「シェル」のサービスは使用できません。これは、シェルを実行せずに、プログラムを直接呼び出しているからです。

Unix シェルを対話式に呼び出せばコマンド行を使用できますが、プログラムから呼び出して各種の便利なサービスを利用することもできます。シェルを起動する場合は、それぞれのプログラム・パラメーターを別々に指定する代わりに、単一のパラメーターに AIX コマンド行全体を指定できます。また、「グロブ」(ファイル名の選択にワイルドカードを使用することを表す用語) の使用、パス検索、シェル・スクリプトの実行なども可能になります。

例えば、ファイルをコピーするための AIX プログラムは cp です。シェルを使用しない場合は、パス検索が行われないので、すべての完全なファイル名をリストする必要があります。例えば、cp が PATH 環境変数にリストされているディレクトリー内にあるとしても、シェルがなければ、図 2 に示すように、コマンドの IFS パス名を完全に入力する必要があります。

一方で、実行するプログラムとしてシェルを呼び出し、AIX コマンドの実行をシェルに指示した場合は、パス名の検索を処理できるので、図 3 のステートメントのようにコーディングできます。ワイルドカードについても同じことが当てはまります。ワイルドカードを使用する場合は、QP2SHELL の最初のパラメーターとしてシェル名を渡し、その後に -c を指定してコマンドの実行をシェルに指示し、その後に完全なコマンド・ストリングを指定します。これらはすべて 1 つのパラメーターに含まれます (図 4)。PASE が実行する AIX コマンドを作成して CL プログラム内の変数に入れ、その変数をシェルに渡すことができます。このためには、図 5 のようなコードを使用します。

前記のコードは、多少単純化してあります。実際のプログラムでは、おそらく &FILES と &RESULT はパラメーターとして受け取るか、対話式ユーザーから画面上の入力として受け取ります。そうでなければ、これらが変数である意味はあまりありません。ただし、前記のコードは、PASE に対して変数を使用する方法の一例を示すためのものです。CL プログラマーなら、パラメーターを使用する方法や、ユーザーからのデータを読み取る方法は既によくご存じでしょうから、この部分はお任せします。公式の資料は、Information Center (publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/apis/qp2shell.htm) にあります。

 


↑このページのトップへ


TOPPAGE

BELLDATA, Inc. Copyright reserved.