- 论坛徽章:
- 0
|
接上。。。
程序使用的所有文件要定义在数据部的第一节----文件节中。
FD file-name
[BLOCK CONTAINS int-1 [TO int-2] RECORDS/CHARACTERS]
[RECORD (CONTAINS int-3 [TO int-4] CHARACTERS)/(IS VARYING IN SIZE [FROM int-5] [TO int-6] CHARACTERS)/(DEPENDING ON data1)
[LABEL (RECORD IS)/(RECORDS ARE) STANDARD/OMITTED]
[VALUE OF (implementor-name IS id-lit-1)...]
[DATA (RECORD IS)/(RECORDS ARE) data2]
BLOCK CONTAINS 指定实际纪录的具体长度或最大与最小长度的逻辑记录数或块数。一般有操作系统和文件系统指定。
RECORD 指定包含变长纪录的文件中记录的最大与最小长度或定长纪录的具体长度。
RECORD CONTAINS 如果不带TO,则int-3是每个纪录的长度;如果带TO,介于int-3和int-4之间。
RECORD IS VARYING 指定纪录长度最小int-5和最大int-6。
DEPENDING ON 如要用,则需要在data1中保存纪录长度。
LABEL RECORD 指定文件是否带标号。(过时,下个版本不包含)
VALUE 和LABEL一起检查标号的不同部分。(过时,下个版本不包含)
DATA RECORD 指定属于文件的纪录描述项(FD后的01层项目)并作为程序文档。(过时,下个版本不包含)
一般定义文件只用第一句:FD file-name
顺序文件的LINAGE声明
对顺序文件,LINAGE声明可以在文件输出是打印机或打印机兼容文件时指定一些打印细节。
[LINAGE IS BODY LINES [WITH FOOTING AT FOOT][LINES AT TOP TOP][LINES AT BOTTOM BOTTOM]] [CODE-SET IS alphabet-name]
整个文件分成TOP,BODY,BOTTOM三部分。其中BODY包含有FOOT.
CODE-SET指定文件中所用的字符集。
过程部主要是对文件的OPEN,CLOSE,READ,WRITE,START,REWRITE,DELETE等操作。
OPEN
OPEN文件有4种方式:(如果文件声明为OPTIONAL,则文件不存在会创建文件,否则会报错)
OPEN INPUT FILE-NAME. 只能读取的文件。
OPEN OUTPUT FILE-NAME. 生成写入纪录的文件,读取该文件会出错。若文件已存在,已有记录会被全部删除。
OPEN I-O FILE-NAME. 可读可写的文件。
OPEN EXTEND FILE-NAME. 生成写入的文件。与UOTPUT的区别在于,若文件已存在,EXTEND将纪录加在文件末尾。
如果OPEN不成功,执行USE语句。USE语句不存在,则程序结束。
顺序文件的OPEN可以有以下方式:
OPEN INPUT FILE-NAME [(WITH NO REWIND)/REVERSED].
OPEN OUTPUT FILE-NAME [WITH NO REWIND].
REVERSED可以逆序处理,即由后向前处理。(过时,下个版本不包含)
WITH NO REWIND 用于单卷磁带文件,如果指定文件在不适用REWIND的媒介上,忽略。
在文件描述项中指定LINAGE得顺序文件不能用EXTEND方式打开。
CLOSE
所有文件的CLOSE方法:
CLOSE FILE-NAME. 关闭文件。
CLOSE FILE-NAME WITH LOCK. 关闭文件,不退出程序不能再打开此文件。
顺序文件还有其他一些选项,如关闭卷或单元,和继续处理文件:
CLOSE file-name [REEL/UNIT] [FOR REMOVAL]/WITH NO REWIND
READ
顺序访问方式读文件。一定要有NEXT字样。
READ file-name [NEXT] RECORD [INTO data1]
[AT END statements][NOT AT END statements] [END-READ]
如果READ成功且有INTO,将读到的数据写入data1。
如果文件中没有记录,执行AT ENDstatements,如果没有就执行USE。
如果READ成功,就执行NOT AT END statements。
动态访问方式读文件。(相对或索引文件)
利用OPEN语句,将文件指针设在开头。
进行各种成功的READ操作。
有START语句标识文件中的纪录。
随机访问方式读文件。
READ file-name RECORD [INTO data1]
[INVALID KEY statements][NOT INVALID KEY statements] [END-READ]
如果READ成功且有INTO,将读到的数据写入data1。
如果文件中没有记录,执行INVALID KEY statements,如果没有就执行USE。
如果READ成功,就执行NOT INVALID KEY statements。
如果是相对文件,要设置文件控制项RELATIVE KEY中指定的整型关键字值后才能执行READ.
如果是索引文件,要设置当前索引的关键字值后才能执行READ.
WRITE
顺序方式。
WRITE data [FROM data1] [BEFORE/AFTER ADVANCING mnemonic-name/PAGE/N LINE(LINES)]
[AT END-OF-PAGE(EOP) statements][NOT AT END-OF-PAGE(EOP) statements][END-WRITE]
如果指定了FROM,先将data1复制到data,再写入文件。
BEFORE/AFTER ADVANCING N LINE(LINES) 在纪录间插入N个空行。
AT END-OF-PAGE(EOP) 对于带LINAGE的文件有效,在WRITE使指针进入页脚(FOOT)时,先执行WRITE,再执行AT END-OF-PAGE(EOP) statements。
相对和索引文件方式。
WRITE data [FROM data1]
[INVALID KEY statements][NOT INVALID KEY statements] [END-WRITE]
REWRITE
替换文件中的一个记录。
顺序方式:REWRITE data [FROM data1] [END-REWRITE]
相对和索引方式:
REWRITE data [FROM data1]
[INVALID KEY statements][NOT INVALID KEY statements] [END-REWRITE]
DELETE
删除文件中的一个记录。只能用于相对或索引组织的文件。
DELETE file-name RECORD
[INVALID KEY statements][NOT INVALID KEY statements] [END-DELETE]
顺序访问方式的话,前一个READ的纪录被删除。
随机或动态访问的话,RELATIVE KEY的内容或主关键字所表示的纪录从文件中删除。
START
将相对或索引文件定位到某个纪录,以便对其进行顺序访问。只对相对和索引文件有效。
START file-name [KEY IS (EQUAL TO)/=/GREATER THAN/>/NOT LESS THAN/NOT < data]
[INVALID KEY statements][NOT INVALID KEY statements] [END-START]
如果执行成功,则data所属的索引变成文件的当前索引。
对于相对文件,data定义为文件的RELATIVE KEY的数据项。
对于索引文件,data为下列之一:
文件的主关键字,是RECORD KEY从句中指定的数据项。
文件的替换关键字,是ALTERNATE RECORD KEY从句指定的数据项。
从一个关键字的第一个位置开头,长度小于或等于该关键字的数据项。 |
|