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

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

[EE]
17.3.15 ジョブ一覧情報獲得API/EE【Windows版】

ジョブ一覧情報獲得API/EE(Mp_ListJob_Ex)について説明します。

■機能説明

Systemwalker Operation Manager EEで、ジョブ情報の一覧を獲得します。当関数発行元プロセスのユーザが所有するすべてのジョブの情報が獲得されます。システム管理者(Administratorsグループに属するユーザ)の場合、Systemwalker Operation Managerを導入しているサーバ内のサブシステムごとのすべてのジョブ情報が獲得されます。ただし、userforadminを指定した場合は、当該ユーザが所有するジョブの情報のみが獲得されます。

■記述形式

#include "f3cuapi.h"
long Mp_ListJob_Ex (char *rhost,
           long mode,
           struct Mp_JOBINF_1 *jobinf[ ],
           char *userforadmin,
           int system_num)

■パラメタの説明

◆rhost

NULLを指定してください。

◆mode

以下に示す処理モードを指定します。GETJOBを行った後、必ずFREEJOBを行ってください。

GETJOB:
ジョブ一覧情報を獲得します。
FREEJOB:
GETJOBで獲得したジョブ一覧情報領域を開放します。

◆jobinf[ ]

GETJOBの場合:
ジョブ情報構造体(Mp_JOBINF_1)の配列のアドレスを通知する領域のアドレスを指定します。
FREEJOBの場合:
GETJOBで返却されたジョブ情報構造体の配列のアドレスを通知した領域のアドレスをそのまま指定してください。また、GETJOBを行った後FREEJOBを行うまでの間、該当領域の内容を変更しないようにしてください。

◆userforadmin

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

◆system_num

操作対象のサブシステムを、0から9の範囲の番号で指定します。

■復帰値

復帰値

意 味

0以上

正常にジョブ情報の一覧が獲得されたことを示し、そのジョブ数が返却されます。“0”の場合は、該当するジョブが存在しないことを示します。

-1

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

-1000以下

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

以下に項目ごとの説明を記述します。

jobname

ジョブ名が設定されます。

jobhost

投入元ホスト名が設定されます。

jobno

ジョブの番号が設定されます。

user

ジョブの所有利用者が設定されます。

queue

キュー名が設定されます。

jobtype

ジョブの種類が設定されます。設定されるジョブの種類を以下に示します。

種 類

1

デマンドジョブ

2

スケジュールジョブ

status

ジョブの状態が設定されます。設定されるジョブの状態を以下に示します。

状 態

1

実行待ち

2

実行保留

3

実行中

4

出力保留

comment

投入時に指定したコメントが設定されます。

■プログラム例

ジョブ一覧情報獲得API/EEのプログラムを以下に示します。

 

#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];
        int system_num;

        /*
         * initialization working area
         */
        memset(errmsg, 0x00, sizeof(errmsg));

        mode = GETJOB;

        /*
         *  call Mp_ListJob_Ex() API
         */
        system_num = 0;
        rtn = Mp_ListJob_Ex (NULL, mode, &jobinf, NULL, system_num);

        /*
         * check return code of Mp_ListJob_Ex() 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_Ex() API
         */
        Mp_ListJob_Ex (NULL, mode, &jobinf, NULL, system_num);

        return(0);
}

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

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