Ecriture de règles de réglage personnalisées
Pour déterminer si un réglage est nécessaire, vous pouvez écrire une fonction, ucwtsr, que l'ordonnancement utilisera quand la Règle de règlage sur une opération sera réglée sur une règle utilisateur (positions de règle 3 à 39).
Nom de la fonction
Votre fonction personnalisée peut porter n'importe quel nom qui n'est pas un nom de fonction standard exécutable par l'utilisateur.
Arguments
Cndensé
#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. */
La fonction ucwtsr doit accepter cinq arguments dans l'ordre suivant :
- Un pointeur vers une charge (type : LOAD*).
- Type de ressource ("R"essource) (type : char).
- Pointeur vers une ressource (type : annuler*).
- Un pointeur vers une opération (type : JOBSTEP*).
- Règle de paramétrage (type : int).
Valeurs retournées
La fonction doit retourner 1 pour une réussite (le réglage doit être fait) et 0 pour un échec (le réglage ne doit pas être fait). Type : int.
L'exemple suivant de ucwtsr configure une ressource chaque fois que la pièce et/ou l'opération est modifiée pour les ressources.
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);
}
Installation de la fonction personnalisée
Il n'est pas nécessaire d'installer ucwtsr dans ucini1 car elle est automatiquement appelée lorsque la règle de réglage est supérieure à 2 (c'est-à-dire, un numéro de règle non-standard).