服务程序 是可运行过程和可用数据项的集合,可由其他 ILE 程序或服务程序轻松直接访问。 在许多方面,服务程序类似于子例程库或过程库。
服务程序提供其他 ILE 对象可能需要的公共服务; 因此名称服务程序。 操作系统提供的一组服务程序的一个示例是语言的运行时过程。 这些运行时过程通常包括诸如数学过程以及常见的输入和输出过程之类的项。
服务程序的 公共接口 由其他 ILE 对象可访问的导出过程和数据项的名称组成。 只有从构成服务程序的模块对象导出的那些项才有资格从服务程序导出。
程序员可以指定哪些过程或数据项可以为其他 ILE 对象所知。 因此,服务程序可以具有不可用于任何其他 ILE 对象的隐藏或专用过程和数据。
可以更新服务程序,而不必重新创建使用更新后的服务程序的其他 ILE 程序或服务程序。 对服务程序进行更改的程序员控制更改是否与现有支持兼容。
ILE 为您提供的控制兼容更改的方法是使用 绑定程序语言。 绑定程序语言允许您定义可导出的过程名称和数据项名称的列表。 特征符 是根据过程和数据项的名称以及以绑定程序语言指定这些过程和数据项的顺序生成的。 要对服务程序进行兼容更改,应将新过程或数据项名称添加到导出列表的末尾。 有关签名,绑定程序语言以及保护客户对服务程序的投资的更多信息,请参阅 绑定程序语言。
图 1 显示服务程序的概念性视图。 请注意,组成该服务程序的模块是组成 图 1中 ILE 程序对象 PGMEXAMP 的同一组模块。 服务程序 SPGMEXAMP 的先前签名 Sigyy 包含过程 P3 和 P4的名称。 对服务程序进行向上兼容的更改后,当前签名 Sigxx 不仅包含过程 P3 和 P4; 它还包含数据项 D 的名称。其他使用过程 P3 或 P4 的 ILE 程序或服务程序不必重新创建。
虽然服务程序中的模块可能具有 PEP ,但将忽略这些 PEP。 服务程序本身没有 PEP。 因此,与程序对象不同,服务程序不能是动态程序调用的目标。
图 1。 ILE 服务程序的概念视图
ILE *SRVPGM 对象的特征:
复制任何 ILE 语言中的一个或多个模块以生成 *SRVPGM 对象。
没有 PEP 与服务程序相关联。 因为没有 PEP ,所以对服务程序的动态程序调用无效。 将忽略模块的 PEP。
其他 ILE 程序或服务程序可以使用公共接口标识的此服务程序的导出。
将根据从服务程序导出的过程和数据项名称生成特征符。
只要先前的特征符仍然受支持,就可以替换服务程序而不影响使用它们的 ILE 程序或服务程序。
模块可以具有调试数据。
服务程序是数据项和可运行过程的集合。
弱数据只能导出到激活组。 不能将其作为从服务程序导出的公共接口的一部分。 有关弱数据的信息,请参阅 导入和导出概念中的 "导出"。