Cache常用函数

SALTEST-FISH / 2023-07-26 / 原文

1.Set 设置变量 
set s=3 
2.write 输出变量 
w s 

 


3.kill 
删除所有变量或一些指定的变量或所有变量除了指定的变量。 
4.new 
初始化变量。 
5.Do(d):执行命令 
6.Quit(q): 结束执行一个函数并返回一个值 
7.$Horolog

$Horolog 包含了时间和日期,它们由逗号分开。第一部分是日期的数字,它是从1840 年12 月31 日开始计算日期的数字。第二部分是秒的数字,它是从午夜开始计算的。Global中的日期时间 都是以数字的形式存储的。 

 


8.$Piece(p)

格式::$Piece(expression,delimiter [,from[,to]]) 
返回一个或者多个被分隔符分开的子串。 

 


9.$Order(o)

格式:$Order(variable[,direction]) 
按照指定的方向返回一个变量的上一个或下一个索引 

 


10.$get(g)

返回一个变量的值 
如果变量存在则返回变量本身,不存在则返回空 
11.$data(d)

判断变量是否存在 
0:Global不存在 
1:存在且有值但是没有子节点 
10:有子节点,但是没有值 
11:有子节点且有值 
12.$length(l)

格式:Length(“ABCD”) 

Write $Length(“AB/CD/EF”,”/”) 
3

 

1..MAC文件是m语言,下面是test111.MAC

1 aa()
2   w "abc"
3   q 0
  • 最上面的名字和文件名一致
  • 然后是方法名
  • 文件名和方法名要顶头写,不能有空格 
    调用方式:DHC-APP>d aa^test111(),方法名有括号就带括号

2..cls是类文件,方法的写法与上面不一样

1 ClassMethod aa()
2 {
3     w "abc"
4     q 0
5 }

调用方式:DHC-APP>d ##class(web.test111).aa()

3.建立临时Global

 

1 DHC-APP>set ^TEMP=3//Global物理存储到数据库,terminal关了的话还会有,其他变量会消失
2 DHC-APP>S ^TEMP("A")=1//设置节点
3  
4 DHC-APP>s ^TEMP("B")=2

 

在Global里可以搜索到^TEMP 

 4.$h日期函数 

$ZDate 把$Horolog 格式的日期值按照指定格式显示 
+号表示第一个非数字符号前的数字 
$ZDateH 是$ZDate 的反函数 
$ZTime 把$Horolog 格式的时间值按照指定格式显示。 
$ZTimeH $ZTime 的反函数。

 1 DHC-APP>w $h
 2 63802,58589
 3 DHC-APP>w $zd(63802)
 4 09/07/2015
 5 DHC-APP>w $zd(63802,3)
 6 2015-09-07
 7 DHC-APP>w +$h
 8 63802
 9 DHC-APP>w $zd(+$h,3)
10 2015-09-07
11 DHC-APP>w $zdh("2015-9-7",3)
12 63802
13 DHC-APP>w $zdh("2024-9-7",3)-$zdh("2015-9-7",3)
14 3288
15 DHC-APP>w $zt(58543)
16 16:15:43
17 DHC-APP>w $zt(58543,2)
18 16:15
19 DHC-APP>w $zt(58543,3)
20 04:15:43PM
21 DHC-APP>w $zt($p($h,",",2))
22 17:07:50

 

5.$i 对每次运行的global产生唯一一个值
1 DHC-APP>w $i(^TEMP)
2 4
3 DHC-APP>w $i(^TEMP)
4 5
5 DHC-APP>w $i(^TEMP)
6 6

 

6.$e截取字符串

1 DHC-APP>s a="abcdef"
2  
3 DHC-APP>w $e(a,2)
4 b
5 DHC-APP>w $e(a,2,4)
6 bcd

 

7.for循环1加到100

 1 ClassMethod testfor()
 2 {
 3     s m=0
 4     f i=1:1:100 d
 5     .s m=m+i
 6     s sum=m
 7     q sum
 8 }
 9 DHC-APP>w ##class(web.test111).testfor()
10 5050

 

计算有多少个科室

 1 ClassMethod testfor()
 2 {
 3     s m=0
 4     s ctlocrowid=""
 5     //q和d,f和s空两个空格
 6     f  s ctlocrowid=$o(^CTLOC(ctlocrowid)) q:ctlocrowid=""  d
 7     .s m=m+1
 8     s sum=m
 9     q sum
10 }

 

8.Terminal查看Global 
zw ^STUDENT

9.buildIndices()重建索引指定的类