カスタム段取ルールの作成

段取が必要かどうかを判断するには、作業の 段取ルール がユーザ定義の段取ルール(ルール位置 3 ~ 39)に設定されている場合にスケジューラで使用する ucwtsr 関数を作成できます。
注:  カスタムルールの作成に必要な手順のサマリは、「カスタムスケジュールルールの作成」を参照してください。このトピックで説明した関数の詳細については、弊社サポートサイトからダウンロードできる 『Scheduling Customization Guide』 (スケジューリングカスタマイズガイド)を参照してください。

関数の命名

カスタム関数には、ユーザによる呼び出し可能な標準の関数名 以外の任意の名前を付けることが

引数

サマリ


#include "factor.h"
int ucwtsr (ldp, type, rp, jsp, rule)
LOAD     *ldp;  /* pointer to the load. */
TCHAR    type; /* 'R' (resource) */
void      *rp;   /* pointer to the resource to setup. */
JOBSTEP  *jsp;  /* pointer to the operation. */
int      rule; /* setup rule to use. */

ucwtsr 関数は、5 つの引数を次の順序で受け入れる必要があります。

  1. 負荷(区分: LOAD*)。
  2. 資源("R"esource)の区分(区分: char)。
  3. 資源(区分: void*)へのポインタ。
  4. 作業 (区分: JOBSTEP*)へのポインタ。
  5. 段取ルール(区分: int)

戻り値

関数は成功の場合は 1(段取必要)を、失敗の場合は 0(段取なし)を返す必要があります。区分: int。

以下の ucwtsr の例では、資源に対して部品/作業が変更される都度、資源を設定します。


int ucwtsr(LOAD *ldp, TCHAR type, void *rp, JOBSTEP *jsp, int rule)
/*-----------------------------------------------------------------
     Function to set up a resource if the item or operation is
     different from last setup
     ARGS:
       ldp  - pointer to load
       type - "R"esource
       rp   - pointer to resource
       jsp  - pointer to operation
       rule - Setup rule
         RETURNS
       true  - perform setup, or
       false - do not perform setup
-----------------------------------------------------------------*/
{
     int ireturn = 0
     char error[400];
        /* Check if setup or setup/operate or super operation.    */
        if ( (jsp->jstype != 4) &&  (jsp->jstype != 13) )&&
      (jsp->jstype != 19) )
        {
            sprintf(error,"Operation not a Setup or Setup/Operate or Super
                    operation\n\nOrder ID  %s\nLoad ID  %d\nBatch ID
                    %ld\nOperation ID  %s\nOperation Type  %d\n",
                    ldp->loordp->orid, ldp->loid, (ldp->lobat == NULL)
                    ? OL : ldp->lobat->bibatid, jsp->jsid, jsp->jstype);
            seferr(0, error);
        }
        if (type == 'R')
        {
            ireturn = (((RESRC *)rp)->rsptst != ldp->loordp->orptpt
                 ||   ((RESRC *)rp)->rsjsst != jsp) ? 1 : 0;
        }
        else
        {
            ireturn = (((MCRMEMBER *)rp)->mbrptst != ldp->loordp->orptpt
                 ||   ((MCRMEMBER *) rp)->mbrjsst != jsp) ? 1 : 0;
        }
        return (ireturn);
}

カスタム関数のインストール

段取ルールが 2 より大きい場合(非標準ルール番号の場合)、ucwtsr は自動的に呼び出されるため、ucini1 にインストールする必要はありません。