cobol学习笔记_1231培训资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C O B O L学习笔记
_20121231
cobol语言.修订版.(上册+下册).pdf
2012-12-14(1~22 )
COBOL语言特点:
(1) 适合数据处理(算术计算量小而逻辑处理多;输入输出数据量大;数据间有一定逻辑关系,即层次关系;大量分类排序;对报表要求高、多样化等)
(2) 接近自然语言英语,易于理解
(3) 通用性强,易于移植
(4) 结构严谨,层次分明,每个程序分为4部分(division:标示部Identification division、环境部envroNment division、数据部data division、过程部procedure division)、每部分分为若干节(section 有节头标示,类似部头)、节下面分为若干段(paragraph 有段头标示)。
每一部分都有固定格式。
(5) 缺点是比较繁琐。
不乱程序逻辑如何,都必须按照四大部分生成,对每部分都必须定义和说明,即使该部分实际上没有内容,也要写出头部,导致源程序冗长。
=================
一个简单的COBOL程序:
Code:
IDENTIFICATION DIVISION.
PROGRAM-ID. EXAM1.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
S. DISPLAY 'THIS IS A COBOL PROGRAM.'
STOP RUN.
=================
IDENTIFICATION DIVISION: 用来指定源程序名称,也可写入其他信息(如作者、日期、保密等)。
ENVIRONMENT DIVISION: 程序中用到的数据文件名和计算机的设备的对应关系,即把某一数据文件和一外部设备关联起来。
此外,还可以指定目标程序中使用的专门控制方法和程序所用内存区的大小。
DATA DIVISION: 程序用到的所有数据的类型和占用内存的情况。
PROCEDURE DIVISION: 用来给出程序要执行的命令,是计算机产生相应的操作。
部下面可以有节,节下面有段;或者部下面直接是段。
=================
以上四个部分,只有过程部是执行部分,是核心部分。
过程部中,每段由若干句(Sentence)组成,每句以句号加一个以上的空格来结束的。
一个句子只能由一个语句组成,一个语句加一个句号后跟一个或多个空格形成一个句子。
一个句子可以包含多个子句(Clause),每个子句也有一个动词,指定某一方面的功能。
除了过程部外,环境部和数据部也可以包含子句,如SELECT子句、文件描述子句等。
=================
COBOL每行80列,每行分为几个区:
(1) 1~6列为“标号区”,一般前3列表示页号,后3列表示本页行号。
标号应当按照从小到大顺序填写,但可以不连续。
可以填标号,也可以不填写,对程序没有影响。
(2) 第7列:“续行标志区”,写上续行符"-",表示本行是续上一行后面的。
一般只有拆分字符需要两行紧连或者一个长的字符串需要拆成两行时才使用,否则可以空着。
不推荐使用续行符,容易导致错误。
(3) 第8~11列,称为"A区",程序的某些部分,如部头、节头、段头、层号01、层号77以及文件标示符FD等应从A区开始书写。
可以从第8列开始,也可以不从,但必须在8~11列的任何一列开始。
(4) 第12~72列,称为"B区",是程序的正文部分,过程部的句子必须从B区开始写,不能写入A区中。
(5) 第73~80列,为“注释区”,一般是简单说明,程序编译和执行时都不会理会该区内容。
80列的划分区,只是对程序有以上限制,对于数据而言没有以上分区限制,即输入数据可以从第1列用到第80列。
所有字母应大写;相邻两个字之间应该留一个或以上空格;运算符和等号两边必须各留一个空格;过程部中左括号的左侧和右括号的右侧都要留一个空格,内侧不必留空格;逗号、句号、分号的左边不能留空格,右边必须留空格;一个空格和多个空格作用相同,但引号中的除外;允许一行写几个语句,也可以一个语句写在多行上。
=================
COBOL字符集:COBOL程序中允许出现的字符(引号内的除外)。
数字:0~9
大写字母:A~Z
专用字符15个:
加号 +
减号或连接号 -
乘号或星号 *
除号 /
等号 =
逗号 ,
句号或小数点 .
分号 ;
引号 '或"
括号 ()
小于号 <
大于号 >
空格
货币符号 $
#,!,?,%等字符属于系统字符集但不属于COBOL字符集,不能在程序中出现(引号内除外)。
=================
COBOL字分为两类:保留字和用户字(非保留)。
保留字指在COBOL中已规定作专门用途的字,代表特定的含义,不能另作他用。
=================
数据名就是由程序设计者定义的一片内存区域,即用一个符号代表一个地址。
长度只能是1~30个字符之间;只能由字母、数字和连接符"-"组成,至少含一个字母,连接符不能出现在名称的两端,不能出现空格;不能使用COBOL保留字,一般使用连接符是避免使用保留字的好方法,或者使用X或数字开头的名称;最好使用望文生义的单词命名。
=================
常量包括数值常量(Numerical Literal)、非数值常量(Nonnumerical Literal)和表意常量(Figurative Constant)三类。
数值常量不能超过18位数字;至少要有一个数字,不能含有超过一个符号;数字之间不能有空格。
非数值常量指用引号引起来的字符串;非数值含量不能参与运算;如果想把引号也放入常量,需要使用QUOTE保留字实现,如DISPLAY QUOTE 'ABCD' QUOTE,表示'ABCD'六个字符,但QUOTE本身不能替代引号;非数值常量不能超过120个字符。
表意常量就是指用保留字表示的一些特殊常量,如用ZERO表示0,SPACE表示空格等。
=================
COBOL的数据具有层次的特征,类似于一颗倒立的树或者是金字塔结构,一般将这样的一条数据称之为一个记录(record)。
为了反映数据在一个层次结构中的层次,引入了层号的概念,使用2位数来表示。
层号小表示较高的层次。
记录是具有一定层次关系的一组数据项的最大集合。
是内存中具有独立逻辑含义的最大可存取项,层号为01。
记录下分为几项,不能继续分的称为初等项或基本项(Element item)。
初等项是数据的基本单位;如果还能继续分,称为组合项(Group Item),组合项下可以是组合项或者初等项。
多个记录可以组成一个文件。
但文件一般存储在外部,不在内存中,内存中最大存取项是记录。
2012-12-19
23~28
过程部是COBOL的核心部分,应当以过程部为主体,找出几部分之间的关系。
过程部的特点:
(1) 过程部是程序的第四部分
(2) 过程部都以一个动词开始,如MOVE、READ、WRITE、IF。
表示计算机应当执行的操作。
(3) 动词后面一般都跟着一个操作的对象,可以是数据文件或者数据名。
(4) 过程部一律写在B区上,即第12列开始,可以写在一行或者多行,续行也从B区开始。
=========
输入输出
1、ACCEPT语句
从键盘终端或者指定输入设备获取少量输入数据。
ACCEPT 标识符 [FROM 助忆名]
这里的标识符必须是可以唯一的标识一个数据项的数据名。
如部->节->段->数据项的情况下,使用OF关联上下关系,保证标识符的唯一性,如
01 A.
02 B1.
03 C ...
03 D ...
02 B2.
03 C ...
03 D ...
必须写成 C OF B1 和 C OF B2 区分两个不同的C
以上[]内的内容表示是可选项,{}内的内容表示其中各项可多选一,...表示之前的{}或[]的内容可以重复多次,有下划线的保留字表示必写,没有的表示可以省略。
以上的FROM省略时表示从系统默认输入设备获取数据,如键盘,增加时,表示从指定设备获取数据,助忆名表示从一个设备名,具体的名称可以在ENVIRONMENT DIVISION中定义:
ENVIRONMENT DIVISION.
CONFIGURATION SECTION. 配置节
SPECIAL-NAMES. 专用字段
CONSOLE IS ABC. 将输入设备定义为助忆名:ABC ACCEPT T FROM ABC.
表示从输入设备获取数据并赋值给变量T。
ACCEPT之后只能跟一个标识符,不能跟多个。
=========
2、DISPLAY语句
用于少量数据输出到指定外设上。
DISPLAY {标识符|常量}[标识符|常量]...[UPON 助忆名]
默认在屏幕上显示数据,使用UPON指向指定的设备名输出
每执行一次DISPLAY,总是从一个新行开始;如果一行显示不完,会自动换行显示。
正式程序中,一般都不使用ACCEPT和DISPLAY,以提高系统效率,减少手工干预。
=========
3、READ语句
READ 文件名 RECORD [INTO 标识符] [;AT END 执行语句]
分号可以省略
例如 READ IN-FILE,表示从IN-FILE文件中读取数据,IN-FILE称为“内部文件名”,它与外部文件名之间的关系是通过ENVIRONMENT DIVISION中指定的,如:
Code:
ENVIRONMENT DIVISION.
INPUT-OUTPUT
SECTION.
输入输出节
FILE-
CONTROL.
文件控制段
SELECT IN-FILE ASSIGN TO 外部文件名.
2012-12-21 (29~38)
内部文件名的长度不能超过30byte,只能由数字、字母和连接符组成,必须至少包含一个字母。
每执行一次READ语句,只读取文件中的一条记录,为避免误解,可以加上关键字RECORD,如:
READ IN-FILE RECORD
其中,RECORD是可选项,是否写,效果一样。
在计算机内存中专门开辟一片存储单元存放读入记录,所以大小应当等于一条记录的大小。
每次读取下一条记录,会冲掉前一条记录的内存区域,所以必须在处理下一条之前保存处理结果,内存中不会保存前一条记录信息。
输入记录区样例:
Code:
DATA DIVISION.
FD IN-FILE LABEL RECORD IS STANDARD.
01 IN-RECORD.
02 DATE-IN.
03 YEAR PIC 99. (表示2位整数)
03 MONTH PIC 99.
03 DAYy PIC 99.
02 PRODUCT-CODE PIC 9(4).
02 CUSTOMER-CODE PIC 9(4).
02 QUALITY PIC 9(6).
02 UNIT-PRICE PIC 9(6).
FD是File Description(文件描述)的缩写,表示从该行起是“文件描述体”。
LABEL RECORD IS STANDARD表示“标号记录是标准的”,所有磁盘和磁带文件都必须这样。
文件结尾有“文件结束标志”,READ读到文件结束标志后,会给出一个“文件结束”信息,允许程序进行处理,由"AT END"子句来处理,如:
READ IN-FILE AT END STOP RUN.
以上STOP RUN表示中止运行,也可以写其他语句。
=========
4、WRITE语句
WRITE 记录名 [FROM 标识符] [{BEFORE|AFTER} ADVANCING {{标识符2|整
数}[LINE|LINES]|{助忆名|PAGE}}]
将内存中的数据写入外部设备,输出文件也在内存区开辟一个“输出文件记录区”
输出设备的选择:
Code:
ENVIRONMENT DIVISION. (环境部)
INPUT-OUTPUT SECTION. (输入输出节)
FILE-
CONTROL.
(文件控制段)
SELECT OUTPUT-FILE ASSIGN TO 输出设备名.
输出设备名可以用打印机,如PRINTER或磁盘文件名等。
LABEL RECORD IS OMITTED.表示“标号记录是省略的”,凡输出是打印机的,一律这样写。
如果输出是磁盘文件,则修改为LABEL RECORD IS STANDARD.
输出内存记录区样例:
Code:
DATA DIVISION.
FD OUTPUT-FILE LABEL RECORD IS OMITTED.
01 OUTPUT-RECORD.
02 DATE-OUTPUT.
03 YEAR PIC 99.
03 MONTH PIC 99.
03 DAYY PIC 99.
02 PRODUCT-CODE 9(4).
02 CUSTOMER-CODE PIC 9(4).
02 QUALITY PIC 9(6).
02 UNIT-PRICE PIC 999.
02 TOTAL PIC 9(4).
如果在ENVIRONMENT DIVISION指定输出设备为PRINTER,则执行WRITE OUTPUT-RECORD,自动会在打印机执行输出。
COBOL提供了行距控制,如下:
Code:
MOVE T1 TO OUTPUT-RECORD.
WRITE OUTPUT-RECORD AFTER ADVANCING 2 LINES.
表示打印OUTPUT-RECORD之前先空2行。
也可以用
Code:
WRITE OUTPUT-RECORD AFTER ADVANCING 2 LINES.
表示先打印OUTPUT-RECORD再空2行。
上面的2行,可以用数据名来表示,如
Code:
WRITE OUTPUT-RECORD AFTER ADVANCING A LINES.
这里,A为DATA DIVISION定义的一个整数变量。
如果需要一些特殊控制,如要移动到页末或者不换行,可以使用专用名控制,具体可查询COBOL编译器ENVIRONMENT DIVISION专用字段描述。
WRITER语句的记录的第一个字符称为“纵向走纸控制”,即第一个字符不会被打印出来,这个问题和系统有关。
可以从内存区另一个数据项的内容获取内容输出给要输出的记录区,然后再输出,如:Code:
WRITE OUTPUT-RECORD FROM T1 AFTER 3.
相当于:
Code:
MOVE T1 TO OUTPUT-RECORD.
WRITER OUTPUT-RECORD AFTER 3.
=========
5、OPEN语句
OPEN {INPUT|OUTPUT 文件名1 [,文件名2]...}...
读写文件前,必须先执行OPEN语句打开文件。
可以一次打开多个文件,如:
OPEN INPUT x1,x2,x3
OUTPUT x4,x5,x6.
=========
6、CLOSE语句
CLOSE 文件名1 [,文件名2]...
对文件操作完毕后,应关闭文件。
有一个OPEN,应该对应有一个CLOSE。
2012-12-25 (39~50)
1、ADD语句
ADD {标识符1|常量1} [,标识符2|常量2]… TO|GIVING 标识符m[, 标识符n]…ADD A TO B => A + B = B
ADD A, B TO C => A + B + C = C
ADD A, B GIVING C => A + B = C
ADD A, B TO C, D => A + B + C = C; A + B + D => D
2、SUBTRACT语句
SUBTRACT {标识符1|常量1} [,标识符2|常量2]… FROM 标识符m[, 标识符n]… [|常量m[, 常量n]…GIVING 标识符k[, 标识符p]…]
SUBTRACT B FROM A => A – B = A
SUBTRACT B, C FROM A => A – B – C = A
SUBTRACT B, C FROM A, T => A – B – C = A; T – B – C = T
SUBTRACT B, C FROM A GIVING X => A – B – C = X
注意:
GIVING之后不能跟常量。
如果不带GIVING,则FROM部分后面也不能带常量。
3、MULTIPLY语句
MULTIPLY {标识符1|变量1} BY 标识符2[, 标识符3]… [|常量2[, 常量3]…GIVING 标识符m[, 标识符n]…]
MULTIPLY A BY B => A*B=B
MULTIPLY A BY B GIVING C => A*B=C
MULTIPLY A BY B, C => A*B=B; A*C=C
注意:
GIVING之后不能跟常量。
如果不带GIVING,则BY部分后面也不能带常量。
4、DIVIDE语句
DIVIDE {常量1|标识符1} {INTO|BY} {标识符2[, 标识符3]…} [|常量2[, 常量3]…GIVING 标识符4[, 标识符5]…]
DIVIDE A INTO B => B/A=B
DIVIDE A INTO B GIVING C => B/A=C
DIVIDE A BY B GIVING C => A/B=C
注意:
如果除不尽,多余的位数被截掉,即小数会被截去。
总结:
一个语句只能进行单一运算,不能在一个语句进行两种不同的运算。
加法和减法可以一次进行多个值的计算,但乘法和除法不可以。
5、计算语句COMPUTE
用于复杂的四则运算
COMPUTE T = (A + B) * C / D => (A+B)*C/D = T
优先级:(从高到低)
括号>单目运算符(正负号)>乘方(**)>乘除>加减
同等级运算法按从左往右优先级
所有运算符两侧应留一个空格
括号外侧留一个空格、内侧可以不要留空格
COMPUTE语句计算速度较慢,由于COBOL很少用于科学计算,不常使用COMPUTE语句。
2012-12-29 (50~77)
MOVE语句
MOVE {标识符1|常量1} TO 标识符2[, 标识符3]…
MOVE语句用来实现数据的传送,将数据从一个内存域送到另一个内存域。
仅指内存中的传送,不是内存和外部设备间的传送。
可以将常量(数值常量、非数值常量、表意常量)或一数据项内容传送给另一数据项。
传输规则:
MOVE A TO B
A成为发送项,B称为接收项。
1、发送项和接收项类型和长度一致,则按字节一一传送。
2、发送项和接收项类型都是数值数据项,长度不一致,则按“小数点对齐”原则处理。
接收项大于发送项,则多余位补零。
接收项小于发送项,则截断(从左边算起)。
3、对字母或字符数据(非数值型数据),按照“左对齐”原则处理。
接收项大于发送项,则多余位补空格。
接收项小于发送项,则从右端截断。
4、可以将一个初等项内容传给另一个初等项,也可以将一个组合项内容传给另一个初等项,也可以将一个初等项内容传给另一个组合项。
GOTO语句
GO TO 过程名1[[,过程名2]… DEPENDING ON 标识符]
节名或段名称为过程名,代表一段过程。
DEPENDING 表示根据标识符的值转到哪一个过程名后面执行,如:
GO TO A, B, C DEPENDING ON I.
表示I=1,转到过程A,I=2, 转到过程B, I=3,转到过程C,否则执行下一个语句。
GOTO是无条件转移语句。
条件语句IF
1、关系运算符
关系运算符的作用是对两个数值型或字符型数据大小进行比较。
大于 IS GREATER THAN 或者 >
小于 IS LESS THAN 或者 <
等于 IS EQUAL TO 或者 =
不大于 NOT GREATER THAN 或者 NOT >
不小于 NOT LESS THAN 或者 NOT <
不等于 NOT EQUAL TO 或者 NOT =
2、关系运算规则
(1) 数据量之间的比较,按照值进行比较
(2) 字母数据之间的比较,按照ASCII码大小比较,或者EBCDIC1码大小比较,但共同的归类就是字母顺序,当长度不同时,补足空格后从左到右的顺序比较每一位(注意,空格比任何字母都小)。
1 Extended Binary Coded Decimal Interchange Code
(3) 字符型数据的比较,也是按照从左到右的顺序比较,但字符代码大小比较,和系统有关,或者按照ASCII码大小比较,或者EBCDIC码大小比较。
3、IF语句的两种形式
IF 条件 {语句组|NEXT SENTENCE} [ELSE {语句组2|NEXT SENTENCE}] (1) IF 条件语句组
(1) IF 条件语句组1 ELSE 语句组2
NEXT SENTENCE表示条件满足(或不满足时)执行IF下面的语句
停止语句STOP
STOP {RUN|常量}
说明:
(1) 执行后程序将中止
(2) STOP常量,表示程序暂时挂起,并显示该变量的值,一般用于调试;暂停后,从键盘输入适当的命令,可以使程序继续进行
结构化程序设计的三种结构:
顺序结构、选择结构和循环结构,并由这三种基本机构派生出其他基本结构,这些基本结构应当具备以下特征:
(1) 只有一个入口,一个出口
(2) 没有死循环
(3) 没有死语句(永远不会执行的语句)
程序=算法+数据结构+程序设计方法+程序环境
标识部IDENTIFICATION DIVISION
标识部的作用是标识一个COBOL程序,以便识别。
每个程序都必须有一个名字,系统按照名字找程序。
必写部分:
IDENTIFICATION DIVISION.
PROGRAM-ID. 程序名.
程序名有一定的限制:不能超过6个字符,只限于字母和数字(不包括连接符)。
可选部分:
[AUTHOR. 作者姓名.]
[INSTALLATION. 设置的场所.]
[DATE-WRITTEN. 源程序编写日期.]
[DATE-COMPILED. 源程序编译日期.]
[SECURITY. 保密程度.]
====
环境部ENVIRONMENT DIVISION的一般格式:
ENVIRONMENT DIVISION. 环境部.
CONFIGURATION SECTION. 配置节.
SOURCE-COMPUTER. 源计算机名.
OBJECT-COMPUTER. 目的计算机名.
[SPECIAL NAMES. 专用名描述.]
[INPUT-OUTPUT SECTION. 输入输出节.
FILE-CONTROL. {文件控制描述体}…
[I-O-CONTROL. 输入输出控制描述体.]]
(1) 环境部主要包括配置节和输入输出节两部分。
(2) COBOL要求,CONFIGURATION SECTION是必须的,但不是系统允许省略。
(3) INPUT-OUTPUT SECTION是可选的,但只有最简单的程序才不需要,一般只要使用文件输入输出时,都应该进行定义。
配置节CONFIGURATION SECTION.
包括三段:源计算机段、目的计算机段、专用字段。
如:CONFIGURATION SECITON.
SOURCE-COMPUTER. IBMPC-386.
OBJECT-COMPUTER. IBMPC-386.
MEMEORY SIZE IS 5000 WORDS.
SPECIAL-NAMES.
CONSOLE IS A1.
源计算机和目标计算机的一般格式:
SOURCE-COMPUTER. 源计算机名.
OBJECT-COMPUTER. 目的计算机名.
[MEMORY SIZE IS 整数 {WORDS|CHARACTERS|MODULES}]
专用名段SPECIAL NAMES.
SPECIAL-NAMES.
[DECIMAL-POINT IS COMMA.]
[CURRENCY SIGN IS 非数值常量.]
[专用名 IS 助忆名.]
用来通知系统把系统中原规定的一些设备名或功能名或符号改成用户指定的名字或符号。
例如,欧洲人习惯用逗号表示小数点,在专用字段中如下描述:
DECIMAL-POINT IS COMMA.
这样,凡是程序中的所有数值出现的小数点,输出时会统一自动改成逗号。
再如货币描述:
CURRENCY SIGN IS ‘L’.
在出现货币符号时,自动以’L’替代’$’。
但不能用0~9,A,B,C,D,E,P,R,S,V,X,Z 作为货币号。
输入输出节INPUT-OUTPUT SECTION.
包括两个段:
1、文件控制段FILE-CONTROL.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT 文件名 ASSIGN TO 外部文件名.
SELECT后面的文件名为内部文件名,COBOL的READ,OPEN都用该名称操作文件。
在不同的计算机系统,如何表示“外部文件名”的方法不同,大体有三种:(1) 写上磁盘的实际文件名,如VAX上:
FILE-CONTORL.
SELECT FILE1 ASSIGN TO DUA1:COB.FILE1.DAT
(2) 只指出外部设备名,如在PC上:
FILE-CONTORL.
SELECT IN-FILE ASSIGN TO DISK.
SELECT PRINT-FILE ASSIGN TO PRINTER.
这里,DISK表示磁盘,PRINTER表示打印机。
但这里DISK具体表示哪个文件呢?需要在数据部中的“文件节”中的FD描述体用VALUE OF子句来指出该文件的实际文件名。
如:
DATA DIVISION.
FILE SECTION.
FD IN-FILE LABEL RECORD STANDARD.
VALUE OF FILE-ID “C:INF.DAT”.
(2) 在一些大中型计算机上,用该系统指定的逻辑名为外部文件名,然后用作业控制语句将该逻辑文件名和实际设备或文件联系,如在中型机M-150上:FILE-CONTROL.
SELECT IN-FILE ASSIGN TO SYS010-CR.
SELECT DA-FILE ASSIGN TO SYS012-DA-S-DISK.
SELECT PRINT-FILE ASSIGN TO SYS013-LP.
三个内部文件名IN-FILE、DA-FILE、PRINT-FILE分别被分配给SYS010-
CR(读卡机)、SYS012-DA-S-DISK(磁盘机)和SYS013-LP(宽行打印机)。
在程序外,用OS提供的“作业控制语句”将上述逻辑文件名和实际设备关联,如:ASSIGN SYS010-CR, SYSRDR (读卡机)
ASSIGN SYS012-DA-S-DISK, VOL=OS4F22,SHR (磁盘机,卷号为OS4F22,共享方式)
ASSIGN SYS013-LP,SYSLST (宽行打印机)
为文件分配外部文件。
只要用到INPUT-OUTPUT SECTION,文件控制段是必写的。
2、输入输出控制段 I-O-CONTROL.
可以指定目标程序运行时,几个文件共享一个内存区,以节省内存。
2012-12-31 (78~)
数据部(DATA DIVISION)是四部中的第三部分,是唯一描述数据的部分。
数据有两种:孤立的数据项和组合数据项。
程序过程部(PROCEDURE DIVISION)中出现的所有数据项都必须在数据部中说明,包括
(1) 每个数据项的属性(字符型、数值型…),在内存中的存储形式和长度
(2) 数据项之间的关系,如初等数据项还是组合项,哪些数据项属于文件,不从属于记录等。
(3) 描述记录和文件的关系,即内存中输入输出记录区是和哪一个文件有关
(4) 文件属性。
由多个记录组成一个物理块,一个记录的长度,文件是否有标号记录等。
数据部的作用是定义数据项属性,描述数据结构。
COBOL中把有从属关系的数据用层次(Level)关系来表示。
层次结构:
记录->组合项->初等项。
初等项(Elementary Item):逻辑上不能再细分的项。
组合项(Group Item):包含若干个初等项的项。
2013-1- (~)。