ページのトップに戻る
Systemwalker Operation Manager  リファレンスマニュアル

17.3.14 ジョブ一覧情報獲得API【Windows版】

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

機能説明

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

記述形式

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

パラメタの説明

rhost

NULLを指定してください。

mode

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

GETJOB:

ジョブ一覧情報を獲得します。

FREEJOB:

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

jobinf[ ]

GETJOBの場合:

ジョブ情報構造体(Mp_JOBINF_1)の配列のアドレスを通知する領域のアドレスを指定します。

FREEJOBの場合:

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_1

jobname

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

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);
}