用TLC读取记录文件
教程概述
摘要目的:了解记录文件的结构,并学习如何使用TLC指令解析它们。
文件夹:
(开放)matlabroot
/工具箱/ rtw / rtwdemos tlctutorial /指南
在本教程中,您将使用一系列TLC脚本解释一个简单的结构化记录文件。您将了解记录是如何构造的,以及TLC如何构造%分配
而且% < >
令牌扩张指令用于处理它们。此外,本教程还演示了使用% foreach
,以及范围使用%,
.
本教程包括以下步骤,你应该按顺序执行:
记录文件结构-一些背景和一个简单的例子
解释记录—显示记录文件的内容
TLC脚本的解剖-解构演讲
修改
read-guide.tlc
- TLC实验传递并使用一个参数—从命令行传递参数到TLC文件
审查
记录文件结构
代码生成器将模型编译成一种称为记录文件的结构化形式,称为
.这样编译的模型文件在语法和组织上与源模型文件相似,因为它们包含一系列层次结构上嵌套的表单记录模型
.rtw
recordName {itemName itemValue}
项目名称按字母顺序排列。项目值可以是字符串或数字。数值可以是标量、向量或矩阵。花括号分隔了每个记录的内容,其中可能包含一个或多个项目,由空格、制表符或返回字符分隔。
在一个
文件中,顶级(第一个)记录的名称为模型
.rtwCompiledModel
.每个块由其中的子记录表示,子记录由块的名称标识。TLC可以解析格式良好的记录文件,如本练习所示。
下面的清单是TLC可以解析的有效记录文件,尽管它不能为其生成代码。注释用#表示:
文件:指南。rtw说明性的记录文件,不能被Simulink使用#注意:字符串值必须在引号中Top{#最外层的记录,称为金宝appTop日期“21- 8 -2008”#名称/值对命名为Top。日期员工{ # Nested record within the Top record FirstName "Arthur" # Alpha field Top.Employee.FirstName LastName "Dent" # Alpha field Top.Employee.LastName Overhead 1.78 # Numeric field Top.Employee.Overhead PayRate 11.50 # Numeric field Top.Employee.PayRate GrossRate 0.0 # Numeric Field Top.Employee.GrossRate } # End of Employee record NumProject 3 # Indicates length of following list Project { # First list item, called Top.Project[0] Name "Tea" # Alpha field Name, Top.Project[0].Name Difficulty 3 # Numeric field Top.Project[0].Difficulty } # End of first list item Project { # Second list item, called Top.Project[1] Name "Gillian" # Alpha field Name, Top.Project[1].Name Difficulty 8 # Numeric field Top.Project[1].Difficulty } # End of second list item Project { # Third list item, called Top.Project[2] Name "Zaphod" # Alpha field Name, Top.Project[2].Name Difficulty 10 # Numeric field Top.Project[2].Difficulty } # End of third list item } # End of Top record and of file
只要程序员知道记录和字段的名称,以及它们的预期内容,他们就可以组成TLC语句来读取、解析和操作记录文件数据。
解释记录
下面是一个TLC程序脚本的输出guide.rtw
,解释其记录,操作现场数据,并格式化描述,这些都是指向MATLAB®命令窗口:
使用TLC,您可以:*直接访问字段的值,例如%——计算为:"21-Aug-2008" * Assign contents of a field to a variable, e.g. "%assign worker = Top.Employee.FirstName" worker expands to Top.Employee.FirstName = "Arthur" * Concatenate string values, e.g. "%assign worker = worker + " " + Top.Employee.LastName" worker expands to worker + " " + Top.Employee.LastName = "Arthur Dent" * Perform arithmetic operations, e.g. "%assign wageCost = Top.Employee.PayRate * Top.Employee.Overhead" wageCost expands to Top.Employee.PayRate * Top.Employee.Overhead <- 11.5 * 1.78 = 20.47 * Put variables into a field, e.g. Top.Employee.GrossRate starts at 0.0 "%assign Top.Employee.GrossRate = wageCost" Top.Employee.GrossRate expands to wageCost = 20.47 * Index lists of values, e.g. "%assign projects = Top.Project[0].Name + ", " + Top.Project[1].Name..." "+ ", " + Top.Project[2].Name" projects expands to Top.Project[0].Name + ", " + Top.Project[1].Name + ", " + Top.Project[2].Name = Tea, Gillian, Zaphod * Traverse and manipulate list data via loops, e.g. - At top of Loop, Project = Tea; Difficulty = 3 - Bottom of Loop, i = 0; diffSum = 3.0 - At top of Loop, Project = Gillian; Difficulty = 8 - Bottom of Loop, i = 1; diffSum = 11.0 - At top of Loop, Project = Zaphod; Difficulty = 10 - Bottom of Loop, i = 2; diffSum = 21.0 Average Project Difficulty expands to diffSum / Top.NumProject = 21.0 / 3 = 7.0
这个输出来自guide.rtw
是通过调用TLC从MATLAB命令窗口,执行脚本称为read-guide.tlc
.现在就自己做吧,按照下面的步骤:
在MATLAB中,更改文件夹(
cd
)转到你的副本tlctutorial /指南
在工作文件夹中。为了产生刚刚列出的输出,处理
guide.rtw
TLC脚本read-guide.tlc
输入以下命令:TLC -v -r指南。rtw read-guide。tlc
注意命令用法:
的
- r
Switch(用于读)在本例中标识输入数据文件guide.rtw
.处理数据文件的TLC脚本由最后键入的令牌指定。
的
- v
switch (verbose)将输出导向命令窗口,除非TLC文件自己处理这个。
TLC脚本的解剖
现在您将分析刚才运行的脚本。每个“段落”的输出guide.tlc
在以下简短的部分中依次讨论:
代码编写约定
以下是一些基本的TLC语法和编码约定:
% %的评论 |
TLC注释,它不是输出 |
/*注释*/ |
注释,用于输出 |
%的关键字 |
TLC指令(关键字),以“% ” |
% < expr > |
TLC令牌运算符 |
. (期) |
范围操作符,例如,Top.Lev2.Lev3 |
... (行尾) |
语句延续(不输出换行符) |
\ (行尾) |
语句延续(输出换行符) |
localvarIdentifier |
局部变量以小写字母开头 |
GlobalvarIdentifier |
全局变量以大写字母开头 |
RecordIdentifier |
记录标识符以大写开始 |
存在() |
TLC内置函数以大写字母命名 注意:TLC标识符区分大小写。 |
有关详细信息,请参见TLC编码约定.
文件头
该文件read-guide.tlc
开始于:
文件:read-guide。tlc(这一行是tlc注释,不会打印)%% %%要执行此文件,键入:tlc -v -r guide。rtw read-guide.tlc%%Set format for displaying real values (default is "EXPONENTIAL") %realformat "CONCISE"
第1行到第4行—字符后面的一行文本
%%
作为注释处理(忽略,不解释或输出)。第5行-正如第四行文本中所解释的,是TLC指令(关键字)
% realformat
,它控制在输出中显示后续浮点数时的格式。这里我们想要最小化显示的数字。
令牌扩张
输出的第一部分由脚本行生成:
使用TLC,您可以:*直接访问字段的值,例如%assign td = "%" + "" % ——计算为:"% ”
第1行和第2行-(以及不包含TLC指令或标记的行)被简单地回显到输出流,包括前导和尾随空格。
第3行—创建一个名为
道明
并为字符串赋值% <最高。日期>
到它。的%分配
指令创建新变量并修改现有变量。它的一般语法是:可选的双冒号前缀指定被赋值的变量是全局变量。如果没有TLC, TLC将在当前作用域中创建或修改局部变量。%assign::variable =表达式第4行-显示
上一行允许TLC打印% <最高。日期>-- evaluates to:% <最高。日期>
没有扩张。它通过粘贴两个字面量来构造字符串。如在字符串处理附加,加号运算符将字符串连接为数字、向量、矩阵和记录。%assign td = "%" + "<顶部。约会>”第5行-计算(展开)记录
上面。日期
.更准确地说,它计算字段日期
存在于范围内前
.的语法% < expr >
导致表达expr
(可以是一条记录、一个变量或一个函数)来求值。这种操作有时被称为eval.请注意
不能嵌套
% < expr >
算子(即,% < foo % <吧> >
是不允许的)。请注意
当你使用
% < expr >
引号中的运算符,例如“% <最高。约会>”
, TLC展开表达式,然后将结果括在引号中。然而,将%分配
例如,在引号内,"%assign foo = 3"
,只是将引号括起来的语句回显到输出流。没有赋值结果(值喷火
保持不变或未定义)。一般作业
输出的第二部分由脚本行产生:
*将一个字段的内容分配给一个变量,例如% Assign worker = Top.Employee. firstname "% Assign worker = Top.Employee。FirstName"员工展开到Top.Employee.FirstName = %<员工>
第1行-回显到输出。
第2行-字段的赋值
FirstName
在上面。员工
将作用域记录到名为工人
.第3行—重复前面的语句,用引号括起输出。
第4行-解释下面的赋值并说明令牌扩展。令牌
% <工作>
扩大到亚瑟
.字符串处理附加
脚本的下一节演示了字符串连接,这是“
+
"操作符:*串联字符串值,例如%assign worker = worker + " " + Top.Employee. lastname "%assign worker = worker + " " + Top.Employee。LastName"员工扩展到员工+ " " + Top.Employee.LastName = "%<员工>"
第1行-回显到输出。
第2行-执行连接。
第3行-回显第2行到输出。
第4行-描述操作,其中变量连接到由空格字符分隔的字段。的另一种方法是不使用
+
运营商是另一种方法使用字段的求值,同样有效。%assign worker = "%% " 的
+
运算符是关联的,也适用于数字类型、向量、矩阵和记录:
数字类型-将两个表达式加在一起;两个操作数都必须是数字。例如:
*数字类型示例,例如Top.Employee. payrate = %Top.Employee. overhead = % 分配td = Top.Employee.PayRate + Top.Employee.GrossRate td = Top.Employee.PayRate + Top.Employee.Overhead td计算为% 输出: *数值类型示例,例如Top.Employee.PayRate = 11.5 Top.Employee.Overhead = 1.78 td = Top.Employee.PayRate + Top.Employee.Overhead td计算为13.28向量——如果第一个参数是一个向量,第二个参数是一个标量值,TLC将标量值附加到向量。例如:
输出:*向量示例,例如%assign v1 = [0,1,2,3] v1 is %%assign tp1d = Top.Project[1]。困难Top.Project[1]。难度% %分配v2 = v1 + tp1d v2 = v1 + Top.Project[1]。难度v2计算为:% *矢量示例,例如v1是[0,1,2,3]难度为8 v2 = v1 + Top.Project[1]。难度v2计算为:[0,1,2,3,8]矩阵——如果第一个参数是一个矩阵,第二个参数是一个与矩阵列宽相同的向量,TLC将该向量作为另一行追加到矩阵。例如:
输出:*矩阵示例,例如%assign mx1 = [[4,5,6,7];[8,9,10,11]] mx1 is %v1 is % %assign mx = mx1 + v1 mx = mx1 + v1 mx求值为% *矩阵示例,例如mx1是[[4,5,6,7];[8,9,10,11]] v1 = [0,1,2,3] mx = mx1 + v1 mx = [[4,5,6,7];[8,9,10,11];[0,1,2,3]]记录——如果第一个参数是一条记录,TLC会添加第二个参数作为参数标识符(带有其当前值)。例如:
输出:*记录示例,例如%assign StartDate = "August 28, 2008" StartDate is %%assign tsd = Top + StartDate Top + StartDate Top。StartDate的值为% *记录示例,例如StartDate is August 28, 2008 Top + StartDate Top。StartDate计算到2008年8月28日算术运算
TLC为数值数据提供了完整的算术运算符。在我们的TLC脚本的下一部分中,两个数值字段相乘:
*执行算术运算,例如:%assign wageCost = Top.Employee. payrate * Top.Employee. overhead "%assign wageCost = Top.Employee. payrate * Top.Employee. overhead "“工资成本”扩展到Top.Employee.PayRate * Top.Employee.Overhead…< - - - - - - % < Top.Employee。PayRate> * %<顶级员工。开销> = %<工资成本>
第1行-回显到输出。
2号线—
%分配
语句,用于计算TLC存储在局部变量中的值wageCost
.第3行-重复第2行的操作。
第4行和第5行-组成一个单一的语句。省略号(键入为三个连续的句号,例如,
...
)表示语句在下一行继续,但如果语句有输出,TLC不会插入换行符。要继续语句并插入换行符,请将省略号替换为反斜杠(\
).修改记录
一旦读入内存,就可以修改和操作记录,就像通过赋值创建变量一样。下一部分
read-guide.tlc
替换记录字段的值Top.Employee.GrossRate
:*将变量放入一个字段中,例如%assign Top.Employee.GrossRate = wageCost" %assign Top.Employee.GrossRate = wageCost" Top.Employee.GrossRate展开为wageCost = %对记录的这种更改是非持久性的(因为记录文件是TLC的输入;其他文件类型,如C源代码,是输出),但可能是有用的。
除此之外,您还可以使用多个TLC指令
%分配
修改记录:
% createrecord
创建新的顶级记录,还可以在其中指定子记录,包括名称/值对。 % addtorecord
向现有记录添加字段。新字段可以是名称/值对,也可以是现有记录的别名。 % mergerecord
组合一个或多个记录。第一条记录按顺序包含它本身以及命令指定的其他记录内容的副本。 % copyrecord
创建一个新记录为 % createrecord
,除非记录的组件来自您指定的现有记录。% undef var
删除(删除) var
(变量或记录)。如果var
是记录中的字段,TLC从记录中删除该字段。如果var
为记录数组(列表),TLC删除数组的第一个元素;其余的元素仍然可以访问。只能删除使用创建的记录% createrecord
或% copyrecord
.看到目标语言编译器指令有关这些指令的详细信息。
指数列表
记录文件可以包含具有相同标识符的列表或记录序列。我们的示例包含三个记录的列表,标识为
项目
在前
范围。列表引用被索引,按照它们在记录文件中出现的顺序从0开始编号。下面是TLC代码,用于编译名字
字段项目
列表:*值的索引列表,例如%assign projects = Top.Project[0]。名称+ "," + Top.Project[1].Name…+ ", " + Top.Project[2]。名字%assign projects = Top.Project[0]。名称+“,”+ Top.Project[1]。名字..." "+ ", " + Top.Project[2].Name" projects expands to Top.Project[0].Name + ", " + Top.Project[1].Name + ", " + Top.Project[2].Name = %的
Scope.Record [n] .Field
语法类似于C语言中用来引用结构数组中的元素的语法。虽然显式索引(如上面所示)是完全可以接受的,但在遍历整个列表时,通常更可取的方法是使用循环构造,如循环遍历列表.
循环遍历列表
按照惯例,记录文件中列表所占用的部分前面有一条记录,指示列表元素的数量。在
文件,这样的参数被声明为
模型
.rtw全国矿工工会
,在那里鉴别
用于下面列表中的记录的标识符。在
鉴别
guide.rtw
,项目
列表如下所示:NumProject 3 #表示下面列表的长度Project{#第一个列表项,称为Top。项目[0]名称“Tea”# Alpha字段名称,top .项目[0]。名称难度3 #数字字段Top.Project[0]。{#第一个列表项结束项目{#第二个列表项,称为Top。项目[1]名称“Gillian”# Alpha字段名称,top .项目[1]。名称难度8 #数字字段Top.Project[1]。项目{#第三个列表项,称为Top。项目[2]名称“赞福德”# Alpha字段名称,top .项目[2]。名称难度10 #数字字段Top.Project[2]。难度}#第三个列表项目结束因此,的价值
NumProject
描述有多少项目
记录发生。请注意
model.rtw
文件还可能包含以全国矿工工会
但不是列表大小的参数。TLC不要求列表大小参数从全国矿工工会
.因此,口译时要小心全国矿工工会
记录标识符。内置TLC功能鉴别
尺寸()
可以确定指定范围内的记录数量,从而确定列表的长度。最后一部分
read-guide.tlc
使用一个% foreach
循环,由NumProject
参数来迭代项目
列出并操作其值。*通过循环遍历和操作列表数据,例如%assign diffSum = 0.0 %foreach i = Top。NumProject -在循环的顶部,项目= %< top .Project[i].Name>;困难=…% < Top.Project[我]。难度> %分配diffSum = diffSum + Top.Project[i]。难度-循环底部,i = %;diffSum = %%endforeach %assign avgDiff = diffSum / Top。平均项目难度扩展为diffSum / Top。NumProject = % …/ % <。全国矿工工会项目> = % 你可能还记得,TLC输出是这样的:
在初始化求和变量之后*遍历和操作列表数据通过循环,例如-在循环的顶部,项目=茶;难度= 3 -循环底部,i = 0;diffSum = 3.0 -在循环的顶部,项目= Gillian;难度= 8 -循环底部,i = 1;diffSum = 11.0 -在循环的顶部,项目= Zaphod;难度= 10 -循环底部,i = 2;diffSum = 21.0平均项目难度扩展为diffSum / Top。NumProjects = 21.0 / 3 = 7.0diffSum
,一个% foreach
输入循环,带变量我
声明为循环计数器,迭代到NumProject
.循环的范围是遇到的所有语句,直到对应的% endforeach
达到(% foreach
循环可以是嵌套的)。请注意
循环迭代隐式地从0开始,范围比指定上限的索引小1。循环索引是循环体的局部索引。
修改
read-guide.tlc
既然你已经学习了
read-guide.tlc
,是时候修改它了。本练习介绍了两个重要的薄层色谱设施,文件控制而且范围控制.类中实现这两个read-guide.tlc
脚本。文件控制基础知识
TLC脚本几乎总是以字符流的形式产生输出。输出通常指向一个或多个缓冲区和文件,它们统称为流.到目前为止,您已经从
read-guide.tlc
到MATLAB命令窗口,因为您包含了- v
打开命令行。通过省略来证明这一点- v
当你奔跑read-guide.tlc
.类型TLC -r指南。rtw read-guide.tlc似乎什么都没有发生。事实上,脚本被执行了,但是输出被指向一个空设备(有时称为“位桶”)。
有一个活动输出文件,即使它是空的。要指定、打开和关闭文件,使用以下TLC指令:
%openfile streamamid ="filename", "mode" %closefile streamamid %selectfile streamamid如果不指定文件名,则后续输出流到命名为的内存缓冲区
streamid
.如果没有指定模式,TLC将打开文件进行写入并删除任何现有内容(受制于系统级文件保护机制)。有效的模式标识符为一个
(附加)w
(写,默认)。把这些字符用引号括起来。的
% openfile
指令创建一个文件/缓冲区(在w
模式),或打开一个现有的一个
模式)。注意文件规格要求的等号。可以打开多个流进行写入,但一次只能激活一个流。要切换输出流,请使用% selectfile
指令。在使用完文件之前,不需要关闭它们。默认的输出流,可以使用流ID重新指定
NULL_FILE
,是零
.另一个内置流是STDOUT
.当使用% selectfile
,STDOUT
指令输出到MATLAB命令窗口。请注意
的流
NULL_FILE
而且STDOUT
总是开放的。用% openfile
生成错误。使用% selectfile
激活它们。该指令
% closefile
关闭当前输出文件或缓冲区。直到一个% openfile
或者一个% selectfile
指令,则输出到先前打开的流(如果不存在,则输出为null)。使用% selectfile
指定一条开放的溪流供读或写。在实践中,许多TLC脚本将输出数据写入单独的缓冲区,然后按顺序选择这些缓冲区,并将其内容假脱机存储到一个或多个文件中。实现输出文件控制
在你的
tlctutorial /指南
文件夹,找到文件read-guide-file-src.tlc
.该文件提供的版本包含注释和添加的三行文本。编辑此文件以实现输出文件控制,如下所示:
开放
read-guide-file-src.tlc
在文本编辑器中。将文件另存为
read-guide-file.tlc
.注意以。开头的五个注释行
% % - - - - - - >
.在每个注释下面,插入一个TLC指示。
另存为
read-guide-file.tlc
.执行
read-guide-file.tlc
使用以下命令:TLC -r指南。rtw read-guide-file.tlc如果成功,TLC将创建该文件
guidetext.txt
其中包含预期的输出,MATLAB命令窗口显示***输出被定向到文件:guidetext.txt ***我们几乎完成了…***处理完成。如果您没有看到这些消息,或者没有生成文本文件,请检查材料并重试。如果问题仍然存在,检查
read-guide-file.tlc
在指导/解决方金宝搏官方网站案
子文件夹查看应如何指定文件控件。范围基本知识
记录文件结构解释记录的层次组织。每条记录都存在于由其嵌套的记录定义的范围内。示例文件,
guide.rtw
,包含以下作用域:前顶。员工上面。项目[0]。项目[1]。项目[2]若要引用字段或记录,请指定其作用域,即使不存在包含该标识符的其他上下文。例如,在
guide.rtw
,田野FirstName
只存在于作用域中上面。员工
.你必须把它称为Top.Employee.FirstName
无论何时访问它。当模型显示深度嵌套的作用域时,这可能导致极其冗长且容易出错的标识符。例如:
CompiledModel.BlockOutputs.BlockOutput.ReusedBlockOutput此标识符的范围很长,并且具有类似的项目名称,您很容易输入错误。
的
%和% endwith
指令减轻了编写TLC脚本的负担,并阐明了它们的控制流程。语法是%with记录名[TLC语句]%endwith每一个
%,
最后是一个% endwith
,这些对可能是嵌套的(但不重叠)。如果RecordName
位于顶层之下,则不需要在其描述中包括顶层作用域。例如,使当前的范围guide.rtw
上面。员工
,您可以指定%with员工[TLC报表]%以自然地,
%与高层。员工
也是有效的语法。一旦用括号括起来%和% endwith
, TLC语句中的记录标识符不需要指定它们的外部作用域。但需注意以下条件:
您可以访问当前以外的记录
%,
范围,但必须完全限定它们(例如,使用记录名称和字段)。对象中的记录赋值时
%,
指令,你必须完全限定他们。使用变更范围
%,
在本练习的最后一部分中,您将修改TLC脚本
%和% endwith
指令。方法导致的范围更改,还需要编辑记录标识符名称(但不是本地变量的名称)%,
指令。
打开TLC脚本
read-guide-scope-src.tlc
在文本编辑器中。将文件另存为
read-guide-scope.tlc
.注意开始的注释行
% % - - - - - - >
.在每个注释下,插入一个TLC指令或修改已经存在的语句。
另存为
read-guide-scope.tlc
.执行
read-guide-scope.tlc
使用以下命令:TLC -v -r指南。rtw read-guide-scope.tlc输出应该与from完全相同
read-guide.tlc
,除了您可能通过缩进代码部分而引入的空白%和% endwith
或者消去空行。类中完全指定作用域
%,
上下文不是错误,它只是不必要的。然而,在将其分配给记录时未能完全指定其范围(例如,%assign GrossRate =工资成本
)无效。如果运行脚本导致错误,请检查上面关于范围的讨论并进行编辑
read-guide-scope.tlc
消灭它们。作为最后的手段,检查read-guide-scope.tlc
在/金宝搏官方网站解决方案
子文件夹查看在本练习中应该如何处理作用域。有关其他信息,请参见模型中的作用域。rtw文件而且变量作用域.
传递并使用一个参数
可以使用TLC命令和内置函数将参数从命令行传递到正在执行的TLC文件。最常用的命令开关是
——一个
,它分配任意变量。例如:TLC -r输入。RTW -avar=1 -afoo="abc" vars.tlc传递这对字符串的结果
——一个
与在正在执行的文件中声明和初始化局部变量相同(在这里,vars.tlc
).例如:%assign var = 1 %assign foo = "abc"您不需要在TLC文件中声明这些变量,当设置为
——一个
.方法指定未声明的变量,则会导致错误——一个
在调用文件时切换。还要注意(相对于- r
开关)一个空间不应该分开——一个
从您声明的参数。在本教程的最后一节中,您将使用内置函数
GET_COMMAND_SWITCH ()
打印在TLC脚本中使用的记录文件的名称,并提供一个参数来控制是否抑制代码。默认情况下,代码将被执行,但如果命令行包含船向一边倾斜的= 0
:
打开TLC脚本
read-guide-param-src.tlc
在文本编辑器中。将文件另存为
read-guide-param.tlc
.要使您的程序能够从命令行访问输入文件名,请执行以下操作:
线以下
% selectfile STDOUT
,加一行:= GET_COMMAND_SWITCH ("r")的
%分配
指令声明并设置变量。在这个实例中,它包含一个字符串文件名标识符。GET_COMMAND_SWITCH ()
返回指定TLC命令开关后面的任何字符串参数。内置函数名必须使用大写。换行”
***使用recordfile
,全文如下:***使用RECORDFILE %要控制是否执行一段TLC代码,请执行以下操作:
线以下"
= GET_COMMAND_SWITCH ("r")
”,添加:该程序通过内在(内置)函数检查列表参数是否已声明%if (!EXISTS(list)) %assign list = 1 %endif存在()
.如果不存在列表变量,程序就赋值一个。这个定义列表
默认值为真正的
.将代码行包含在
%如果
块。%if (list) *将一个字段的内容分配给一个变量,例如% Assign worker = FirstName" % Assign worker = FirstName" worker扩展为FirstName = %%endif 现在是要赋值的代码
工人
只在什么时候被发送到输出列表
是真正的
.保存
read-guide-param.tlc
.执行
read-guide-param.tlc
并使用命令检查输出TLC -r指南。rtw read-guide-param.tlc这个收益率
***使用RECORDFILE[指南。将一个字段的内容赋给一个变量。“%assign worker = FirstName”worker扩展到FirstName = Arthur ***END执行
read-guide-param.tlc
使用命令:TLC -r指南。RTW -alist=0 read-guide-param.tlc与
船向一边倾斜的= 0
开关时,输出只显示开关之外的信息如果
声明。***使用RECORDFILE[指南。环球套票)* * *审查
前面的练习检查了记录文件的结构,并扩展了如何使用TLC指令。以下TLC指令通常用于TLC脚本(参见目标语言编译器指令详细说明):
% addincludepath
启用TLC查找包含的文件。 % addtorecord
向现有记录中添加字段。新字段可以是现有记录的名称/值对或别名。 %分配
创建或修改变量。 % copyrecord
创建新记录,如果适用,在其中指定子记录,包括名称/值对。记录的组件来自指定的现有记录。 % createrecord
创建新的顶级记录,如果适用,在其中指定子记录,包括名称/值对。 % foreach / % endforeach
迭代循环变量,从0到上限。 %如果/ % endif
控制是否执行代码,就像在C中一样。 %包括
将一个文件插入到另一个文件中,就像在C语言中一样。 % mergerecord
合并一个或多个记录。第一条记录按顺序包含它本身以及命令指定的其他记录内容的副本。 % selectfile
直接输出到流或文件。 % undef var
删除(删除) var
(变量或记录)。如果var
是记录中的字段,TLC从记录中删除该字段。如果var
为记录数组(列表),TLC删除数组的第一个元素;其余的元素仍然可以访问。仅通过% createrecord
或% copyrecord
可以删除。%和% endwith
添加作用域以简化引用块。 相关的话题