文章目录

  • 第104章 Caché 函数大全 $ZF 函数
  • 大纲
    • 参数
  • 描述
  • 参数
    • function_name
    • args
  • 注意
    • 用`$ZF`调用UNIX®系统服务
    • 在编码系统之间转换字符串
    • 以零结尾并计数的Unicode字符串
    • 错误信息
    • 从子进程和DLL执行

第104章 Caché 函数大全 $ZF 函数

从CachéObjectScript例程调用非CachéObjectScript程序或函数。

大纲

$ZF("function_name",args)

参数

  • function_name 要调用的函数的名称。
  • args 可选-传递给函数的一组参数值。

描述

$ZF函数的各种形式使可以从ObjectScript例程调用非ObjectScript程序(例如shell或操作系统命令)或函数。可以定义接口或链接到用Caché用其他语言编写的函数,并使用$ZF从ObjectScript例程调用它们。

$ZF也可以用于:

  • 生成一个子进程来执行程序或命令:$ZF(-100)
  • 加载动态链接库(DLL),然后从该库执行函数:$ZF(–3), $ZF(–4), $ZF(–5), $ZF(–6)

$ZF的这些实现将负数作为第一个参数。它们在各自的参考页中进行了描述。

参数

function_name

要调用的函数的名称用引号引起来,或者为负数。

args

args参数的形式为:arg1,arg2,arg3,… argn。参数可以包括诸如如何传递参数的描述以及要调用的C函数的入口点之类的项。

注意

$ZF调用UNIX®系统服务

Caché支持与KaTeX parse error: Can't use function '\textcircled' in math mode at position 14: \html@mathml{\̲t̲e̲x̲t̲c̲i̲r̲c̲l̲e̲d̲{\scriptsize R}…ZF中设置警报处理程序。通过使用这些UNIX®函数,可以区分实际错误,`中断和应重新启动的调用。

函数声明包含在cdzf.h中,并在下表中进行了描述:

声明 目标 注意
int sigrtclr(); 清除重试标志。 使用sigrtchk()之前应调用一次
int dzfalarm(); 建立新的SIGALRM处理程序。 在输入$ZF时,先前的处理程序将自动保存。退出时,它将自动恢复。用户程序不应更改任何其他信号的处理。
int sigrtchk(); 检查异步事件。 每当以下系统调用之一失败时应调用:open(), close(), read(), write(), ioctl(), pause(),当进程接收到信号时失败的任何调用。它返回指示用户应采取的操作的代码:-1 =没有信号。检查I / O错误。请参见errno变量的内容。0 =其他信号。从中断点重新开始操作。1 = SIGINT /。使用SIGTERM“返回0”从$ZF退出。系统会适当捕获这些信号。

在用于控制某些设备的典型$ZF函数中,应编写如下代码:适当地编码这些信号。

  IF ((fd = open(DEV_NAME, DEV_MODE)) < 0) {; Set some flags; Call zferror; return 0;}

如果进程收到信号,则开放系统调用可能会失败。通常,这种情况不是错误,应该重新启动操作。但是,根据信号,可能会采取其他措施。因此,要考虑所有可能性,请考虑使用以下C代码:

