ジョブ一覧情報獲得API(Mp_ListJob)について説明します。
機能説明
ジョブ情報の一覧を獲得します。当関数発行元プロセスのユーザが所有するすべてのジョブの情報が獲得されます。システム管理者(Administratorsグループに属するユーザ)の場合、Systemwalker Operation Managerを導入しているサーバ内のすべてのジョブの情報が獲得されます。ただし、userforadminを指定した場合は、当該ユーザが所有するジョブの情報のみが獲得されます。
記述形式
#include "f3cuapi.h" |
パラメタの説明
rhost
NULLを指定してください。
mode
以下に示す処理モードを指定します。GETJOBを行った後、必ずFREEJOBを行ってください。
ジョブ一覧情報を獲得します。
GETJOBで獲得したジョブ一覧情報領域を解放します。
jobinf[ ]
ジョブ情報構造体(Mp_JOBINF_1)の配列のアドレスを通知する領域のアドレスを指定します。
GETJOBで返却されたジョブ情報構造体の配列のアドレスを通知した領域のアドレスをそのまま指定してください。また、GETJOBを行った後FREEJOBを行うまでの間、該当領域の内容を変更しないようにしてください。
userforadmin
システム管理者(Administratorsグループに属するユーザ)が他人のジョブの状態のみを獲得する場合に指定します。状態の獲得対象ジョブの所有者名を指定してください。所有者名を指定しない場合はNULLを指定してください。
復帰値
復帰値 | 意 味 | 対 処 |
|---|---|---|
0 | 該当するジョブが存在しません。 | - |
1以上 | 正常にジョブ情報の一覧が獲得されました。ジョブ数が返却されます。 | - |
-1 | システムエラーが発生しました。 | 保守情報収集ツールで“ジョブ実行制御”の情報を採取し、富士通技術員に連絡してください。 |
-1000以下 | ジョブ実行制御において、エラーが検出されたため、処理を中断しました。なお、エラーメッセージ獲得APIを使用して、エラーメッセージを獲得することができます。 | エラーメッセージ獲得APIを使用して、エラーメッセージを獲得し、そのエラーメッセージに対応した処置を実施してください。 |
注意事項
引数が無効アドレスを指している場合、当関数は異常終了し、その動作は定義されません。
ジョブ情報構造体(Mp_JOBINF_1)の形式
ジョブ情報構造体の形式を以下に示します。
当構造体は、INCLUDEファイル“f3cuapi.h”内に定義されます。
typedef struct _Mp_JOBINF_1{
char jobname[]; /* ジョブ名 */
char jobhost[]; /* 投入元ホスト名 */
long jobno; /* ジョブ番号 */
char user[]; /* ジョブ所有利用者 */
char queue[]; /* キュー名 */
long jobtype; /* ジョブ種類 */
long status; /* ジョブ状態 */
char comment[]; /* 投入時に指定したコメント*/
}Mp_JOBINF_1jobname
ジョブ名が設定されます。
jobhost
投入元ホスト名が設定されます。
jobno
ジョブの番号が設定されます。
user
ジョブの所有利用者が設定されます。
queue
キュー名が設定されます。
jobtype
ジョブの種類が設定されます。設定されるジョブの種類を以下に示します。
値 | 種 類 |
|---|---|
1 | デマンドジョブ |
2 | スケジュールジョブ |
status
ジョブの状態が設定されます。設定されるジョブの状態を以下に示します。
値 | 状 態 |
|---|---|
1 | 実行待ち |
2 | 実行保留 |
3 | 実行中 |
4 | 出力保留 |
comment
投入時に指定したコメントが設定されます。
プログラム例
ジョブ一覧情報獲得APIのプログラム例を以下に示します。
#include <windows.h>
#include <stdio.h>
#include "f3cuapi.h"
int main (int argc, char **argv)
{
Mp_JOBINF_1 *jobinf = 0;
Mp_JOBINF_1 *jinf = 0;
long mode;
long idx;
long rtn = 0;
char errmsg[256+1];
/*
* initialization working area
*/
memset(errmsg, 0x00, sizeof(errmsg));
mode = GETJOB;
/*
* call Mp_ListJob() API
*/
rtn = Mp_ListJob (NULL, mode, &jobinf, NULL);
/*
* check return code of Mp_ListJob() API
*/
if (rtn == -1) {
printf ("GetLastError() is %d.\n", GetLastError());
return (1);
} else if (rtn <= -1000) {
printf ("Error code is %d.\n", rtn);
Mp_GetMJESerror (errmsg);
printf ("errmsg = %s\n", errmsg);
return (1);
} else if (rtn == 0) {
printf ("Job is nothing.\n", rtn);
return (0);
}
jinf = jobinf;
printf("job name jobno user name status\n");
for (idx = 0; idx < rtn; idx++) {
printf("%20.20s %5.5d %20.20s ",
jinf->jobname, jinf->jobno, jinf->user);
switch(jinf->status) {
case 1 :
printf("waiting ");
break;
case 2 :
printf("holding ");
break;
case 3 :
printf("running ");
break;
case 4 :
printf("outhold ");
break;
}
printf("\n");
jinf++;
}
mode = FREEJOB;
/*
* call Mp_ListJob() API
*/
Mp_ListJob (NULL, mode, &jobinf, NULL);
return(0);
}