IBM Books

Net.Data 语言环境指南


创建一个新的语言环境

在决定创建一个新的语言环境之前,请先确定与 Net.Data 一起提供的 IBM 语言 环境是否已经可以满足您的需要。如果还是决定创建一个新的语言环境,则必须完成 以下两个步骤:

  1. 构建一个 DLL 或共享库,用来实现想要提供的语言环境接口程序集。必须 提供 dtw_execute() 接口,并且所有提供的接口必须精确匹配在 dtwle.h C 语言头文件中定义 的原型。

    另外,对于 DLL 或共享库来说,所有的接口都必须是外部可用的, 以便 Net.Data 能够调用这些接口。

  2. 确定 ENVIRONMENT 配置语句,然后将它添加到 Net.Data 初始化文件。 请 参阅 "配置语言环境" 以获取有关细节。

使用简单的编辑操作,将一条 ENVIRONMENT 配置语句添加到初始化文件中。相比之下, 第一步“构建一个 DLL 或共享库”最为复杂。


语言环境程序设计

在能够构建一个语言环境之前,必须编写这个语言环境。请参阅附录 A. "语言环境模板"中 有关语言环境源文件的例子。在编写自己的语言环境时有几个要考虑的编程问题。以下章节讨论 了其中几个较常见的问题。

应当提供哪些语言环境接口?

如果您要编写自己的语言环境来访问 Net.Data 服务,可以使用附录 A. "语言环境模板"中 的模板。

如果您的语言环境需要分配资源或初始化数据,或者做任何局限于一个宏调用范 围内的处理,则考虑提供一个 dtw_initialize() 接口。在第一次调用您 的语言环境之前,对于每个宏调用都不应该多次调用这个接口函数。如果没有函数来调用 您的语言环境,则不调用 dtw_initialize() 接口。如果提供一个 dtw_initialize() 接口, 则也应选择提供一个 dtw_cleanup() 接口。对于每个宏调用,这个接口也只能调用一次。只有 调用了 dtw_initialize() 接口时才调用这个接口,并且它作为宏调用结束的一部分被调用。

dtw_getNextRow() 接口是极特别的,只有在作为一个数据库语言环境 的一部分,或作为能一次处理一行数据的语言环境的一部分时才是很有用的。

处理输入参数

输入参数总是作为 dtw_lei_t 结构的一部分被传递到 dtw_execute() 接口,这一 结构是唯一一个能传递到 dtw_execute() 的参数。这些参数按照在 Net.Data 宏 的 FUNCTION 模块定义中指定的顺序进行传递,即显式参数后面跟任何在初始化文件 中指定的隐式参数。 它们在 dtw_lei_t 结构中的 parm_data_array 字段中被传递, 每个参数都位于自己的 dtw_parm_data_t 结构中。 程序模板中的 processInputParms() 例行 程序显示了一种可能的处理输入参数的方法。

处理用户请求

一个语言环境怎样处理一个用户请求取决于该请求是怎样被接收的。 有几种不同的方法可用来将一个请求发送到您的语言环境:

处理输出参数

这完全取决于您的语言环境以及它怎样处理用户请求。但是,一旦语言环境具有了要 返回 Net.Data 宏的数据时,可通过修改 dtw_lei_t 结构的 parm_data_array 字段中传递 的参数值来处理输出。程序模板中的 processOutputParms() 例行程序显示了一种可能的 处理输出参数的方法,并显示了怎样设置字符串和表格参数的例子。

传送错误条件

一个函数调用的成功或失败可通过隐式 Net.Data 宏变量 RETURN_CODE 来传送。Net.Data 在 从一个调用返回到 dtw_execute() 接口之后就设置这个变量。它的值设置为 dtw_execute() 调用 本身的返回值。这个值然后被 Net.Data 用来处理 Net.Data 宏的 MESSAGE 模块(如果对于这个 函数调用指定了一个 MESSAGE 模块的话)。

如果没有指定一个 MESSAGE 模块,或者在指定的 MESSAGE 模块中没有哪一项来处理 dtw_execute() 的 返回码,则 Net.Data 显示 dtw_lei_t 结构的 default_error_message 字段中的内容。 这个字段可由语言环境在任何时候在 dtw_execute() 例行程序中设置。程序模板中 的 setErrorMessage() 例行程序显示了怎样设置 default_error_message 字段的一个例子。


[ 页的顶部 | 上一页 | 下一页 | 内容表 | 索引 ]