LoginSignup
1
3

PASEシェルAPIの違い

Last updated at Posted at 2020-05-07

PASEシェルAPIの使用方法について

これまで、活動化グループを分けてまで、CL実行することが無いため、同一活動化グループで実行される、QP2SEHLL2を盲目的に使用してきた。
しかし、QP2SEHLL2 QP2SEHLL sh -sh 等が、意思がなく使用されている様に見受けられる、CLLE記述を見てしまったので、整理整頓と自身の備忘録の意味を込めて。

IBM i の PASE SHELL 起動 API

詳細は 「IBM Knowledge Center V7R5 QP2SHELL() を使用した IBM PASE for i プログラムの実行」 を参照下さい。

実行されるのはコーン・シェル。
実態は /QOpenSys/usr/bin/sh../../QIBM/ProdData/OS400/PASE/bin/ksh へのシンボリックリンク。

以下は、シェルの起動プログラムの種類。

  • QP2TERM(対話式シェル)
  • QP2SHELL(新しい活動化グループを作成し実行する)
  • QP2SHELL2(呼び出し元の活動化グループ内で実行する)

QP2SHELL2は、同一活動化グループで実行されるため、5250対話式のコマンド・ラインで実行すると、STDOUTと対話式プログラムの出力とが重複している形になり、何も表示されない?
CLLEで活動化グループが、新たに作成される場合は、もちろん出力される。
CLLE内では、OVRXXXなどのスコープが、活動化グループ内(*ACTGRPDFN)だったりすると、QP2SHELL2は影響を受け、QP2SHELL受けない。

使用例

CALL PGM(QP2TERM  ) PARM('/QOpenSys/usr/bin/sh' '-c' 'echo $PATH') 
CALL PGM(QP2SHELL ) PARM('/QOpenSys/usr/bin/sh' '-c' 'echo $PATH') 
CALL PGM(QP2SHELL2) PARM('/QOpenSys/usr/bin/sh' '-c' 'echo $PATH') 

環境変数について

以下の様に、PASEシェルでコマンドを実行することが可能だが、sh-shで起動時の環境変数に違いがある。
WRKENVVAR , ADDENVVAR コマンドで設定済みのILE環境変数は、QP2TERM,QP2SHELL,QP2SEHLL2sh,-shの組合せがどのパターンでも引き継がれる。

  • /QOpenSys/usr/bin/sh(環境変数がシステムの初期値になる)
  • /QOpenSys/usr/bin/-sh(環境変数がユーザーの初期値になる。※起動時に .profile が実行される)

使用例

CALL PGM(QP2SHELL) PARM('/QOpenSys/usr/bin/sh'  '-c' 'echo $PATH') 
CALL PGM(QP2SHELL) PARM('/QOpenSys/usr/bin/-sh' '-c' 'echo $PATH') 

kshのオプション

AIXを参考にすると、PASEのkshも基本的には、以下のオプションが使用可能だと思われる。
IBM Knowledge Center AIX 7.2 kshコマンド

  • -c : コマンドの実行
  • -v : 出力を表示
  • -x : コマンドと引数を表示
CALL PGM(QP2SHELL) PARM('/QOpenSys/usr/bin/sh'  '-cvx' 'echo $PATH') 
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3