Escribir reglas de liberación de lotes personalizadas
Lógica de las reglas de liberación de lotes
Antes de crear reglas de liberación de lotes personalizadas y escribir las correspondientes funciones, debe comprender la lógica que utiliza la función en cuestión. Cuando llega un trabajo a una operación con una definición de lote especificada, se invoca la función de liberación de lotes.
Cuando se invoca la función de liberación de lotes, esta determina qué cantidad ha de añadirse al lote en formación, que a cambio determina cuándo se liberará dicho lote.
Denominar la función
La función de liberación de lotes personalizada puede tener cualquier nombre que no sea un nombre de función estándar invocable por el usuario.
Arguments
#include "factor.h"
double brrl(ldp, batch)
LOAD *ldp; /* pointer to the load */
BATCHDEF *batch; /* pointer to the batch definition */
La función acepta dos argumentos, un indicador a la carga (Type: LOAD *) y un indicador al lote (Type: BATCHDEF *).
Valor de devolución
La función devuelve un valor que se añadirá al lote en formación (Type: double).
A continuación presentamos un ejemplo de la función de liberación de lotes en función de la cantidad del trabajo:
double brrl (LOAD *ldp, BATCHDEF *batch)
/*-----------------------------------------------------------------
Batch release rule which adds the quantity on the job.
ARGS:
ldp - pointer to the arriving load (job)
batch - pointer to the batch that this load will follow
RETURNS: job quantity
-----------------------------------------------------------------*/
{
return((double)ldp->losize);
{
Instalación de la función personalizada
Para poner la función de liberación personalizada a disponibilidad del programador, debe "instalarla" desde ucini1 invocando a la función sedfbq. Esta función tiene dos argumentos en el siguiente orden:
- El número de la regla de liberación de lotes para la que la función contiene lógica personalizada.
- La dirección de la función de liberación de lotes.
Por ejemplo, para instalar la regla del ejemplo anterior "brrl" en la posición de regla 39:
sedfbq (39, brrl);