读取块的样例代码

下面的样本代码应该在编辑窗口的命令模式下键入,而不是在文件输入/输出对话框中。

假定您有多个外部数据文件,包含各种零件数据,每个文件的前几个字符指示文件的内容。您可以使用文件/读取块 命令仅读取前几个字符,然后再决定读入和处理每一行。参考以下代码:

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 可继续从指定的数据文件读取每个数据行。