Writing Custom Setup Rules
Naming the Function
Your custom function can have any name that is not a standard user-callable function name.
Arguments
Summary
#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. */
Function ucwtsr must accept five arguments in the following order:
- A pointer to a load (Type: LOAD*).
 - Type of resource ("R"esource) (Type: char).
 - A pointer to a resource (Type: void*).
 - A pointer to an operation (Type: JOBSTEP*).
 - Setup rule (Type: int).
 
Return Values
The function should return 1 for success (setup should be done) and 0 for failure (setup should not be done). Type: int.
The following example of ucwtsr sets up a resource every time the part and/or operation changes for the resources.
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);
} 
                        	     Installing the Custom Function
It is not necessary to install ucwtsr in ucini1 because it is called automatically when the setup rule is greater than 2 (that is, a non-standard rule number).