> 文章列表 > 拓展系统函数

拓展系统函数

拓展系统函数

文章目录

  • 拓展系统函数
    • 使用方式
    • 拓展系统函数
      • 去除字符串首尾空格 `ZTRIM`
      • 按位置次数替换字符串 - `ZREPLACE`
      • 向上取整 - `ZROUNDUP`
      • 向下取整 - `ZROUNDDOWN`
      • 程序运行时间 - `ZRUNTIME`
      • `Query`运行时间 - `ZQUERYRRUNTIME`
      • 小数转分数 - `ZDECFRA`
      • 格式化日期- `ZFORMATDATE`
      • `MD5`加密 - `ZMD`
      • 重复目标字符串 - `ZREPEAT`
      • 精确查找包含字符串 - `ZCONTAIN`
      • 通用初始化对象 - `ZNEW`
      • 通用获取数据对象 - `ZOPENID`
      • 获取`sc`数据类型错误描述 - `ZSTATUSERRORTEXT`

拓展系统函数

  • 本篇介绍自定义的拓展系统函数。
  • 除去系统自带一些系统函数,选取一些常用方法作为拓展函数调用。
  • 系统函数调用非常方便快捷,一般调用简写函数使用$function(params)即可。

使用方式

  • 直接将CustomMethod.xml导入到Studio里即可。
    • 下载文件连接:
      • CSDN链接
      • 阿里云盘

注:有想实现其他功能自定义函数功能,请与我联系或底部留言。

拓展系统函数

去除字符串首尾空格 ZTRIM

去除字符串首尾空格。

ZTRIM(str)
ZTR(str)
  • str - 字符串。

示例

  • 全拼函数调用:
USER>w $ztrim("   y x   "),!
y x
  • 简写函数调用:
USER>w $ztr("   y x   "),!
y x

按位置次数替换字符串 - ZREPLACE

增强版系统函数$Replace,增加按位置次数替换字符串。

