第十九章 调用Callout Library函数 - 将 $ZF(-5) 与多个库和许多函数调用一起使用

这篇具有很好参考价值的文章主要介绍了第十九章 调用Callout Library函数 - 将 $ZF(-5) 与多个库和许多函数调用一起使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第十九章 调用Callout Library函数 - 将 $ZF(-5) 与多个库和许多函数调用一起使用

将 $ZF(-5) 与多个库和许多函数调用一起使用

Method GraphSomeData(loopsize As %Integer=100000) As %Status
 {
   // load libraries and get system-defined ID values
   set InputLibID = $ZF(-4,1,"c:\intersystems\iris\bin\inputlibrary.dll")
   set OutputLibID = $ZF(-4,1,"c:\intersystems\iris\bin\outputlibrary.dll")
   set fnGetData = $ZF(-4,3,InputLibID,"GetData")
   set fnAnalyzeData = $ZF(-4,3,OutputLibID,"AnalyzeData")
   set fnPlotPoint = $ZF(-4,3,OutputLibID,"PlotPoint")
   set fnWriteData = $ZF(-4,3,OutputLibID,"WriteData")

   // call functions from each library until we have 100000 good data items
   set count = 0
   do {
      set datapoint = $ZF(-5,InputLibID,fnGetData)
      set normalized = $ZF(-5,OutputLibID,fnAnalyzeData,datapoint)
      if (normalized'="") { set flatdata($INCREMENT(count)) = normalized }
   } while (count<loopsize)
   set status = $ZF(-4,2,InputLibID)   //unload "inputlibrary.dll"

   // plot results of the previous loop and write to output
   for point=1:1:count {
      set list = $ZF(-5,OutputLibID,fnPlotPoint,flatdata(point))
      set x = $PIECE(list,",",1)
      set y = $PIECE(list,",",2)
      set sc = $ZF(-5,OutputLibID,fnWriteData,flatdata(point),x,y,"outputfile.dat")
   }
   set status = $ZF(-4,2,OutputLibID)   //unload "outputlibrary.dll"
   quit 0
 }
  • $ZF(-4,1) 的调用将标注库 inputlibrary.dlloutputlibrary.dll 加载到虚拟内存中,并为其返回系统定义的库 ID

  • $ZF(-4,3) 的调用使用库 ID 和函数名称来获取库函数的 ID。返回的函数 ID 实际上是 ZFEntry 表序列号(请参阅上一章中的“创建 ZFEntry 表”)。

  • 第一个循环使用 $ZF(-5) 调用每个库中的函数:

    • inputlibrary.dll中的 GetData() 函数从某个未指定的源读取原始数据。
    • outputlibrary.dll 中的AnalyzeData() 函数可以对原始数据进行标准化,也可以拒绝它并返回一个空字符串。
    • 每个标准化数据点都存储在 flatdata(count) 中(其中第一次调用 ObjectScript 函数 $INCRMENT 创建 count 并将其初始化为 1)。

    默认情况下,循环获取 100000 个项目。由于两个库都已加载并保留在内存中,因此在两个不同库之间切换没有处理开销。

    • 第一个循环结束后,不再需要库 inputlibrary.dll,因此调用 $ZF(-4,2) 来卸载它。库outputlibrary.dll将保留在内存中。
    • 第二个循环处理数组 flatdata 中的每个项目并将其写入文件中某个未指定的位置:
      • 库函数 PlotPoint() 读取该项目并返回一个以逗号分隔的字符串,其中包含将绘制该项目的坐标(有关库函数如何返回多个输出参数的说明,请参阅“链接简介”)。
      • $PIECE 函数用于从字符串中提取坐标值 xy
      • 库函数 WriteData() 将项目和坐标存储在文件 outputfile.dat 中,其他应用程序将使用该文件来打印图形。
    • 第二个循环完成后,再次调用 $ZF(-4,2) 来卸载库outputlibrary.dll

以下部分介绍 $ZF(-6) 接口,它将库加载到与 $ZF(-5) 接口相同的虚拟内存空间中。文章来源地址https://www.toymoban.com/news/detail-794925.html

到了这里,关于第十九章 调用Callout Library函数 - 将 $ZF(-5) 与多个库和许多函数调用一起使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第十九章:Linux中安装MySQL

    查看是否安装过 MySQL MySQL 卸载 关闭 ,ysql 服务 查询当前 mysql 安装状态 卸载上述命令【任意一条就行】查询出的已安装程序 注意:务必卸载干净,反复执行 rpm -qa | grep -i mysql 确认是否有卸载残留。 删除 mysql 相关文件 删除 my.cnf 【 MySQL 的配置文件】 检查 /tmp 临时目录权限

    2024年02月13日
    浏览(43)
  • 【Vue3 第十九章】插槽 slot

    数字化管理平台 Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus 权限系统-商城 个人博客地址 在某些场景中,我们可能想要为子组件传递一些模板片段,让子组件在它们的组件中渲染这些片段。这就用到了插槽。 插槽是子组件中的提供给父组件使用的一个占位符,用 slot 表示,父组件可以

    2024年02月09日
    浏览(38)
  • 信安软考 第十九章 操作系统安全保护

    一、操作系统安全概述 1.1 操作系统安全概念与需求 操作系统(operating system),以下都简称OS 操作系统 负责计算机系统的资源管理,支撑和控制各种应用程序运行,为用户提供计算机系统管理接口 。操作系统是构成信息网络系统的核心关键组件,其安全可靠程度决定了计算

    2024年02月06日
    浏览(41)
  • 【Rust】Rust学习 第十九章高级特征

    现在我们已经学习了 Rust 编程语言中最常用的部分。在第二十章开始另一个新项目之前,让我们聊聊一些总有一天你会遇上的部分内容。你可以将本章作为不经意间遇到未知的内容时的参考。本章将要学习的功能在一些非常特定的场景下很有用处。虽然很少会碰到它们,我们

    2024年02月11日
    浏览(43)
  • 【Linux命令行与Shell脚本编程】第十九章 正则表达式

    正则表达式基础 定义BRE模式 扩展正则表达式 在sed和gawk中创建正则表达式,以得到所需的数据。 正则表达式是一种可供Linux工具过滤文本的自定义模板,使用元字符来描述数据流中的一个或多个字符. Linux工具(比如sed或gawk)会在读取数据时使用正则表达式对数据进行模式匹配

    2024年02月13日
    浏览(55)
  • TCP/IP网络编程 第十九章:Windows平台下线程的使用

    要想掌握Windows平台下的线程,应首先理解“内核对象”(Kernel Objects)的概念。如果仅介绍Windows平台下的线程使用技巧,则可以省略相对陌生的内核对象相关内容。但这并不能使各位深入理解Windows平台下的线程。 内核对象的定义 操作系统创建的资源有很多种,如进程、线程

    2024年02月16日
    浏览(51)
  • Hotspot源码解析-第十九章-ClassLoaderData、符号表、字符串表的初始化

    讲解本章先从一张图开始 众所周知,Java类的相关信息都是存储在元空间中的,但是是怎么存储的,相信很多读者是不清楚的,这里就不得不涉及到ClassLoaderDataGraph、classLoader、classLoaderData(简称CLD)和Klass的概念及他们四者的关系,这里简单描述下他们的概念,具体细节放到

    2024年01月17日
    浏览(47)
  • 第二十九章 Unity关节Joint

    关节组件将刚体连接到另一个刚体或空间中的固定点。关节施加使刚体移动的力,而关节限制功能可以限制该移动。Unity 提供的以下关节可以对刚体组件施加不同的力和限制,从而使这些刚体具有不同的运动: Hinge Joint铰链关节:使两个刚体像被连接在一个铰链上那样运动。

    2024年02月15日
    浏览(46)
  • 第五十九章 Unity 发布Android平台

    本章节我们讲解如何打包发布到安卓手机平台。要为 Android 构建和运行应用程序,必须安装 Unity Android Build Support 平台模块。还需要安装 Android 软件开发工具包(SDK)和原生开发工具包(NDK)才能在 Android 设备上构建和运行代码。默认情况下,Unity 会安装基于 OpenJDK 的 Java 开

    2024年02月14日
    浏览(43)
  • 第二十九章 使用消息订阅发布实现组件通信

    PubSubJS库介绍 如果你想在 React 中使用第三方库来实现 Pub/Sub 机制, PubSubJS 是一个不错的选择。它是一个轻量级的库,可以在浏览器和 Node.js 环境中使用。 PubSubJS 提供了一个简单的 API ,可以让你在应用程序中订阅和发布消息。你可以使用 npm 来安装它: 1-引入使用 2-首先订阅

    2024年02月02日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包