M语言入门

M语言基础学习

M语言,是微软新Oslo发展和面向服务策略的一部分,外文名为M Language,“M”(代表Microsoft),它是一种演算纸方式的编程语言。通过这种语言,用户可以用类似于数学公式的方式来编写算法,大大降低了编程所需的难度并节省了时间,从而让用户把主要的精力集中在算法的构思而不是编程上。

M Language常用的命令

1.1 set命令
给变量赋值,其它的写法:s 、S、set.
使用:
set flag=1 给变量赋值。
set ^xysglobal=1 给global赋值
set obj.prop=1 对对像属性赋值
set arr=[1,2,3,4] 给数组赋值
同时给多个变量赋值
set flag=1,code=2
set (flag,code,desc)=3
set (flag,code)=3,(desc,date)=4
条件赋值
set:code=2 flag=1 等价于 if code=2 set flag=1

1.2 Kill 命令
删除变量。其它写法 k、K
killflag删除一个变量
kill ^xysglobal 删除一个global
kill arr
kill a,b,c 同时删除多个变量
kill删除所有的变量(不带参数)
kill (a,b) 删除除a,b 之外的所有参数
kill:a=1 b 条件删除变量,等价于if a=1 kill b 当a=1 表达式为1时执行 killb命令

1.3 New命令
创建空的局部变量环境,其它写法 new、n、N
new a 初始化1变量 相当于killa
new a,b 初始化多个变量
new (a,b) 初始化除a,b 以外的变量
new初始化所有的变量
new:a=1 b 条件初始化变量

1.4 Write命令
显示输出到当前设备 其它写法 w、W、write
write a 输出一个变量
writea,! 输出一个值带一个回车。
write a,b,c 同时输出多个变量
write ^xysglobal 输出global的值
write输出所有的变量(不带参数)

1.5 程序流控制命令
If、Else、For、Quit、Do、Break、Continue、While Return
If 然后根据表达式的真值选择要执行的代码块,其它写法 i、if
Else配合if命令
if a=1{
set b=2
}else{
Set b=3
}
if a=1 set b=2
else set b=3
当使用.时,要和do配合使用
if a=1 do
.set b=2
else do
.set b=3
For 重复执行一个代码块.其它写法 for、f
for i=1:1:10{
s b=1
}
for i=1:1:10 do
.s b=2

Quit 终止循环结构或例程的执行 其它写法 q、quit
If a=2 do
.set b=1
.quit
.set b=3
set b=4

for i=1:1:10 do
.set b=i
.quit:i=5

for i=1:1:10 quit:i=6 do
.set b=i
.quit:i=5

set i=0
for{
set i=i+1
Quit:i=10
}
Break 在断点中断执行。启用或禁用用户中断
一般用于程序调试使用

Continue 用于在for、while 代码块进行下一次循环。
for{
set i=i+1
continue:i=3
if i=4 continue
Quit:i=10
}

While 在条件为真时执行代码。

While a<10{
Set a=a+1
Quit:a=9
continue:a=8
}

Return 终止例程的执行。
Set b=0
While b<10{
If b=4 returnb
If b=5 quit
}

M Language常用的函数

2.1 日期和时间的函数
$HOROLOG 特殊变量 获取当前日期时间 其它写法 h 、 h、 hH

