编写定制准备规则
要决定是否需要准备,可编写一个函数 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 必须按以下顺序接受五个自变量:
- A pointer to a load (Type:LOAD*)。
- 资源类型 ("R"esource)(类型:char)。
- 指向资源的指针(类型:void*)。
- A pointer to an operation (Type:JOBSTEP*).
- 设置规则(类型: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 (即,一个非标准规则号) 时将对其进行自动调用。
相关主题