Help us understand the problem. What is going on with this article?

PASEシェルAPIの違い

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

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

IBM i の PASE SHELL 起動 API

詳細は 「IBM Knowledge Center V7R2 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') 
ushiday
IBMiに巡り逢えたことに感謝している。そんなSE。
https://ushiday.hatenablog.jp/
ibmi
IBM i (AS/400) 上のオープン技術を推進するエンジニアコミュニティ
http://i5php.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした