文件访问模式
如果文件访问模式搞不清楚,很容易出现各种错误。
文件访问一般为三种,顺序访问,随机访问,动态访问。
注意:有的带有FILE STATUS是指定一个变量存放文件的状态,并且这个变量要在WORKING-STORAGE SECTION中定义
顺序访问
对顺序文件:被插入的记录仍按相同的顺序进行访问。
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. *主要使用FILE-CONTROL与I-O-CONTROL(较少使用) FILE-CONTROL. *SELECT必须是第一句,其他顺序无关,film-name是程序中传递使用的文件名,相当于实际 *文件的一个别名,[OPTIONAL]可不使用,是用于执行可能不存在的文件。 *ASSIGN将file-name连结到实际的外部设备或文件 SELECT [OPTIONAL] file-name ASSIGN TO dd-name *可选,缺省为顺序组织文件 ORGANIZATION IS SEQUENTIAL *顺序文件只允许顺序访问 ACCESS MODE IS SEQUENTIAL
对索引文件:用于获取记录的参数是记录的键值。
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT file-name ASSIGN TO dd-name *索引文件 ORGANIZATION IS INDEXED *访问方式,有三种,除SEQUENTIAL,还有RANDOM和DYNAMIC,若缺省默认*SEQUENTIAL ACCESS MODE IS SEQUENTIAL *RECORD KEY 指定文件的主记录关键字,rec-key1应为定义文件的某个记录区的字母数字数*据项目。这个关键字的描述及其在数据记录中的位置应该与生成文件时所用的关键字一致。 RECORD KEY IS rec-key1 *如果文件有替换关键字,则其关键字用这个从句的短语指定,索引中允许重复的关键字采用*DUPLICATES。COBOL要求文件记录定义rec-key2.重复关键字的长度及其在数据记录中的位置应该与生成文件时一致,所有替换关键字应放在文件控制项中。 ALTERNATE RECORD KEY IS rec-key2 [WITH DUPLICATES]
对相对文件:记录相对键用于检索记录。(较为常用)
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT file-name ASSIGN TO dd-name *相对文件必须 ORGANIZATION IS RELATIVE *访问方式有三种,缺省为SEQUENTIAL,其他还有RANDOM,DYNAMIC ACCESS MODE IS SEQUENTIAL *可选,意为文件读取操作顺序完成后,rec-key1用所读取记录的关键字更新,rec-key1应为*文件的记录区中没有的整数数据项。 RELATIVE KEY IS rec-key1