Z D a t e 把 ZDate 把 ZDateH格式的日期按指定格式。 其它写法 $zd
Write z d ( zd( zd(h,1)
Write z d ( zd( zd(h,2) $zd 第二个参数是格式代表的数字

$ZDateH $ZDate反函数
Write z d h ( “ 2019 − 08 − 16 ” , 3 ) 日 期 字 符 串 的 格 式 和 zdh(“2019-08-16”,3) 日期字符串的格式和 zdh(20190816,3)zdh函数的第二个参数要一致

Z T i m e 把 ZTime 把 ZTimeH格式的时间按指定格式。
Write z t ( 23999 , 1 ) W r i t e zt(23999,1) Write zt(23999,1)Writezt(23999,2)

Z T i m e H ZTimeH ZTimeHZTime 反函数

Z D a t e T i m e 把 ZDateTime 把 ZDateTimeH格式的日期时间按指定转换
Write Z D a t e T i m e ( ZDateTime( ZDateTime(H,1)
Write z d t ( zdt( zdt(h,2)

$ZDateTimeH $ZDateTime的反函数

2.2 $Piece函数
返回由分隔符标识的子字符串的字符串函数。 其它写法 p 、 p、 pP。

Set str=”abcbcdabc”
Write $piece(str,”^”,1) 取str变量中以^分隔符的第1位的字符串
$piece(str,”^”) 等价于 Write $piece(str,”^”,1)

Set str=”abcde^f”
Write $piece(str,”^”,2,5) 返回str中以^为分隔符的第2位到第5位,包含分隔符

2.3 $Order函数
返回本地变量或全局变量的下一个本地变量或下标。其它写法 o 、 o、 oO
一般用于数组和global的遍历
Set arr(1)=1,arr(2)=2,arr(3)=3
Write $o(arr(0))
Write $o(arr(1))

Set ^xysglobal(1)=1, ^xysglobal(2)=2, ^xysglobal(3)=3
Write $o(^xysglobal(0))
Write $o(^xysglobal(3))
Write $o(arr(0),1) 1 代表从正序返回下一个索引
Write $o(arr(0),-1) -1 代表从倒序返回上一个索引

Write $o(arr(0)) 第二个参数没有默认从正序取下一个索引

2.4 $get函数
返回指定变量的数据值其它写法 $g
$get(a) 当变量a定义过,则返回a变量的值,否则返回空

$get(a,1) 当变量a定义过,则返回a变量的值,否则返回1

$get(^xysglobal(1))

$get(^xysglobal(1),2)

2.5 $Data函数
检查变量是否包含数据其它写法 $d
$Data(a) 当变量a存在,返回1,否则返回0

$Data(^xysglobal) 检查^xysglobal 是否存在

$Data 返回值是有四种 0,1,10,11
K ^xysglobal
$d(^xysglobal) 返回 0
Set ^xysglobal(1)=1
$d(^xysglobal) 返回 10
$d(^xysglobal(1)) 返回1
Set ^xysglobal=1
$d(^xysglobal(1)) 返回11

2.6 $Extract函数
按位置从字符串中提取字符的字符串函数其它写法 $e
Set str=”abcdefghijk”
Write $e(str,2,3) 返回bc从str取第2个到第3个字符
Write $e(str,2) 第三参数没传时 从第2个字符到最后

2.7 $Length函数
返回字符串表达式中字符数的字符串函数其它写法 L , L, Ll
Set str=”123abc”
Write $L(str) 返回6
Set str=”123abc李刚”
Write $L(str) 返回8

Set str=”123abc”
Write $L(str,”^”) 返回值是5,第二个参数不为空时返回的以第二参数为分隔符分隔的子串的个数。

2.8 $Char函数
将表达式的整数值转换为相应的ASCII或Unicode字符其它写法 $c()

$char(48) 返回0
$char(49) 返回1
$char(49,48) 返回10
$char(13,10) 返回是回车符

2.9 $ASCII函数
将字符转换为数字代码, $Char的反函数其它写法 A , A, Aa
$A(0) 返回48
$A(1) 返回49
Set str=”abcde”
$A(str) 返回 97,当str中有多个字符时,只返回第1个字符的数字代码
$A(str,2) 返回 98 当第二参数传入数字时,返回str对应位置的字符的数字代码,如果第二参数超过了str的字符长度则返回-1

2.9 $ListBuild及相关的函数
创建元素列表其它写法 L B , LB, LBlb
Set a=$lb(1,2,3,4)

Set a=$lb(1,”a”,”b”,”abc”)

Set a=””,b=””
Set c=$lb(23,34)
Set $lb(a,b)=c 结果是 a=23 b=34

Set a=$lb(2,3,1,3)
l i s t ( a , 4 ) 返 回 3 , list(a,4) 返回3 , list(a,4)3list 返回指定位置的值
Set $list(a,5)=10 给a第5个位置赋值

Set f=$lb(1,2)
W l i s t ( f , 3 ) 返 回 错 误 , 因 为 变 量 f 里 面 没 有 第 3 个 位 置 。 w r i t e list(f,3) 返回错误,因为变量f里面没有第3个位置。 write list(f,3)f3writelistget(f,3) 返回空值

L I S T T O S T R I N G 从 列 表 创 建 字 符 串 的 列 表 函 数 。 S e t f = LISTTOSTRING 从列表创建字符串的列表函数。 Set f= LISTTOSTRINGSetf=lb(1,2)
$LISTTOSTRING(f) 返回1,2
$LISTTOSTRING(f,”^”) 返回1^2
$LISTTOSTRING(f,””) 返回12

$LISTDATA 检查 列表或列表中指定位置的元素是否存在 其它写法 l d s e t a = ld set a= ldseta=lb(23,34)
$LISTDATA(a) 返回 1
$LISTDATA(b) 如果b没有定义时则返回0
$LISTDATA(a,3 ) a中不存在位置为3元素,则返回0

M Language常用运算符

运算符
+、-、*、/、\、#
\ 整数的除法
算术比较运算符<、>
字符串比较运算符=、[、]
_它是用来连接两个字符串的

& 与
! 或
‘= 非

这就是M语言的基础语法,微软用Cache数据库来编译M语言

  • 15
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值