ジョブ投入API(Mp_SubmitJob)について説明します。
機能説明
ジョブをSystemwalker Operation Managerを導入しているサーバに投入します。投入に成功するとジョブを識別する情報として“ジョブ投入ホスト名”、“ジョブ名”および“ジョブ番号”が返却されます。
記述形式
【Windows版】
#include "f3cuapi.h" |
【UNIX版】
#include "mjesapi.h " |
パラメタの説明
rhost
NULLを指定してください。
submitinf
ジョブ投入情報としてqsubコマンドの引数を指定します。引数の記述形式は、qsubコマンドにおけるオプションおよびオペランドの指定方法と同じです。
qsubコマンドの引数の記述形式および注意事項については、“7.18 qsub ジョブの投入コマンド”を参照してください。
env[ ]
ジョブに引き継ぐ環境変数を指定します。引き継ぐ必要がない場合は、NULLを指定してください。
また、submitinfにおいて、“-x”を指定した場合のみ、当環境変数がジョブに引き継がれます。
jobhost
ジョブが正常に投入された場合、ジョブを識別する情報として、ジョブ投入ホスト名が返却されます。
jobname
ジョブが正常に投入された場合は、ジョブを識別する情報として、ジョブ実行制御が決定したジョブ名が返却されます。ジョブ投入時にジョブ名を指定した場合は、そのジョブ名でジョブが投入されます。ただし、省略時およびジョブファイル内でジョブ名を宣言している場合は、本パラメタで指定した領域に返却されるジョブ名により、投入したジョブのジョブ名を知ることができます。
jobno
ジョブが正常に投入された場合、ジョブを識別する情報として、ジョブ実行制御が割り当てたジョブ番号が返却されます。当ジョブ番号によって、ジョブに対する操作が可能です。
復帰値
復帰値 | 意 味 | 対 処 |
|---|---|---|
0 | 正常にジョブは投入されました。 | - |
-1 | システムエラーが発生しました。 | 保守情報収集ツールで“ジョブ実行制御”の情報を採取し、富士通技術員に連絡してください。 |
-1000以下 | ジョブ実行制御において、エラーが検出されたため、投入処理を中断しました。 なお、エラーメッセージ獲得APIを使用して、エラーメッセージを獲得することができます。 | エラーメッセージ獲得APIを使用して、エラーメッセージを獲得し、そのエラーメッセージに対応した処置を実施してください。 |
注意事項
引数が無効アドレスを指している場合、当関数は異常終了し、その動作は定義されません。
プログラム例
ジョブ投入APIのプログラム例を以下に示します。
【Windows版】
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "f3cuapi.h"
int main (int argc, char **argv)
{
char submitinf[1024+1];
char jobhost [64+1];
char jobname [64+1];
long jobno = 0;
long rtn = 0;
char errmsg [256+1];
/*
* initialization working area
*/
memset(submitinf, 0x00, sizeof(submitinf));
memset(jobhost, 0x00, sizeof(jobhost));
memset(jobname, 0x00, sizeof(jobname));
memset(errmsg, 0x00, sizeof(errmsg));
if (argc != 4) {
printf ("Usage: %s <queue-name> <job-name> <job-file>\n", argv[0]);
return (1);
}
/*
* set submitinf
*/
sprintf_s(submitinf,sizeof(submitinf),"-q %s -j %s %s",argv[1],argv[2],argv[3]);
/*
* call Mp_SubmitJob() API
*/
rtn = Mp_SubmitJob (NULL, submitinf, NULL, jobhost, jobname, &jobno);
/*
* check return code of Mp_SubmitJob() API
*/
if (rtn == 0) {
printf ("Job %s(%d.%s) was submitted.\n", jobname, jobno, jobhost);
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 <stdlib.h>
#include <errno.h>
#include "mjesapi.h"
int main (int argc, char **argv)
{
char submitinf[1024+1];
char jobhost [64+1];
char jobname [64+1];
int jobno = 0;
int rtn = 0;
char errmsg [256+1];
/*
* initialization working area
*/
memset(submitinf, 0x00, sizeof(submitinf));
memset(jobhost, 0x00, sizeof(jobhost));
memset(jobname, 0x00, sizeof(jobname));
memset(errmsg, 0x00, sizeof(errmsg));
if (argc != 4) {
printf ("Usage: %s <queue-name> <job-name> <job-file>\n", argv[0]);
return (1);
}
/*
* set submitinf
*/
sprintf(submitinf,"-q %s -j %s %s",argv[1],argv[2],argv[3]);
/*
* call Mp_SubmitJob() API
*/
rtn = Mp_SubmitJob (NULL, submitinf, NULL, jobhost, jobname, &jobno);
/*
* check return code of Mp_SubmitJob() API
*/
if (rtn == 0) {
printf ("Job %s(%d.%s) was submitted.\n", jobname, jobno, jobhost);
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);
}