下面的样本代码应该在编辑窗口的命令模式下键入,而不是在文件输入/输出对话框中。
假定您有多个外部数据文件,包含各种零件数据,每个文件的前几个字符指示文件的内容。您可以使用文件/读取块 命令仅读取前几个字符,然后再决定读入和处理每一行。参考以下代码:
C3=注释/输入, 请键入名称
所寻找的文件代码
ASSIGN/BLOCKSIZE=LEN(C3.INPUT)
ASSIGN/FILECODE=C3.INPUT
执行/
C1=注释/输入,请键入完整的路径、
,文件名和扩展名用于
要处理的文件。
,键入 [Q] 退出。
IF/C1.INPUT=="Q" OR C1.INPUT=="q"
COMMENT/OPER, 您选择了退出。例程现在正在退出。
转到/终止
END_IF/
V1=FILE/EXISTS,C1.INPUT
如果/V1<>0
COMMENT/OPER,“数据文件 [" + C1.INPUT + "] 存在。可单击“确定”继续。
FPTR=FILE/OPEN,C1.INPUT,READ
V2=文件/读取块,FPTR,BLOCKSIZE
文件/关闭,FPTR
IF/V2<>FILECODE
COMMENT/OPER,"["+V2+"] 的代码不匹配"
, “文件代码 [" + FILECODE + "] 匹配。”
END_IF/
直到/V2==FILECODE
COMMENT/OPER,“文件 [" + C1.INPUT + "] 匹配。”
,“文件的代码 [" + V2 + "]匹配”
, “文件代码 [" + FILECODE + "] 匹配。”
COMMENT/OPER, 例程处理了此文件。
END_IF/
ELSE/
COMMENT/OPER,“数据文件 [" + C1.INPUT + "] 不存在。请使用现有数据文件重试。”
转到/终止
END_ELSEIF/
终止=标号/
ROUTINE/END
代码说明
该代码大部分与“读取字符的样例代码”或“读取行的样例代码”中所述类似。
下面仅介绍该示例独有的代码。
ASSIGN/BLOCKSIZE = LEN(C3.INPUT)
此行创建一个用户定义的名称为 BLOCKSIZE 的变量,该变量包含有一个与 C3.INPUT 中的字符数相等的整数。这个整数将作为要读取的字符块的大小。
ASSIGN/FILECODE = C3.INPUT
此行创建 FILECODE 变量,并为其分配变量 C3.INPUT 的值。
C1=COMMENT/INPUT
这条注释将用户输入的完整路径存储到 C1.INPUT 变量。
V1=FILE/EXISTS,C1.INPUT
此行检查在 C1 注释中定义的文件名的存在与否。
DO/
该行开始 DO / UNTIL 循环。该行绑定代码块,使用户可以指定要读取的文件。该行将继续循环,直到为 FILECODE 变量指定的文本与从文件读取的文本匹配。
V2=文件/读取块,FPTR,BLOCKSIZE
该行读取 BLOCKSIZE 变量中包含的整数个字符。该文保存在V2变量中。
IF/V2FILECODE
该行开始 IF / END IF 代码块,测试 V2 变量中的文本与 FILECODE 变量中存储的文本是否匹配。如果匹配,例程继续运行。否则,将显示一条消息,表明两个代码不匹配。
UNTIL/V2==FILECODE
此行检查 DO / UNTIL 循环的条件,确定 V2 变量中的文字是否符合 FILECODE 变量中的文字。如语句的结果为 False,则 DO 循环会再次运行,可让用户选择一不同的文件名。如语句的结果为 True,则表明此循环已存在,例程会显示一条表明符合的消息。然后 PC-DMIS 可继续从指定的数据文件读取每个数据行。