Systemwalker Operation Manager リファレンスマニュアル - UNIX/Windows(R)共通 -
目次 索引 前ページ次ページ

第17章 API情報> 17.3 ジョブ実行制御API

17.3.3 ジョブ投入API

ジョブ投入API(Mp_SubmitJob)について説明します。

■機能説明

ジョブをSystemwalker Operation Managerを導入しているサーバに投入します。投入に成功するとジョブを識別する情報として“ジョブ投入ホスト名”、“ジョブ名”および“ジョブ番号”が返却されます。

■記述形式

【Windows版】

#include "f3cuapi.h"
long Mp_SubmitJob (char *rhost,
           char *submitinf,
           char *env[ ],
           char *jobhost,
           char *jobname,
           long *jobno)

【UNIX版】

#include "mjesapi.h "
int Mp_SubmitJob (char *rhost,
           char *submitinf,
           char *env[ ],
           char *jobhost,
           char *jobname,
           int *jobno)

■パラメタの説明

rhost

NULLを指定してください。

submitinf

ジョブ投入情報としてqsubコマンの引数を指定します。引数の記述形式は、qsubコマンドにおけるオプションおよびオペランドの指定方法と同じです。

qsubコマンドの引数の記述形式および注意事項については、“qsub ジョブの投入コマンド”を参照してください。

env[ ]

ジョブに引き継ぐ環境変数を指定します。引き継ぐ必要がない場合は、NULLを指定してください。

また、submitinfにおいて、“-x”を指定した場合のみ、当環境変数がジョブに引き継がれます。

jobhost

ジョブが正常に投入された場合、ジョブを識別する情報として、ジョブ投入ホスト名が返却されます。

jobname

ジョブが正常に投入された場合は、ジョブを識別する情報として、ジョブ実行制御が決定したジョブ名が返却されます。ジョブ投入時にジョブ名を指定した場合は、そのジョブ名でジョブが投入されます。ただし、省略時およびジョブファイル内でジョブ名を宣言している場合は、本パラメタで指定した領域に返却されるジョブ名により、投入したジョブのジョブ名を知ることができます。

jobno

ジョブが正常に投入された場合、ジョブを識別する情報として、ジョブ実行制御が割り当てたジョブ番号が返却されます。当ジョブ番号によって、ジョブに対する操作が可能です。

■復帰値

復帰値

意 味

0

正常にジョブは投入されました。

-1

システムエラーが発生しました。

-1000以下

ジョブ実行制御において、エラーが検出されたため、投入処理を中断しました。 なお、エラーメッセージ獲得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(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);
}

目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 1995-2007