Verfassen von anwenderdefinierten Reihenfolgeplanungsregeln
Das folgende Codefragment der Initialisierungsfunktion ucini1 installiert beispielsweise eine Funktion zur Bestimmung der Rangfolge von Ladungen für die Reihenfolgeregel 39:
double myrule39(LOAD*);
void ucini1()
{
sedfrk(39, myrule39);
/* Install other user-defined rules here. */
}
double myrule39(LOAD*)
{
/* Insert your custom logic for myrule39 here. */
}
Eine vollständige Beschreibung der einzelnen, durch den Anwender aufrufbaren Funktionen für die Reihenfolgeplanung finden Sie im Handbuch für die Anpassung der Reihenfolgeplanung, das Sie von unserer Support-Website herunterladen können.
Namenskonventionen, Argumente und Rückgabewerte
Damit sie korrekt ausgeführt werden, müssen anwenderdefinierte Funktionen die für den Regeltyp gültigen Argumente akzeptieren und für den Regeltyp gültige Werte zurückgeben. Die Namen dieser Funktionen dürfen nicht zu Konflikten mit den Namen von Standardfunktionen führen, die von Anwendern aufgerufen werden können. Sie müssen Ihre anwenderdefinierten Funktionen für die Reihenfolgeplanung verfügbar machen, indem Sie in der Initialisierungsfunktion ucini1 Installationsfunktionen aufrufen. Weiterführende Informationen zu den einzelnen Regeln finden Sie bei den folgenden Themen:
- Anwenderdefinierte Reihenfolgeregeln verfassen
- Anwenderdefinierte Auswahlregeln verfassen
- Anwenderdefinierte Ressourcenzuteilungsregeln verfassen
- Anwenderdefinierte Rüstregeln verfassen
- Anwenderdefinierte Fertigungsauftrags-Freigaberegeln verfassen
- Verfassen von anwenderdefinierten Batch-Trennregeln
- Verfassen von anwenderdefinierten Batch-Freigaberegeln
- Verfassen von anwenderdefinierten Batch-Überschreibungsregeln
Anwendercode-Verzeichnis
Für die Reihenfolgeplanung kompilierter Anwendercode gilt für alle Alternativen in der Datenbank. Die Installationsprozedur erstellt ein Unterverzeichnis mit dem Namen USERCODE, das die unterstützenden Dateien für den Anwendercode enthält. Erstellen Sie in diesem Verzeichnis ein Unterverzeichnis mit dem Namen der SQL-Datenbank, in dem Sie die Quellcodedateien speichern. Die Reihenfolgeplanung sucht in diesem Verzeichnis nach der zugehörigen DLL-Datei (USER.DLL).
Schreiben für UNICODE
Die Reihenfolgeplanung unterstützt internationale Zeichenfolgenausgaben über Unicode. Folgen Sie diesen Programmierrichtlinien, um Code zu schreiben, der wahlweise für Unicode, MBCS oder keinen dieser Standards kompiliert werden kann:
- Verwenden Sie das Makro _T, um Literalzeichenfolgen zu codieren, die u.U. in Unicode portiert werden sollen. Zum Beispiel: psqlda = dboptab (_T("MYBOM"), p_ssgvar->sgctrl.scprtds, DB_FETCH)
- Wenn Sie Zeichenfolgen übergeben, müssen Sie darauf achten, ob die Länge von Funktionsargumenten in Zeichen oder in Bytes angegeben werden muss. Der Unterschied ist von Bedeutung, wenn Sie Unicode-Zeichenfolgen verwenden.
- Verwenden Sie portable Versionen der C-Laufzeit-Funktionen zur Behandlung von Zeichenfolgen. Weitere Informationen und eine vollständige Liste der Funktionen finden Sie im Abschnitt über Zeichenfolgenbehandlung in der Dokumentation zu Microsoft Visual C/C++.
Zum Beispiel:
- _tcscpy anstelle von strcpy
- _tcsncpy anstelle von strncpy
- _tcscmp anstelle von strcmp
- _tcsncmp anstelle von strncmp
- _tcscat anstelle von strcat
- _tcsncat anstelle von strncat
- _tcschr anstelle von strchr
- _stprintf anstelle von sprintf
- Verwenden Sie die folgenden Datentypen für Zeichen und Zeichenzeiger:
- TCHAR anstelle von char.
- LPTSTR oder TCHAR * anstelle von char*.
- LPCTSTR anstelle von const char*.
Einbinden der anwenderdefinierten Regeln in die Reihenfolgeplanung
Nachdem Sie Ihre anwenderdefinierten Regeln geschrieben haben, müssen Sie sie in das Standardsystem einbinden.