第二十章 调用Callout Library函数 - 使用 $ZF(-6) 按用户索引访问库

本文主要是介绍第二十章 调用Callout Library函数 - 使用 $ZF(-6) 按用户索引访问库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 第二十章 调用Callout Library函数 - 使用 $ZF(-6) 按用户索引访问库
  • 使用 `$ZF(-6)` 按用户索引访问库
      • 使用 `$ZF(-4,5)` 定义系统索引条目
      • 使用 `$ZF(-6)` 调用函数

第二十章 调用Callout Library函数 - 使用 $ZF(-6) 按用户索引访问库

使用 $ZF(-6) 按用户索引访问库

$ZF(-6) 函数提供了一个有效的接口,允许通过全局定义的索引访问 Callout 库,甚至可以由不知道共享库文件位置的应用程序使用。用户自定义索引表存储由库ID号和对应的库文件名组成的键值对。重命名或重新定位库文件时,可以更改与给定库 ID 关联的文件名。此更改对于按索引号加载库的应用程序来说是透明的。提供其他 $ZF 函数来创建和维护索引表,以及卸载 $ZF(-6) 加载的库。

本节讨论以下 $ZF 函数:

  • $ZF(-6) — 从用户指定的索引号引用的标注库中调用函数。如果尚未加载,则自动加载库。
  • $ZF(-4,4) — 卸载由索引号指定的标注库。
  • $ZF(-4,5)$ZF(-4,6) — 创建或删除系统索引表中的条目。系统索引对 IRIS 实例中的所有进程Global可用。.
  • $ZF(-4,7)$ZF(-4,8) — 创建或删除进程索引表中的条目。进程表在系统表之前被搜索,因此可以在进程中使用它们来覆盖系统范围的定义。

$ZF(-6) 接口与 $ZF(-5) 使用的接口类似(请参阅“使用 $ZF(-5) 通过系统 ID 访问库”),但有以下区别:

  • 在使用 $ZF(-6) 之前,必须创建库索引表。库索引值是用户定义的,可以在运行时更改或覆盖。
  • 库名称存储在索引中,索引不必由加载库的应用程序定义。可以在索引中更改库文件的名称和位置,而不会影响通过索引值加载库的依赖应用程序。
  • 没有单独的 $ZF 函数来加载库。相反,库由调用其函数之一的第一个 $ZF(-6) 调用自动加载。
  • 假设开发人员已经知道库函数 ID(由它们在 ZFEntry 表中的顺序确定),因此没有 $ZF 函数会返回给定名称和库索引值的函数 ID

以下示例演示了如何使用 $ZF(-6) 接口。第一个示例在系统索引表中定义了库 ID,第二个示例(可以从不同的应用程序调用)使用库 ID 来调用库函数:

使用 $ZF(-4,5) 定义系统索引条目

此示例将 100 设置为系统索引表中 mylibrary.dll 的库 ID。如果该编号已存在定义,则会将其删除并替换。

   set LibID = 100set status=$ZF(-4,4,LibID) // unload any existing library with this ID valueset status = $ZF(-4,5,LibID,"C:\calloutlibs\mylibrary.dll")  // set system ID
  • LibID是开发者选择的索引号。它可以是任何大于零的整数,保留的系统值 10242047 除外。
  • 如果已加载索引号为 100 的库,则应在替换条目之前卸载该库。
  • $ZF(-4,5) 的调用将索引号 100 与库文件 mylibrary.dll 相关联。

一旦在系统索引表中定义了库 ID,它就可供 IRIS 当前实例中的所有进程Global使用。

使用 $ZF(-6) 调用函数

本示例使用上一示例中创建的系统索引表。它使用 $ZF(-6) 加载库并调用库函数,然后卸载库。不必从在系统索引中定义库 ID 的同一应用程序调用此代码:

   set LibID = 100   // library ID in system index tableset FuncID = 2    // second function in library ZFEntry tableset x = $ZF(-6,LibID, FuncID, "arg1")   // call function 2set status = $ZF(-4,4,LibID)            // unload the library
  • LibID 是系统索引中定义的库 ID。该应用程序不必知道库名称或路径即可使用库函数。
  • FuncID 是库 LibIDZFEntry 表中列出的第二个函数的函数标识符。假设开发人员可以访问库代码 - (-6) 接口没有通过指定库函数名称来检索此数字的函数。
  • $ZF(-6) 的调用指定 100 作为库 ID2 作为函数 ID“arg1”作为传递给函数的参数。如果尚未加载,此调用将加载 Calloutmylibrary.dll,并将调用 ZFEntry 表中列出的第二个函数。
  • $ZF(-4,4) 的调用会卸载该库。由 $ZF(-6) 加载的每个库都将保持驻留,直到进程结束或由 $ZF(-4,4) 卸载。

这篇关于第二十章 调用Callout Library函数 - 使用 $ZF(-6) 按用户索引访问库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/594278

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa