cobol学习01——程序结构
完整得COBOL程序都是由四个部分组成的!
1、标志部
由IDENTIFICATION DIVISION关键字标识,主要用来描述与程序本身相关的信息。
关键字段
PROGRAM-ID:指明程序名,是必须具备的字段。
AUTHOR: 开发者名
INSTALLATION:设计该程序的公司和部门
DATE-WRITTEN:指明程序编写或修改的日期
DATE-COMPLED:指明程序编译的日期
SECURITY:列出具有访问权限的用户
2、环境部
通过ENVIRONMENT DIVISION标识字段开始,用于指出该程序与外部环境之间的对应关系。
a、配置节
都是可以省略的字段
SOURCE-COMPUTER:编译程序的计算机
OBJECT-COMPUTER:描述运行程序的计算机
SPECIAL-NAMES:制定护臂符号选择小数点、提供开关名和字母定义。
b、输入/输出节
数据的输入和输出通常是以文件为对象的。输入/输出节主要是将程序的逻辑文件同环境中的物理文件对应起来。
FILE-CONTROL:用于指定文件的对应关系,主要字段
I-O-CONTROL:用于指定程序返回点,不同文件共享的内存区,以及文件卷中的文件
例: SELECT CUSTOMER-FILE ASSIGN TO S-SYSIN.
将CUSTOMER-FILE文件同S-SYSIN文件进行对应。
SUSTOMER-FILE属于逻辑文件。
S-SYSIN文件属于物理文件。
3.数据部
使用DATA DIVISION标识,程序中使用的各项数据在数据部中定义。
分为3个节。
a、文件节
由FILE-SECTION所标识,用于对程序中用到的文件中的数据进行定义。
文件名必须和环境部定义的输入/输出文件名一致。
通过FD语句对实现文件的定义。File Descriptor缩写,文件描述的意思。
用来描述与文件记录相关的物理信息。如:实际格式、长度等。
通过句点标识结束。
例:FD PRINT-FILE
RECORDING MODE IS F
LABEL RECORDS ARE OMITTED
RECORDING CONTAINS 132 CHARACTERS
DATA RECORD IS PRINT-LINE.
RECORDING MODE IS F:指明文件记录的格式,F表示长记录。
LABEL RECORDS ARE OMITTED:表示忽略文件记录的标号。OMITTED为手动指定,STANDARD为默认指定
RECORDING CONTAINS 132 CHARACTERS:表明每条文件记录包含132个字符
DATA RECORD IS PRINT-LINE.:指出该文件包含的记录名。
通过PIC语句依次定义文件中每条记录所包含的数据项。
数据定义中的层。
在COBOL中,01属于最高层,需要顶格写。最多支持49层,49层是最低层。
特殊的层:
66层:为特殊项目保留,使用较少
77层:用于某个数据项,如临时变量等。
88层:用于判断条件中。
例:01 CUST-RECORD.
05 ACCOUNT-NO PIC 9(10).
05 CLIENT-NAME PIC X(20).
05 PRI-FINANCE.
10 F-SALARY PIC 9(5).
10 F-STOCK PIC 9(7).
10 F-FUND PIC 9(7).
其中,CUST-RECORD和PRI-FINANCE属于数据组。
后有PIC的为单元数据项,没有的为数据组。
"X"表示任意字符,"9"表示只能为数字。括号中的数字表示相应数据的长度。
b、工作存储节
由WORKING-STORAGE SECTION标识。用于定义本程序中所用到的各种数据。
例:
WORKING-STORAGE SECTION.
01 HEADING-LINE.
05 FILLER PIC X(12)
VALUE SPACES.
05 FILLER PIC X(20)
VALUE 'CLIENT NAME LIST'.
01 DETAIL-LINE.
05 FILLER PIC X(10)
VALUE SPACES.
01 EOF-FLAG PIC X VALUE 'N'.
HEADING-LINE.:用于打印标题,在生成报表的程序中经常用到。
DETAIL-LINE:该数据可用于提取输出文件记录中的CLIENT-NAME信息,并复制到输出文件记录中。
EOF-FLAG:用于指示文件是否处理结束。
4.过程部
过程部由PROCEDURE DIVISION标识,编写所有逻辑部分。
将实现特定功能的多个语句段进行调用。
注意:句点不能省略的情况
语句段名之后必须有句点。
标识同一条件下的处理范围时。