AS400/IBMi アクティブジョブを取得するSQL WRKACTJOB

IT関連

現在開いているJOBをSQLで取得しようと思った。

要するにWRKACTJOBで表示するのと同じ内容がほしい。

 

理由はWeb画面にユーザーのジョブを一覧で表示して、気に入らない奴を気分次第でENDJOBできる核ミサイルボタンを作りたいから。←冗談です

 

取得する方法はこれでいけるみたい。

SELECT * FROM TABLE(QSYS2.ACTIVE_JOB_INFO());

 

FROM句にはライブラリとテーブル名を記載するはずだけど、ACTIVE_JOB_INFOという関数を使えばそれを取得できるみたい。()が関数の呼び出し。TABLE()の中に関数を呼び出せばTABLEとして使えるのだろう。そしてこの関数はQSYS2ライブラリにあるみたい。これは面白い。

 

呼び出すことができれば、後はSELECT句を工夫したりWHEREで絞ったりすればいい。POSSTRやSUBSTRを使えば好きな所で区切ることもできる。

 

私の場合は最終的にこんな感じ。

SELECT SUBSTR(SUBSTR(JOB_NAME,8),POSSTR(SUBSTR(JOB_NAME,8),'/')+1)  AS JOB_NAME,
       SUBSTR(JOB_NAME,8,POSSTR(SUBSTR(JOB_NAME,8),'/')-1) AS JOB_USER,
       JOB_TYPE AS JOB_TYPE,
       SUBSTR(JOB_NAME,1,6) AS JOB_NUMBER,
       FUNCTION AS FUNCTION
       FROM TABLE(QSYS2.ACTIVE_JOB_INFO())
       WHERE SUBSTR(JOB_NAME,8,POSSTR(SUBSTR(JOB_NAME,8),'/')-1) = 'HOGEHOGE';

 

他にはWRKSYSSTSと同じようなものを呼び出すものもあるらしい。

select * from TABLE(QSYS2.MEMORY_POOL());

 

以上です。

コメント

タイトルとURLをコピーしました