Verfassen von anwenderdefinierten Rüstregeln
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:
- Einen Zeiger auf eine Ladung (Typ: LOAD*).
- Typ der Ressource ("R"essource) (Typ: char).
- Einen Zeiger auf eine Ressource (Typ: void*).
- Einen Zeiger auf einen Arbeitsgang (Typ: JOBSTEP*).
- 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).