赞
踩
M语言,是微软新Oslo发展和面向服务策略的一部分,外文名为M Language,“M”(代表Microsoft),它是一种演算纸方式的编程语言。通过这种语言,用户可以用类似于数学公式的方式来编写算法,大大降低了编程所需的难度并节省了时间,从而让用户把主要的精力集中在算法的构思而不是编程上。
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
}
2.1 日期和时间的函数
$HOROLOG 特殊变量 获取当前日期时间 其它写法
h
、
h、
h、H
Z
D
a
t
e
把
ZDate 把
ZDate把H格式的日期按指定格式。 其它写法 $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(“2019−08−16”,3)日期字符串的格式和zdh函数的第二个参数要一致
Z
T
i
m
e
把
ZTime 把
ZTime把H格式的时间按指定格式。
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 把
ZDateTime把H格式的日期时间按指定转换
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、
p、P。
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、
o、O
一般用于数组和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,
L,l
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,
A,a
$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,
LB,lb
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)返回3,list 返回指定位置的值
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)返回错误,因为变量f里面没有第3个位置。writelistget(f,3) 返回空值
L
I
S
T
T
O
S
T
R
I
N
G
从
列
表
创
建
字
符
串
的
列
表
函
数
。
S
e
t
f
=
LISTTOSTRING 从列表创建字符串的列表函数。 Set f=
LISTTOSTRING从列表创建字符串的列表函数。Setf=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语言的基础语法,微软用Cache数据库来编译M语言
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。