sigrtclr();WHILE (TRUE) {IF (sigrtchk() == 1) { return 1 or 0; }IF ((fd = open(DEV_NAME, DEV_MODE)) < 0) {switch (sigrtchk()) {case -1:/* 真实的设备错误 */; 设置标志Call zferrorreturn 0;case 0:/* 收到无害信号。重新开始。 */; 继续;case 1:/* 试图终止JOB。 */Do cleanup workreturn 1 or 0;}}ELSE { break; }/* 处理正常情况的代码: *//* open() 系统调用成功         */

请记住,除非通过dzfalarm(),否则不得设置任何信号处理程序。

在编码系统之间转换字符串

Caché通过$ZF参数类型t(或T)支持输入输出转换,可以使用以下格式指定:

Argument Purpose
t 指定当前进程I / O转换对象。
t// 指定默认的进程I / O转换表名称。
t/name/ 指定特定的I / O转换表名称。

$ZF通过放置在以下C结构中的计数字节字符串将转换后的字符串传送到外部过程:

typedef struct zarray {unsigned short len;unsigned char data[1]; /* 1 is a dummy value */} *ZARRAYP;

这也是用于b(或B)参数类型的结构。

以下$ZF示例函数执行往返转换:

#include cdzf.h
extern    int trantest();
ZFBEGIN
ZFENTRY("TRANTEST","t/SJIS/ T/SJIS/",trantest)ZFENDint trantest(inbuf,outbuf);ZARRAYP inbuf;         /* 缓冲区,其中包含在传递给此函数之前从内部Caché编码转换为SJIS编码的字符串 */
ZARRAYP outbuf;        /* 包含SJIS编码字符串的缓冲区,在将其传递回Caché环境之前,该字符串将转换回内部Caché编码 */
{int  i;/* 从输入参数缓冲区一次复制一个字节到输出参数缓冲区 */for (i = 0; i < inbuf->len; i++)outbuf->data[i] = inbuf->data[i];/* 设置输出参数缓冲区n中的数据字节数 */outbuf->len = inbuf->len;return 0;  /* Return success */
}

注意:从概念上讲,数据流入和流出$ZF外部过程,就好像外部过程是设备一样。 I / O转换的输出组件用于传递到外部过程的数据,因为数据“离开”了Caché环境。 I / O转换的输入组件用于从外部过程接收的数据,因为数据正在“进入”Caché环境。

如果未定义I / O转换的输出组件,并且应用程序尝试使用该I / O转换传递除空字符串以外的任何内容,则Caché返回错误,因为它不知道如何转换数据。

如果未定义I / O转换的输入组件,并且类型字符串的参数将该I / O转换与$ZF输出参数关联,则Caché返回错误,因为具有未定义转换的输出参数是无目的的。

以零结尾并计数的Unicode字符串

$ZF函数支持以零结尾的Unicode字符串和计数的Unicode字符串的参数类型。即使在内部不使用Unicode字符的Caché版本中也支持这些功能。

零终止的Unicode字符串和计数的Unicode字符串的参数类型具有以下代码:

Argument Purpose
w 指向以零结尾的Unicode字符串的指针。
s 指向计数的Unicode字符串的指针。

对于这两种参数类型,Unicode字符的C数据类型都是无符号的缩写。指向以零结尾的Unicode字符串的指针声明如下:

unsigned short *p;

指向已计数的Unicode字符串的指针被声明为指向以下C结构的指针:

typedef struct zwarray {unsigned short len;unsigned short data[1]; /* 1 is a dummy value */} *ZWARRAYP;

例如:

ZWARRAYP *p;

len字段包含Unicode字符数组的长度。

数据字段包含计数的Unicode字符串中的字符。 Unicode字符串的最大大小是$ZF字符串的最大大小,这是一个可更新的配置参数,默认为32767。

每个Unicode字符长两个字节。在将Unicode字符串声明为输出参数时,考虑到这一点很重要,因为Caché保留了可能传回的最长字符串的空间。使用默认字符串大小时,单个Unicode字符串参数的总内存消耗计算如下:

最多32767个字符*每个字符2个字节=总65534个字节。

这接近为所有$ZF参数分配的默认最大内存区域,即67584。该最大$ZF堆区域也是可更新的配置参数。

错误信息

$ZF堆区用完后,$ZF发出错误。 $ZF字符串堆栈用尽时,$ZF发出错误。当$ZF无法分配伙伴块时,它将发出<STORE>错误。

从子进程和DLL执行

$ZF函数可以将负数作为其第一个参数。这些负数指定支持产生的子进程和动态链接库(DLL)的功能。这些$ZF函数中的每一个都在单独的参考页中进行介绍。

第104章 Caché 函数大全 $ZF 函数相关推荐

  1. Caché 函数大全

    Caché 函数大全 Caché ObjectScript函数 第一章 Caché 函数大全 $ASCII 函数☆☆☆☆☆ 第二章 Caché 函数大全 $BIT 函数☆☆☆ 第三章 Caché 函数 ...

  2. 第一章 Caché 函数大全 $ASCII 函数

    文章目录 第一章 Caché 函数大全 $ASCII 函数 大纲 参数 描述 参数 expression position 示例 注意 支持Unicode 代理对 相关函数 第一章 Caché 函数大 ...

  3. 第五十七章 Caché 函数大全 $REPLACE 函数

    文章目录 第五十七章 Caché 函数大全 $REPLACE 函数 大纲 参数 描述 REPLACE和REPLACE和REPLACE和TRANSLATE 示例 第五十七章 Caché 函数大全 $RE ...

  4. 第八十三章 Caché 函数大全 $ZDATE 函数

    文章目录 第八十三章 Caché 函数大全 $ZDATE 函数 大纲 参数 描述 简单的$ZDATE格式 可自定义日期默认 参数 hdate dformat dformat Default dform ...

  5. 第八十二章 Caché 函数大全 $ZCSC 函数

    文章目录 第八十二章 Caché 函数大全 $ZCSC 函数 大纲 参数 描述 参数 n 示例 第八十二章 Caché 函数大全 $ZCSC 函数 余割函数. 大纲 $ZCSC(n) 参数 n 弧度角 ...

  6. 第八十四章 Caché 函数大全 $ZDATEH 函数

    文章目录 第八十四章 Caché 函数大全 $ZDATEH 函数 大纲 参数 描述 简单的$ZDATEH格式 可自定义的$ZDATEH格式 参数 date dformat dformat Defaul ...

  7. 第七十四章 Caché 函数大全 $WREVERSE 函数

    文章目录 第七十四章 Caché 函数大全 $WREVERSE 函数 大纲 参数 描述 示例 第七十四章 Caché 函数大全 $WREVERSE 函数 以相反的顺序返回字符串中的字符,识别出代理对. ...

  8. 第七十二章 Caché 函数大全 $WISWIDE 函数

    文章目录 第七十二章 Caché 函数大全 $WISWIDE 函数 大纲 参数 描述 示例 第七十二章 Caché 函数大全 $WISWIDE 函数 返回一个标志,该标志指示字符串是否包含代理对. 大 ...

  9. 第六十九章 Caché 函数大全 $WCHAR 函数

    文章目录 第六十九章 Caché 函数大全 $WCHAR 函数 大纲 参数 描述 第六十九章 Caché 函数大全 $WCHAR 函数 返回与识别代理项对的数字代码对应的字符. 大纲 $WCHAR(e ...

  10. 第112章 Caché 函数大全 $ZPOSITION 函数

    文章目录 第112章 Caché 函数大全 $ZPOSITION 函数 大纲 参数 描述 示例 第112章 Caché 函数大全 $ZPOSITION 函数 返回表达式中可以在指定字段宽度内容纳的字符 ...

最新文章

  1. ext2文件系统 - mke2fs
  2. GLSL实现图像处理
  3. 对SetViewportOrg和SetWindowOrg的理解
  4. JS 数据类型转换、创建对象
  5. 面向项目(十一)—— 库的使用
  6. Java面试题大全带答案
  7. 【简历】Android简历该这样写
  8. “燕云十六将”之三弟王静
  9. 08系统装iss_安全信息系统| ISS | 第1部分
  10. 当耐克用上了AI、AR技术,你的鞋也要放飞自我了?Just Do It !
  11. LSF集群基本概念介绍
  12. 不仅国产手机被撕下遮羞布,其实苹果和三星也已没了遮羞布
  13. [算法题]返回数组A的元素组成的小于n的最大数
  14. Python入门(10)——宝可梦数据集探索
  15. 2020年6月六级真题翻译:青藏铁路
  16. 计算机二级Python历年真题解答(第四套)
  17. 台式计算机的组成和工作过程,计算机的组成及工作原理【图文】
  18. python中换行符用法_python换行符是什么?
  19. JQuery Smart UI 简介(六) — 框架设计【后篇】(数据接口、后台框架)[简介系列完结]...
  20. redis list操作leftpop

热门文章

  1. 除了方文山,用TA你也能帮周杰伦写歌词了
  2. 深度学习笔记(15) 人的表现
  3. 脑机接口的技术与应用
  4. 201521123091 《Java程序设计》第11周学习总结
  5. 纯css按钮代码,纯CSS实现3D按钮效果实例代码
  6. jasper ireport
  7. OCCT 建模,VTK显示
  8. Aptana工具介绍
  9. 怎么把柱形图和折线图放在一起_Excel图表制作:柱形图和折线图的组合图案例...
  10. vb脚本实现电脑定时关机操作