ジョブ状態獲得API/EE(Mp_StatusJob_Ex)について説明します。
機能説明
Systemwalker Operation Manager EEで、ジョブの状態を獲得します。ジョブが終了状態である場合、ジョブの終了コードを獲得できます。
記述形式
【Windows版】
#include "f3cuapi.h" |
【UNIX版】
#include "mjesapi.h" |
パラメタの説明
rhost
NULLを指定してください。
jobname
状態を獲得するジョブのジョブ名を指定します。NULLを指定することもできます。NULLを指定した場合は、jobnoで指定されたジョブ番号によって状態を獲得するジョブを指定してください。
jobno
状態を獲得するジョブのジョブ番号を指定します。jobnameにNULLを指定した場合、および同名ジョブが複数存在する場合は、必ず指定してください。
jobhost
NULLを指定してください。
compcode
ジョブの終了コード返却用領域のアドレスを指定します。ジョブが終了状態の場合、終了コードが格納されます。
userforadmin
システム管理者(Administratorsグループに属するユーザ/スーパーユーザ)が他人のジョブの状態を獲得する場合に指定します。状態の獲得対象ジョブの所有者名を指定してください。所有者名を指定しない場合はNULLを指定してください。
system_num
操作対象のサブシステムを、0から9の範囲の番号で指定します。
復帰値
復帰値 | 意 味 | 対 処 |
---|---|---|
0 | 指定したジョブは存在しません。 | - |
1 | 実行待ち状態です。 | - |
2 | 実行保留状態です。 | - |
3 | 実行中です。 | - |
4 | 出力保留状態です。 | - |
5 | ジョブは終了状態です。 | - |
-1 | システムエラーが発生しました。 | 保守情報収集ツールで“ジョブ実行制御”の情報を採取し、富士通技術員に連絡してください。 |
-1000以下 | ジョブ実行制御において、エラーが検出されたため、状態の獲得処理を中断しました。なお、エラーメッセージ獲得APIを使用して、エラーメッセージを獲得することができます。 | エラーメッセージ獲得APIを使用して、エラーメッセージを獲得し、そのエラーメッセージに対応した処置を実施してください。 |
注意事項
引数が無効アドレスを指している場合、当関数は異常終了し、その動作は定義されません。
プログラム例
ジョブ状態獲得API/EEのプログラム例を以下に示します。
【Windows版】
#include <windows.h> #include <stdio.h> #include "f3cuapi.h" int main (int argc, char **argv) { long jobno = 0; long rtn = 0; unsigned long compcode = 0; char errmsg[256+1]; int system_num; /* * initialization working area */ memset(errmsg, 0x00, sizeof(errmsg)); if (argc != 2) { printf ("Usage: %s <jobno>\n", argv[0]); return (1); } /* * set jobno */ jobno = atoi(argv[1]); /* * call Mp_StatusJob_Ex() API */ system_num = 0; rtn = Mp_StatusJob_Ex (NULL, NULL, jobno, NULL, &compcode, NULL, system_num); /* * check return code of Mp_StatusJob_Ex() API */ if (rtn == 0) { printf ("Job %d is not found.\n", jobno); return (0); } else if (rtn == 1) { printf ("Job %d is waiting for execution.\n", jobno); return (0); } else if (rtn == 2) { printf ("Job %d is holding for execution.\n", jobno); return (0); } else if (rtn == 3) { printf ("Job %d is executing.\n", jobno); return (0); } else if (rtn == 4) { printf ("Job %d is holding for output.\n", jobno); return (0); } else if (rtn == 5) { printf ("Job %d was completed. completion code = %d\n", jobno, compcode); return (0); } else if (rtn == -1) { printf ("GetLastError() is %d.\n", GetLastError()); } else if (rtn <= -1000) { printf ("Error code is %d.\n", rtn); Mp_GetMJESerror (errmsg); printf ("errmsg = %s\n", errmsg); } return (1); }
【UNIX版】
#include <stdio.h> #include <errno.h> #include "mjesapi.h" int main (int argc, char **argv) { int jobno = 0; int rtn = 0; unsigned int compcode = 0; char errmsg[256+1]; int system_num; /* * initialization working area */ memset(errmsg, 0x00, sizeof(errmsg)); if (argc != 2) { printf ("Usage: %s <jobno>\n", argv[0]); return (1); } /* * set jobno */ jobno = atoi(argv[1]); /* * call Mp_StatusJob_Ex() API */ system_num = 0; rtn = Mp_StatusJob_Ex (NULL, NULL, jobno, NULL, &compcode, NULL, system_num); /* * check return code of Mp_StatusJob_Ex() API */ if (rtn == 0) { printf ("Job %d is not found.\n", jobno); return (0); } else if (rtn == 1) { printf ("Job %d is waiting for execution.\n", jobno); return (0); } else if (rtn == 2) { printf ("Job %d is holding for execution.\n", jobno); return (0); } else if (rtn == 3) { printf ("Job %d is executing.\n", jobno); return (0); } else if (rtn == 4) { printf ("Job %d is holding for output.\n", jobno); return (0); } else if (rtn == 5) { printf ("Job %d was completed. completion code = %d\n", jobno, compcode); return (0); } else if (rtn == -1) { printf ("errno is %d.\n", errno); } else if (rtn <= -1000) { printf ("Error code is %d.\n", rtn); Mp_GetMJESerror (errmsg); printf ("errmsg = %s\n", errmsg); } return (1); }