Verfassen von anwenderdefinierten Reihenfolgeplanungsregeln

In einigen SyteLine-Masken sind einige Positionen von Reihefolgeplanungsregeln als anwenderdefiniert markiert. Dies trifft beispielsweise auf die Positionen 24 bis 39 der Reihenfolgeregel zu, die für anwenderdefinierte Regeln reserviert sind. Eine anwenderdefinierte Regel ist ein maßgeschneiderter Programmteil, der auf C++-Funktionen beruht. Mit anwenderdefinierten Regeln können Sie individuellen Terminierungssituationen begegnen, die von den Standardregeln nicht erfasst werden.

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:

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.