Escribir reglas de anulación de lotes personalizadas

El programador utiliza reglas de anulación en el formulario Definiciones de lote para determinar si deben liberarse los lotes en formación aunque no hayan alcanzado la cantidad de liberación mínima.
Nota:  Consulte Escribir una regla de programador personalizada para obtener un resumen de los pasos necesarios para crear reglas personalizadas. Para obtener más detalles acerca de las funciones descritas en este tema, consulte la Guía de personalización de la programación, disponible para su descarga en nuestra página de asistencia.

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);