現在開いている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());
以上です。
コメント