跳转到主要内容
模块 5 · 第 1 课(共 2)课程中的9/10~15 min
模块课程(1/2)

文件定义和文件控制

在 COBOL 中,管理外部文件(例如磁盘上的文本档案或二进制记录)是批处理企业应用程序最重要的功能之一。由于 COBOL 的设计早于现代数据库,因此磁盘文件充当主存储。

将存储在操作系统上的物理文件与程序的内部变量连接分两个阶段进行:

  1. ENVIRONMENT DIVISION 中的逻辑-物理关联。
  2. 定义**DATA DIVISION**中的数据记录。

1. 关联:FILE-CONTROL 和 SELECT ASSIGN

在专门介绍程序结构的章节中,我们探讨了 ENVIRONMENT DIVISION。其中, INPUT-OUTPUT SECTION 包含 FILE-CONTROL 段落,该段落声明程序使用的外部文件。

要将程序中的逻辑文件(例如 SALES-FILE)与磁盘上的真实物理文件(例如 sales.dat)相关联,请使用 SELECT ... ASSIGN TO ... 语句:

COBOL
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT SALES-FILE ASSIGN TO "sales.dat"
               ORGANIZATION IS LINE SEQUENTIAL.
  • SELECT SALES-FILE:定义程序将用来引用文件的逻辑名称。
  • ASSIGN TO "sales.dat":指定磁盘上的实际物理文件名(或路径)。
  • ORGANIZATION IS LINE SEQUENTIAL (可选):表示该文件是纯文本文件,其中每一行代表一条记录(以换行符分隔)。

2.声明:FILE SECTION和FD

在ENVIRONMENT DIVISION中关联文件后,我们必须在**DATA DIVISION**中定义其记录的结构。为此,我们使用一个名为 FILE SECTION 的专用部分(位于 WORKING-STORAGE SECTION 之前)。

每个选定的文件必须有一个 FD (文件描述)条目来声明记录结构:

COBOL
       DATA DIVISION.
       FILE SECTION.
       FD SALES-FILE.
       01 SALES-RECORD.
           05 EMP-ID       PIC 9(5).
           05 EMP-NAME     PIC X(20).
           05 EMP-SALARY   PIC 9(6)V99.
  • FD SALES-FILE.:标识逻辑名称 SALES-FILE 的文件描述。请注意,它以句点结尾。
  • 01 SALES-RECORD.:指定与文件关联的组结构(记录)。每次读/写操作都会使用该内存结构交换数据。

尝试一下

锻炼#cobol.m5.l1.e1
尝试:0加载中...

完成 ENVIRONMENT DIVISION 以声明 INPUT-OUTPUT SECTION 和 FILE-CONTROL 段落,使用 SELECT ASSIGN 语句将逻辑文件 SALES-FILE 与物理文件“sales.dat”相关联。

正在加载编辑器...
显示提示

写环境部门。和输入输出部分。在第 8 列(7 个空格),然后是 FILE-CONTROL。在第 8 列中,最后选择 SALES-FILE ASSIGN TO 'sales.dat'。第 12 栏(11 个空格)。

3 次尝试后可用的解决方案

锻炼#cobol.m5.l1.e2
尝试:0加载中...

声明程序的数据区和文件区。为 SALES-FILE 定义文件描述符 (FD),将其与名为 SALES-RECORD 的 01 级记录关联,该记录包含两个从属字段:SALES-ID(4 位数字)和 SALES-AMOUNT(带有 2 个隐式小数的 5 位数字)。

正在加载编辑器...
显示提示

使用数据除法。和文件部分。在第 8 列,FD 销售文件。在第 8 列中,后面是 01 SALES-RECORD。在第 8 列中,以及字段 05 SALES-ID PIC 9(4)。和 05 销售额 PIC 9(5)V99。在第 12 列的新行中。

3 次尝试后可用的解决方案