Écriture de règles de paramétrage 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).
Remarque :  Pour consulter un récapitulatif de la procédure de création des règles personnalisées, reportez-vous à la rubrique Ecriture de règles d'ordonnancement personnalisées. Pour obtenir plus de détails sur les fonctions décrites dans cette rubrique, reportez-vous au Guide de personnalisation de l'ordonnancement (Scheduling Customization Guide) qui peut être téléchargé sur notre site Web d'assistance technique.

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 :

  1. Un pointeur vers une charge (type : LOAD*).
  2. Un type de ressource ("R"essource) (type : char).
  3. Un pointeur vers une ressource (type : void).
  4. Un pointeur vers une opération (type : JOBSTEP*).
  5. 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).