美文网首页
第十九章 调用Callout Library函数 - 将 $ZF

第十九章 调用Callout Library函数 - 将 $ZF

作者: Cache技术分享 | 来源:发表于2024-01-09 09:00 被阅读0次

第十九章 调用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) 接口相同的虚拟内存空间中。

相关文章

  • 第十九章 Caché 函数大全 $INCREMENT 函数

    第十九章 Caché 函数大全 $INCREMENT 函数 将指定的增量添加到变量的数值。 大纲 参数 varia...

  • #python入门3#函数

    调用官方函数 函数参考 https://docs.python.org/3/library/functions.h...

  • RStudio 自行判断安装调用包

    在R中,library() 与 require() 函数都可以调用包。不同之处在于,假设包未安装,library(...

  • [记录]iOS

    marshingc#调用oc的回掉函数不能用闭包实现 library not founddllimport选项,o...

  • 函数1

    python内置了很多函数,可以直接调用 http://docs.python.org/3/library/fun...

  • 函数式编程初探

    关于快速排序的函数式实现 函数式编程就像是数学中的函数调用,可以将函数反复嵌套调用,一般的调用思路是将问题转化为复...

  • Arcgis runtime for Android 100.5

    (九) 空间查询 通过调用从MapView的getCallout()获取Callout对象。官方api 传送门用法...

  • C函数的调用过程

    函数调用过程 当主函数调用子函数的时候: 在主函数中,将子函数的参数按照一定调用约定(参考调用约定),一般是从右向...

  • 第九章 SQL查询数据库(二)

    第九章 SQL查询数据库(二) 调用用户定义函数的查询 InterSystems SQL允许您在SQL查询中调用类...

  • 重构读书笔记-10_8-Replace_Parameter_wi

    重构第十章 8.Replace Parameter with Methods(以函数取代参数) 对象调用某个函数,...

网友评论

      本文标题:第十九章 调用Callout Library函数 - 将 $ZF

      本文链接:https://www.haomeiwen.com/subject/hrnondtx.html