Écriture d'une règle d'ordonnanceur personnalisée
Par exemple, la partie située sous la fonction d'initialisation ucini1 permet d'installer une fonction de classement de charge pour la règle de séquence 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. */
}
Pour obtenir une description complète de chaque fonction Ordonnanceur exécutable par l'utilisateur, reportez-vous au Guide de personnalisation de l'ordonnancement (Scheduling Customization Guide) qui peut être téléchargé sur notre site Web d'assistance technique.
Règles de dénomination, arguments et valeurs de retour
Pour une exécution correcte, les fonctions personnalisées doivent accepter les arguments requis et générer la valeur adéquate pour le type de règle. Les noms de ces fonctions ne peuvent pas être en conflit avec les noms de fonctions standard exécutables par l'utilisateur. Vous devez rendre vos fonctions personnalisées accessibles à l'ordonnancement en exécutant les fonctions d'installation dans la fonction d'initialisation ucini1. Reportez-vous à ces rubriques pour des informations détaillées à propos des règles suivantes :
- Ecriture de règles de séquence personnalisées
- Ecriture de règles de sélection personnalisées
- Ecriture de règles d'affectation de ressources personnalisées
- Ecriture de règles de réglage personnalisées
- Écriture de règles de lancement d'OF personnalisées
- Ecriture des règles de séparation de lot personnalisées
- Écriture des règles de lancement de lot personnalisées
- Ecriture des règles de lancement forcé de lot personnalisées
Répertoire du code utilisateur
Le code utilisateur compilé pour l'ordonnancement s'applique à toutes les alternatives de la base de données. La procédure d'installation crée un sous-répertoire nommé USERCODE qui contient les fichiers supportant le code utilisateur. Il est recommandé de créer un sous-répertoire sous celui qui précède et de le nommer comme votre base de données SQL pour y enregistrer les fichiers sources de votre code utilisateur. L'ordonnancement recherche également le fichier DLL de code utilisateur (USER.DLL) dans ce répertoire.
Ecriture pour UNICODE
L'ordonnancement utilise Unicode pour prendre en charge les problèmes de chaîne internationale. Pour écrire ce code qui peut être compilé pour Unicode, pour MBCS ou ni pour l'un ni pour l'autre, suivez les consignes de programmation ci-dessous :
- Utilisez la macro _T pour coder des chaînes littérales afin qu'elles soient transférables vers Unicode. Par exemple : psqlda = dboptab (_T("MYBOM"), p_ssgvar->sgctrl.scprtds, DB_FETCH)
- Si vous passez des chaînes, vérifiez si les arguments de fonction demandent une longueur en caractères ou en octets. La différence est importante si vous utilisez des chaînes Unicode.
- Utilisez des versions transférables des fonctions de manipulation de chaînes C d'exécution. Reportez-vous à la rubrique consacrée à la manipulation des chaînes dans la documentation Microsoft Visual C/C++ pour une liste complète et de plus amples informations.
Par exemple :
- _tcscpy au lieu de strcpy
- _tcsncpy au lieu de strncpy
- _tcscmp au lieu de strcmp
- _tcsncmp au lieu de strncmp
- _tcscat au lieu de strcat
- _tcsncat au lieu de strncat
- _tcschr au lieu de strchr
- _stprintf au lieu de sprintf
- Utilisez les types de données suivants pour les caractères et les indicateurs de caractères :
- TCHAR pour caractère.
- LPTSTR ou TCHAR * pour caractère *.
- LPCTSTR pour caractère constant *.
Intégration des règles personnalisées dans l'ordonnancement
Une fois que vous avez rédigé vos règles personnalisées, vous devez les lier dans le système standard.