ZREPLACE(source  = "", findWhat  = "", replaceWith  = "", matchCase  = 1, start  = 1, repeatCount  = 0, startMode  = 0)
ZRE(source  = "", findWhat  = "", replaceWith  = "", matchCase  = 1, start  = 1, repeatCount  = 0, startMode  = 0
  • source - 字符串。
  • findWhat - 查找字符。
  • replaceWith - 替换字符。
  • matchCase - 大小写匹配。
  • start - 起始位置。
  • repeatCount - 重复次数。

示例

  • 全拼函数调用:
USER>W $zreplace("ayxb","yx","yaoxin",""),!
ayaoxinb
  • 简写函数调用:
USER>W $zre("ayxb","yx","yaoxin",""),!
ayaoxinb
  • 将目标字符替换为空:
USER>W $zreplace("ayxb","yx","","") ,!
ab
  • 替换第一次目标字符串:
USER>W $zreplace("ayxyxb","yx","","",1,1),!
ayxb
  • 替换两次目标字符串:
USER>W $ZReplace("ayxyxb","yx","yaoxin","",1,2),!
ayaoxinyaoxinb

向上取整 - ZROUNDUP

向上取整。

ZROUNDUP(num)
ZRU(num)
  • num - 小数。

示例

  • 全拼函数调用:
USER>w $zroundup(3.1)
4
  • 简写函数调用:
USER>w $zru(3.1)
4

向下取整 - ZROUNDDOWN

向下取整。

ZROUNDDOWN(num) 
ZRD(num)
  • num - 小数。

示例

  • 全拼函数调用:
USER>W $zrounddown(2.9)
2
  • 简写函数调用:
USER>W $zrd(2.9)
2

程序运行时间 - ZRUNTIME

获取程序运行时间,测试程序运行效率。

ZRUNTIME(className, methodName, params...)
ZRT(className, methodName, params...)
  • className - 类名称。
  • methodName - 查询名称。
  • params... - 逗号参数的串。

示例

  • 调用示例:
ClassMethod RunTime(a, b, c)
{h 1q a + b + c
}
  • 全拼函数调用:
USER>w $zruntime("M.Custom","RunTime",1,2,3)
1.000887
  • 简写函数调用:
USER>w $zrt("M.Custom","RunTime",1,2,3)
1.000084

Query运行时间 - ZQUERYRRUNTIME

测试Query程序运行效率,返回运行时间。

ZQUERYRRUNTIME(className, queryName, params...)
ZQT(className, queryName, params...)
  • className - 类名称。
  • queryName - 查询名称。
  • params... - 逗号参数的串。

示例

  • 全拼函数调用:
USER>w $zqueryruntime("%SYSTEM.License","Counts")InstanceLicenseUse:License Units:
授权的总数量 LU:300:
当前可用 LU:298:
最小可用 LU:285:
当前用户处于活动状态:2:
处于活动状态的最大用户数:15:
当前 CSP 用户处于活动状态:1:
处于活动状态的最大 CSP 用户数:14:
当前 CSP 会话处于宽限期:0:
处于宽限期的最大 CSP 会话数:12:
.000238
  • 简写函数调用:
USER>w $zqt("%SYSTEM.License","Counts")InstanceLicenseUse:License Units:
授权的总数量 LU:300:
当前可用 LU:298:
最小可用 LU:285:
当前用户处于活动状态:2:
处于活动状态的最大用户数:15:
当前 CSP 用户处于活动状态:1:
处于活动状态的最大 CSP 用户数:14:
当前 CSP 会话处于宽限期:0:
处于宽限期的最大 CSP 会话数:12:
.000243

小数转分数 - ZDECFRA

小数转分数。

ZDECFRA(num)
ZDF(num)
  • num - 小数。

示例

  • 全拼函数调用:
USER>w $zdecfra(0.1)
1/10
  • 简写函数调用:
USER>w $zdf(0.1)
1/10

格式化日期- ZFORMATDATE

格式化日期,将一种日期格式转换为另一种日期格式。

ZFORMATDATE(date, toFormat, fromFormt)
ZFT(date, toFormat, fromFormt)
  • date - 日期。
  • toFormat - 源格式化字符。
  • fromFormt- 目标格式化字符。

示例

  • 全拼函数调用:
USER>w $zformatdate("20/04/2022", "DD/MM/YYYY", "YYYY/MM/DD"),!
2022/04/20
  • 简写函数调用:
USER>w $zft("20/04/2022", "DD/MM/YYYY", "YYYY/MM/DD"),!
2022/04/20

MD5加密 - ZMD

快捷MD5加密。

ZMD(str)
  • str - 字符串。

示例

  • 函数调用:
USER>w $zmd("yx")
0B82A7C1AD82C6280C00E30B81BE916D

重复目标字符串 - ZREPEAT

高效重复目标字符串。

ZREPEAT(target, num)
ZRP(target, num)
  • target - 目标字符。
  • num - 重复字数。

示例

  • 全拼函数调用:
USER>w $zrepeat("yx",5)
yxyxyxyxyx
  • 简写函数调用:
USER>w $zrp("yx",10)
yxyxyxyxyxyxyxyxyxyx

精确查找包含字符串 - ZCONTAIN

按照分隔符分割的字符串列表匹配目标字符串,成功返回1,否则返回0

ZCONTAIN(str, target , del  = "^")
ZCO(str, target , del  = "^")
  • str - 分隔符列表字符串。
  • target - 目标字符。
  • del - 分隔符。

示例

  • 全拼函数调用:
USER>w $zcontain("1,111,222,333","11",","),!
0
  • 简写函数调用:
USER>w $zco("1,11,222,333","1",","),!
1

通用初始化对象 - ZNEW

该函数可以作为快捷调用类方法,或初始化对象使用。注:仅对象类可使用。

ZNEW(classname)
ZNW(classname)
  • classname - 类名。

示例

  • 示例方法:
ClassMethod Sum(a, b, c)
{q a + b + c
}
  • 全拼函数调用:
USER>w $znew("M.Custom").Sum(1,2,3)
6
  • 简写函数调用:
USER>w $znw("M.Custom").Sum(1,2,3)
6
  • zw 查看获取对象:
USER>zw $znw("M.Custom")
<OBJECT REFERENCE>[1@M.Custom]
+----------------- general information ---------------
|      oref value: 1
|      class name: M.Custom
| reference count: 2
+----------------- attribute values ------------------
|           (none)
+-----------------------------------------------------

通用获取数据对象 - ZOPENID

通过OPENID()方法,根据ID,通用获取持久类数据。

ZOPENID(classname,id)
ZID(classname,id)
  • classname - 类名。
  • id - ID标识。

示例

  • 全拼函数调用:
USER>w $zopenid("M.T.Person",1).name
yaoxin
USER>w $zopenid("M.T.Person",1).age
26
  • 简写函数调用:
USER>w $zid("M.T.Person",2).name
yx
USER>w $zid("M.T.Person",2).age
20

获取sc数据类型错误描述 - ZSTATUSERRORTEXT

由于系统中返回sc错误调用冗长,也不好记忆,可以此系统拓展函数获取sc数据类型错误描述。

ZSTATUSERRORTEXT(sc)
ZSC(sc)
  • sc - Status数据类型值。

示例

  • 方法示例:
Property flag As %Boolean;/// d ##class(M.Custom).Staus()
ClassMethod Staus()
{s obj = ..%New()s sc = obj.flagIsValid("2")w $zsc(sc),!
}
  • 全拼函数调用:
USER>d ##class(M.Custom).Staus()
错误 #7206: 数据类型值'2'不是有效的布尔值