Escribir una regla de programador personalizada

En determinados formularios de SyteLine, varias de las posiciones de reglas del programador se enumeran como definidas por el usuario. Por ejemplo, las posiciones 24-39 de la regla de secuencia se reservan para reglas definidas por el usuario. Una regla definida por el usuario es una parte personalizada de lógica que se escribe en una o más funciones C++ personalizadas. Las reglas definidas por el usuario permiten modelar situaciones de programación únicas que las reglas estándar podrían no admitir.

Por ejemplo, el fragmento a continuación de la función de inicialización ucini1 instala una función de clasificación de carga para la regla de secuencia 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. */
}

Para un descripción completa de cada función del programador invocable por el usuario, consulte la Guía de personalización de la programación disponible para su descarga en nuestra página de asistencia.

Convenciones de nombres, argumentos y valores de retorno

Para que se ejecuten correctamente, las funciones personalizadas deben aceptar los argumentos adecuados y devolver el valor adecuado para el tipo de regla. Los nombres de estas funciones no deben entrar en conflicto con los nombres de funciones que puede llamar el usuario. Debe hacer que el programador pueda acceder a sus funciones personalizadas. Para ello, llame a las funciones de instalación en la función de inicialización ucini1. Consulte estos temas para obtener más detalles sobre las siguientes reglas:

Directorio del código de usuario

El código de usuario compilado para el programador se aplica a todas las alternativas de la base de datos. El procedimiento de instalación crea un subdirectorio denominado USERCODE que contiene los archivos de compatibilidad del código de usuario. Debe crear un subdirectorio debajo de este con el mismo nombre que la base de datos SQL para que contenga los archivos de código fuente del usuario. El programador también busca el archivo DLL del código de usuario (USER.DLL) en este directorio.

Escribir para UNICODE

El programador utiliza Unicode para admitir problemas de cadenas internacionales. Para escribir código que pueda compilarse de forma condicional para Unicode, MBCS o ninguno, siga estas directrices de programación:

  • Utilice la macro _T para codificar cadenas literales de forma condicional para que sea transferible a Unicode. Por ejemplo: psqlda = dboptab (_T("MYBOM"), p_ssgvar->sgctrl.scprtds, DB_FETCH)
  • Cuando transfiera cadenas, preste atención a si la longitud de los argumentos de la función ha de estar en caracteres o en bytes. La diferencia es importante si utiliza cadenas Unicode.
  • Utilice versiones transferibles de las funciones de administración de cadenas de tiempo de ejecución C. Consulte la sección Manipulación de cadenas en la documentación de Microsoft Visual C/C++ para obtener una lista completa y más información.

    Por ejemplo:

    • _tcscpy instead of strcpy
    • _tcsncpy instead of strncpy
    • _tcscmp instead of strcmp
    • _tcsncmp instead of strncmp
    • _tcscat instead of strcat
    • _tcsncat instead of strncat
    • _tcschr instead of strchr
    • _stprintf instead of sprintf
  • Utilice los siguientes tipos de datos para caracteres e indicadores de caracteres:
    • TCHAR donde usaría char.
    • LPTSTR o TCHAR * donde usaría char*.
    • LPCTSTR donde usaría const char*.

Integración de las reglas personalizadas en el programador

Una vez que haya escrito las reglas personalizadas, debe enlazarlas en el sistema estándar.