Escribir reglas de anulación de lotes personalizadas
Lógica de las reglas de anulación
Antes de crear reglas de anulación de lotes personalizadas y escribir las correspondientes funciones, debe comprender la lógica que utiliza la función de anulación. Esta regla se invoca bajo dos condiciones:
- Cuando la adición de revisiones de anulación de la liberación esté activada y se añada un trabajo a un lote en formación, pero dicho lote no alcanza o supera la cantidad de liberación mínima.
- Durante una revisión de anulación de la liberación periódica, que se produce en un intervalo especificado en la definición del lote si se activó la revisión periódica.
Cuando se invoca la función de anulación de lotes, esta determina si debe liberarse el lote en formación.
Denominar la función
La función de anulación personalizada puede tener cualquier nombre que no sea un nombre de función estándar invocable por el usuario.
Arguments
#include "factor.h"
int borl(formbat, batch)
FORMBAT *formbat; /* pointer to the forming batch */
BATCHDEF *batch; /* pointer to the batch definition */
La función de anulación acepta dos argumentos, un indicador al lote en formación (Type: FORMBAT *) y un indicador al lote (Type: BATCHDEF *).
Valor de devolución
La función devuelve TRUE (diferente a cero) si el lote en formación debe liberarse o FALSE (cero) en caso contrario (Type: int).
A continuación presentamos un ejemplo de una función de anulación de lotes basada en el tiempo superior o igual al umbral de anulación:
int borl (FORMBAT *formbat, BATCHDEF *batch)
/*-----------------------------------------------------------------
Batch override rule which determines that the forming batch should
be released if it has been waiting longer or equal to the override
threshold.
ARGS:
formbat - pointer to the arriving forming batch
batch - pointer to the batch that this load will follow
RETURNS: true, if it has been waiting too long
false, otherwise
-----------------------------------------------------------------*/
{
double x;
x = cstnow - formbat->fbsttim;
/* If the time the batch has been forming is at least the
threshold, then release the batch */
if (x >= batch->btovth)
{
return(1)
}
else
{
return(0)
}
{
Instalación de la función personalizada
Para poner la función de anulación personalizada a disponibilidad del programador, debe "instalarla" desde ucini1 invocando a la función sedfok. Esta función tiene dos argumentos en el siguiente orden:
- El número de la regla de anulación de lotes para la que la función contiene lógica personalizada
- La dirección de la función de anulación de lotes
Por ejemplo, para instalar la regla del ejemplo anterior "borl" en la posición de regla 39:
sedfok (39, borl);