编写定制准备规则

注意: 关于创建定制规则所要求的步骤总结,请参见编写定制排产器规则。有关该主题中所述函数的详细信息,请参见排产自定义指南,该指南可从我们的技术支持网站下载。

要决定是否需要准备,可编写一个函数 ucwtsr,当工序的准备规则设置为用户自定义的准备规则(规则位置 3-39)时,“排产器”将使用该函数。

命名函数

定制函数可使用非标准的用户可调用函数名的任何名称。

自变量

汇总


#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 必须按以下顺序接受五个自变量:

  1. A pointer to a load (Type:LOAD*)。
  2. 资源类型 ("R"esource)(类型:char)。
  3. 指向资源的指针(类型:void*)。
  4. A pointer to an operation (Type: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);
}

安装定制函数

不必在 ucini1 中安装 ucwtsr,因为当准备规则大于 2 (即,一个非标准规则号) 时将对其进行自动调用。

相关主题