开发工具包解释器是开发工具包运行时系统的核心,它执行构成开发工具包应用程序的语句与表达式。
当开发工具包解释器查找没有明确指定目录的 .kb 文件时,则它以下列顺序查找目录:
开发工具包解释器通过下列语法接受命令提示符处的自变量:
kml [option ...] .kb file
开发工具包解释器的有效自变量列于下表。
注:在 UNIX 中这些自变量都大写。
变量 | 值 | 注释 |
-u<path> | Use | 将给定路径中的目录添加到要查找的目录列表。当开发工具包解释器找到对应 root .kb 文件所用 .kb 文件的 .kbc 文件时会发生上述情况。(root .kb 文件是其他 .kb 文件的父级。). 该路径可以由多个以分号分隔的限定目录名构成。 注: UNIX 要求使用冒号。 |
-t | Trace (Debugger) | 以跟踪模式启动开发工具包解释程序。开发工具包解释器在执行 root .kb 文件的第 1 行之前进入开发工具包调试器。 |
-l | Log | 使开发工具包解释器向名为 kml.log 的文件写入日志消息。对于 kml.log 文件中的每个语句来说,该操作都发生在当前目录中。应慎重使用该选项,因为它会占用大量磁盘空间,并降低应用程序执行的速度。 |
-o | Optimization Off | 关闭需要装入 .kbc 文件。 |
-? -HELP -H |
帮助 | 显示它所接受的命令行开关的简要总结。 |
-d | DLLname | 在程序初始化期间"预装入"dll。该操作主要用于开发期间的调试目的。 |
-c | Directory | 在程序初始化期间更改当前驱动器和/或目录。 |
-f | KBCfilename | 用作指定要装入一个或多个 kbc 文件的替换方法。可在命令提示符处多次指定 -f=<filename>。此外,可将多个 kbc 装入不通过 USES 链路关联的进程。尽管 .kbc 文件在分析时不知道关于其他 .kbc 文件的情况,但它们仍通过 CallFunction 语句进行来回调用。root .kb 文件总是在命令提示符处由 -F 指定的上一个文件。 |
-p | netPort | 支持开发工具包联网扩展。 |
下表总结了开发工具包解释器报告的错误情况。
错误 | 说明 |
试图封装外部例行程序<routine>的开发工具包自变量时类型转换失败。 | 作为自变量输入给外部例行程序的值无法转换为该例行程序所需类型。 |
试图将从外部例行程序<routine>返回的值转换回开发工具包格式时出现内部错误。 | 该错误指的是下溢情况,在这种情况下,从外部例行程序返回的值与外部例行程序的说明类型不一致。 |
封装外部例行程序<routine>的自变量列表超出可用的最大存储空间。 | 外部例行程序的整个自变量列表超出了开发工具包解释器规定的 4096 个字节限制。 |
调用外部例行程序<routine>时无法将 $UNKNOWN 转换为有效的 C/C++ 值。 | 向外部例行程序输入了一个未知值作为参数(或作为参数输入的记录字段),并且未为例行程序所需类型指定缺省值。无法向 C or C++ 例行程序输入该值。 |
内存不足 | 开发工具包解释器无法找到任何其他内存。 |
在"<filename>"中的行<line #>发现内部错误。 | 在开发工具包解释器内存在错误条款。请注意文件名和行号,并与 Tivoli 客户技术支持人员联系。 |
索引<n>出界。 | 该代码试图访问少于 n 项数组或列表中的第 n 项。 |
无法装入<filename>动态装入库(DLL)。 | 找不到指定的库。要确保该库存在并在您的路径中。 |
不执行功能<name>(<filename>)。 | 开发工具包解释器无法访问指定功能。要确保已安装了开发工具包的正确版本,且该版本是您系统上可用的唯一版本。 |
读取文件"<filename>"时出错。 | 该错误是由某个文件上的只读设置、某个不存在的或已删除的文件、磁盘或网络故障引起的。 |
$EventParm #<n> 不存在。有效取值范围是 1 到<n>。 | 请查看开发工具包脚本语言参考中事件的有效参数。 |
EventParm #<n>(<type>)的类型与指定的类型(<type>)不匹配。 | 请查看开发工具包脚本语言参考中事件的有效参数。 |
对 $EventParm #<n>的指定非法,因为它不是通过引用输入的。 | $EventParm 指定非法。在事件句柄的实例数据或全局变量中使用字段可避免该指定。 |
试图以无效模式<mode>打开文件"<filename>"。 | 请使用所给内部常量($Read、$Write 或 $Create)打开文件。 |
功能<name>的形式参数列表不受命令行自变量的约束。 | 应确保该功能的自变量类型正确。需要重新分析的过期 .kbc 文件也会导致这种错误。 |
无法打开文件"<filename>"。 | 该错误是由某个文件上的只读设置、某个不存在的或已删除的文件、磁盘或网络故障引起的。 |
文件不是已编辑的知识库:<filename>。 | 应确保指定 .kbc(非 .kb)文件的名称,该文件在当前目录下或在本章前面指定的一个路径中。有关详细信息,请参见查找 .kb 文件那一节。 |
文件<filename>是由分析器的过时版本分析的。 | 用 -b 参数重新分析(创建) .kb 文件可消除此问题。 |
未正确生成文件<name>.kbc。请重新分析相应的知识库。 | .kbc 文件已毁坏。必须重新分析。 |
与知识库<name>相关的文件<filename>过期。 | 用 -b 参数重新分析(创建)该文件可消除此问题。 |
Division by zero in <filename> | 使用开发工具包调试器确定 division by zero 的位置,并添加其他代码,以防这种情况的发生。 |
出现负数<n>的平方根。 | 使用开发工具包调试器确定发生这种情况的原因,并添加其他代码,以防止这种情况的发生。 |
试图向字符串"<name>"的字符 #<n>指定一个未知的值。 | 开发工具包代码试图执行如下操作:TYPES s : string; ACTIONS s[5] := $UNKNOWN; END; 使用开发工具包调试器确定发生这种情况的原因,并添加其他代码,以防止这种情况的发生。 |
不可识别的选项:<option> | 不识别在命令提示符处所用的开发工具包解释器语法。 |
在应用程序内定义了 65535 多种类型。 | 除非 .kb 文件极大,否则,这种错误很可能是由内部错误或已毁坏的 .kbc 文件引起的。请重新分析并重试。 |
无法用某个值替换字符串{{<reference string>}}。 | 在某种方式下该引用字符串无效。 |
发现无效赋值参数。要么是该参数的语法错误,要么是没有与标记相关的参数数据。 | 在 SQL 功能调用的语法中有错误。 |
名为"<name>"的条目有一个不被支持的类型(<typespec>)。 | 这种问题可能是由内部错误、过期或毁坏的 .kbc 文件引起的。请重新分析并重试。 |
知识库<name>没有入口例行程序。 | 一个有效的入口例行程序是一个满足下列需求的程序:
|
无法使<drive letter>成为缺省驱动器。 | 应确保存在一个具有给定盘符的驱动器。 |
无法使"<name>"成为当前目录。 | 应确保存在给定目录。 |
无法找到具有<filename>名称的文件。却使用<filename>。未来发行版本中将不支持该行为。 | 如果在 .kb 文件的 USES 段中指定一个 .kb 文件名,则它应使用与包含该 .kb 文件的文件相同的大小写形式。如果 .kb 文件名不使用同样的大小写形式,则开发工具包解释程序找不到该文件,并出现错误消息。 |