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

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

17.3.12 ジョブ状態獲得API

ジョブ状態獲得API(Mp_StatusJob)について説明します。

■機能説明

ジョブの状態を獲得します。ジョブが終了状態である場合、ジョブの終了コードを獲得できます。

■記述形式

【Windows版】

#include "f3cuapi.h"
long Mp_StatusJob (char *rhost,
           char *jobname,
           long jobno,
           char *jobhost,
           ulong *compcode,
           char *userforadmin)

【UNIX版】

#include "mjesapi.h"
int Mp_StatusJob (char *rhost,
           char *jobname,
           int jobno,
           char *jobhost,
           uint *compcode,
           char *userforadmin)

■パラメタの説明

rhost

NULLを指定してください。

jobname

状態を獲得するジョブのジョブ名を指定します。NULLを指定することもできます。NULLを指定した場合は、jobnoで指定されたジョブ番号によって状態を獲得するジョブを指定してください。

jobno

状態を獲得するジョブのジョブ番号を指定します。jobnameにNULLを指定した場合、および同名ジョブが複数存在する場合は、必ず指定してください。

jobhost

NULLを指定してください。

compcode

ジョブの終了コード返却用領域のアドレスを指定します。ジョブが終了状態の場合、終了コードが格納されます。

userforadmin

システム管理者(Administratorsグループに属するユーザ/スーパーユーザ)が他人のジョブの状態を獲得する場合に指定します。状態の獲得対象ジョブの所有者名を指定してください。所有者名を指定しない場合はNULLを指定してください。

■復帰値

復帰値

意 味

0

指定したジョブは存在しません。

1

実行待ち状態です。

2

実行保留状態です。

3

実行中です。

4

出力保留状態です。

5

ジョブは終了状態です。

-1

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

-1000以下

ジョブ実行制御において、エラーが検出されたため、状態の獲得処理を中断しました。 なお、エラーメッセージ獲得APIを使用して、エラーメッセージを獲得することができます。

■注意事項

引数が無効アドレスを指している場合、当関数は異常終了し、その動作は定義されません。

■プログラム例

ジョブ状態獲得APIのプログラムを以下に示します。

【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];

        /*
         * 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() API
         */
        rtn = Mp_StatusJob (NULL, NULL, jobno, NULL, &compcode, NULL);

        /*
         * check return code of Mp_StatusJob() 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];

        /*
         * 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() API
         */
        rtn = Mp_StatusJob (NULL, NULL, jobno, NULL, &compcode, NULL);

        /*
         * check return code of Mp_StatusJob() 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);
}

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

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