编写定制排产器规则

在某些 SyteLine 表单上,排产器规则的一些位置被列为“用户自定义”。例如,“顺序规则”的位置 24-39 为用户自定义规则保留。一个用户自定义规则就是逻辑定制的一部分,该逻辑用一个或多个定制 C++ 函数编写。用户自定义规则使您能够模拟标准规则无法处理的独特排产情况。

例如,以下来自初始化函数 ucini1 的分段为顺序规则 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. */
}

有关每种用户可调用排产器函数的完整说明,请参见排产自定义指南,该指南可从我们的技术支持网站下载。

命名规则、自变量和返回值

要正确执行,定制函数必须接受正确的自变量,并为规则类型返回正确值。这些函数的名称一定不可与标准用户可调用函数的名称相矛盾。通过在初始化函数 ucini1 中调用安装函数,必须使定制函数可访问排产器。关于以下规则的详细信息,请参见如下主题:

Usercode 目录

为“排产器”编译的用户码适用于数据库中的所有选择项。安装程序创建一个名称为 USERCODE 的子目录,该 USERCODE 包括用户码支持文件。应在与 SQL 数据库有相同名称的文件下创建一个子目录以保留用户码源文件。排产器还在该目录找出用户码 DLL 文件 (USER.DLL)。

为 UNICODE 编写

“排产器”使用 Unicode 解决国际字符串问题。要编写为 Unicode、MBCS 或两者兼无可有条件编译的代码,遵循这些编程指导原则:

  • 使用 _T macro 将文字字符串有条件编码以移植到 Unicode。例如:psqlda = dboptab (_T("MYBOM"), p_ssgvar->sgctrl.scprtds, DB_FETCH)
  • 当忽略字符串时,注意函数自变量是否需要字符长度或字节长度。如果要使用 Unicode 字符串,这种差别很重要。
  • 使用可移植版本的 C 运行字符串处理函数。关于完整列表和详细信息,请参见 Microsoft Visual C/C++ 文档中“字符串处理”节。

    例如:

    • _tcscpy 而不是 strcpy
    • _tcsncpy 而不是 strncpy
    • _tcscmp 而不是 strcmp
    • _tcsncmp 而不是 strncmp
    • _tcscat 而不是 strcat
    • _tcsncat 而不是 strncat
    • _tcschr 而不是 strchr
    • _stprintf 而不是 sprintf
  • 为字符和字符指针使用以下数据类型:
    • 在使用 char 的场合使用 TCHAR。
    • 使用 char 所在的 LPTSTR 或 TCHAR *。
    • 使用 const char* 所在的 LPCTSTR。

将定制规则并入排产器

在编写定制规则后,必须将其链接到标准系统。