Verfassen von anwenderdefinierten Rüstregeln

Um zu ermitteln, ob ein Rüstvorgang notwendig ist, können Sie die Funktion ucwtsr schreiben, die von der Reihenfolgeplanung verwendet wird, wenn die Rüstregel für einen Arbeitsgang so definiert wurde, dass sie eine anwenderdefinierte Rüstregel (Regelposition 3 bis 39) verwendet.
Hinweis:  Eine Zusammenfassung der beim Erstellen anwenderdefinierter Regeln durchzuführenden Schritte finden Sie unter Verfassen von anwenderdefinierten Reihenfolgeplanungs-Regeln. Weitere Informationen zu den in diesem Thema beschriebenen Funktionen finden Sie im Handbuch für die Anpassung der Reihenfolgeplanung, das Sie von unserer Support-Website herunterladen können.

Benennen der Funktion

Sie können einen beliebigen Namen für die Funktion wählen, solange es sich nicht um den Namen einer von Anwendern aufrufbaren Standardfunktion handelt.

Argumente

Übersicht


#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. */

Die Funktion ucwtsr muss fünf Argumente in der folgenden Reihenfolge akzeptieren:

  1. Einen Zeiger auf eine Ladung (Typ: LOAD*).
  2. Typ der Ressource ("R"essource) (Typ: char).
  3. Einen Zeiger auf eine Ressource (Typ: void*).
  4. Einen Zeiger auf einen Arbeitsgang (Typ: JOBSTEP*).
  5. Rüstregel (Typ: int).

Rückgabewerte

Die Funktion gibt im Erfolgsfall den Wert 1 (Rüsten erforderlich) und andernfalls den Wert 0 (kein Rüsten) zurück. Typ: int.

Das folgende Beispiel für die Funktion ucwtsr bewirkt das Rüsten einer Ressource, sobald sich das Teil und/oder der Arbeitsgang für die Ressourcen ändert.


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

Installieren der anwenderdefinierten Funktion

Es ist nicht erforderlich, die Funktion ucwtsr über die Funktion ucini1 zu installieren, da sie automatisch aufgerufen wird, wenn die Rüstregel eine Nummer größer als 2 aufweist (d. h, wenn es sich nicht um eine Standardregel handelt).