输出命令 WRITE 无参数模式

84 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第46天,点击查看活动详情

  • 有参数write不输出变量名称只输出变量的值,例如对象实例属性的当前值。
ClassMethod Write7()
{
	s oref = ##class(%SYS.NLS.Format).%New()
	zw oref
	w oref.MonthAbbr
}

其中oref是对象引用,而MonthAbbr是对象属性名称。

注意,在对象表达式中使用点语法。在对象引用和对象属性名称或对象方法名称之间放置一个点。

无参数WRITE

  • 无参数Write列出所有定义的局部变量的名称和值。不列出进程私有GlobalGlobal或特殊变量。按以下格式列出定义的局部变量,每行一个变量。
    varname1=value1
    varname2=value2
  • 无参数Write将所有类型的局部变量值显示为带引号的字符串。规范数字和对象引用除外,显示标准数字时不带引号。
ClassMethod Write()
{
	s str = "fred"
	s str1 = +123.40
	s str2 = "456.7"
	s str3 = "789.0"
	s str4 = "+999"
	w
}

注意:小数以0结尾的字符串,认为是字符串。

  • 对象引用显示如下:myoref=<OBJECT REFERENCE>[1@%SQL.Statement]; JSON数组或JSON对象显示为对象引用(OREF)。
ClassMethod Write1()
{
	s oerf = ..%New()
	s obj = {}
	s array = []
	w
}

  • 位字符串值和列表值显示为带引号的字符串,数据值以编码形式显示。
ClassMethod Write2()
{
	s bStr = $factor(10)
	s list = $lb(1, 2, 3, 4)
	w
}
  • 无参数WRITE区分大小写的字符串排序顺序显示局部变量。
ClassMethod Write3()
{
	s A = "A"
	s B = "B"
	s a = "a"
	s a1 = "a1"
	s a11 = "a11"
	s a18 = "a18"
	s a2 = "a2"
	s aa = "yx"
	w
}
  • 无参数WRITE使用数字排序规则以下标树顺序显示局部变量的下标。
ClassMethod Write4()
{
	s a(10) = "a(10)"
	s a(2, 1) = "a(2, 1)"
	s a(2) = "a(2)"
	s a(1) = "a(1)"
	s a(1, 1) = "a(1, 1)"
	s a(1, 1, 1) = "a(1, 1, 1)"
	s a(1, 1, 2) = "a(1, 1, 2)"
	s a(1, 2) = "a(1, 2)"
	s a(1, 2, 1) = "a(1, 2, 1)"
	w
}
  • 无参数WRITE执行控制字符。显示定义控制字符的局部变量。
ClassMethod Write5()
{
	s str = "a" _ $char(10,13) _ "b"
	w
}