Cobol 语法基础
一.COBOL 语言的特点
最适于数据处理领域:算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一
定的逻辑 关系,大量的分类排序;COBOL比较接近英语,容易懂;通用性强,易植,COBOL结构严谨,层次分明。
二. COBOL的组成部分
1.标识部(IDENTIFICATION DIVISION):用于标识程序名。 IDENTIFICATION DIVISION.
PROGRAM-ID. 程序名。 [AUTHOR。 作者名。 ]
[INSTALLATION。 计算机设置场所。 ] [DATE-WRITTEN。 源程序编写日期。 ] [DATE-COMPILED。 源程序编译日期。 ] [SECURITY。 保密程度。]
2.环境部(ENVIRONMENT DIVISION):用于说明程序运行的环境。 ENVIRONMENT DIVISION.
CONFIGRATION SECTION。
SOURCE-COMPUTER。 源计算机名。 OBJECT-COMPUTER。 目标计算机名。 [SPECIAL-NAMES。 专用名描述项。 ] [INPUT-OUTPUT SECTION。
FILE-CONTROL。 {文件控制描述体} [I-O-CONTROL。 输入输出控制描述体]]
3.数据部(DATA DIVISION):用于说明程序中涉及的所有数据。
4.过程部(PROCEDURE DIVISION):是程序的核心部分,它决定计算机应进行什么操作。
三. 最简单的COBOL 程序举例
1.环境配置说明:
(1)安装“Fujitsu NetCOBOL for Windows V7.0”的企业版,安装完成后选择“COBOL Project
Manager”打开COBOL主控制台。
(2)选择“Open Project”打开存在的COBOL程序,或者输入新的Project名选择打开,可以建
立新的COBOL Project.。
(3)在主控制台新建的Project目录下创建新的文件,后缀名为EXE。
1
(4)在主控制台新建的文件下建立一个“COBOL Source Files”目录。
(5)在建立的“COBOL Source Files”目录下新建一个后缀名为”COB”的文件,该文件就是
COBOL的源程序文件。
(6)在主控制台上右击COBOL的源程序文件,将“main”选项设置为“Console”。
(7)编译时需要先compile源程序,再build上层的EXE文件,之后就可以执行该EXE文件
了。
(8)COBOL程序的整体结构图如下:
2.程序举例:
000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID。 PSAMPLE1. 000030 ENVIRONMENT DIVISION. 000040 DATA DIVISION.
000050 PROCEURE DIVISION. 000060 PROGRAM BEGIN.
000070 DISPLAY ‘THIS IS A COBOL PROGRAM.’ . 000080 PROGRAM DONE. 000090 STOP RUN。
2
说明: cobol源程序的格式如下:
(1). 每行开头有6个字符的序号区。可以输入000010,000020等表示行,因为目前的编辑器一般都会自动添加行号,所以一般不输。
(2). 序号区后面是一个字符(第7位)的指示符区,如第一行所示。可以用*和/表示注释,_表示续行,D表示调试。
(3). 指示符区后面是4个字符(8~11位)的A区。程序中有些内容如部头,节头,段头,层号 01,层号 77 及文件 描述符FD等应从A区开始写。
第12至此72列,称为“B区”。写程序中的正文部分。如过程部中的句子只能从B区开始写。 第73至80列,称为“注释区”。 COBOL字符集包括:
(4). 数字0 --- 9 ,字母 A--- Z ,a --- z , 专用字符:+ - * / = , . ; ‘ ( ) < > $ 及空格。属于系统字符集而不属于COBOL字符集的字符只能出现 在COBOL 程序中的字符串里。
3.习题:
1 熟悉COBOL的运行环境,程序结构和编译方式。
2 编写“Hello World”小程序,要求在屏幕上输出“Hello World”。
四.变量的定义
1数值型数据的描述:
(1).‘9’描述符: 表示该位置上可以放入一个0 ~ 9 之间的数字。因此: 01 A PIC 999. 或 01 A PIC 9(3).
表示A可以存放000 ~ 999 之间的一个三位数。有几个9表示有几位数。 注意:(1)在数值型数据项中只能放数字不能放空格。
(2)用‘9’描述符只能表示整数,如输入小数部分,则小数部分被舍弃。 (3)如送入一个负数,则负号被舍弃。
(4)如送入大于定义位数的数值,会从左开始舍弃多于的数。
(2)‘V’描述符: 指出在数值数据结构中隐含的小数点的位置。小数点不占内存单元。如: 01 M PIC 9(3)V9(2).
注意:(1)V在描述符的最后,则等于无小数点。 (2)一个数据的描述符中只能出现一个V。
(3)V表示的小数点只在传送或运算时起作用,不能被显示或打印出来。
(3)‘S’描述符: 如果想在数据项中放入一个带符号的数,可以用‘S’描述符。如: 01 M PIC S9(3)V9(2).
注意:(1)S描述符必须是最左边的一个描述符。
(2)在内存中,S不占位数,在传送或运算时起作用。
3
2字符型数据的描述:
由仸意的COBOL字符组成的数据,称为字符型数据,它是非数值型的,不能用于计算。用X描述符来表示字符型数据。如: 01 M PIC X(5). 注意:字符型数据中可以放数字。 3 编辑型描述符:
编辑型数据项只是作为输出数据时增加或改变某些所需的符号,起编辑作用,它不是作计算用的。下面分别介绍编辑数据项中用到的编辑描述符。 (1)。插入小数点‘。’,用‘。’描述符。如: 77 T PIC 99.99.
(2)。插入逗号‘,’作分位号,用‘,’描述符。如:
02 A PIC 999,999.99. (或PIC 9(3),9(3).9(2)) . (3)。插入空格,用‘B’描述符。如:
02 A PIC B9(3)B. (4)。插入正负号,用‘+’或‘-’描述符。如:
02 A1 PIC +9(3).(或 PIC 9(3)+) 02 A2 PIC -9(3).(或PIC 9(3)-)
注意:描述符‘+’,一律加符号。描述符‘-’只对负值加负号。 (5)。插入‘$’ 。如:
02 A1 PIC $999.99. 02 A2 PIC +$99999. 02 A3 PIC -$999.9. (6)。浮动插入正负号和‘$’
02 A1 PIC $$$99.99. 02 A2 PIC $$$$$.$$. 02 A3 PIC ++9.99.
(7)。取消高位零,用‘Z’和‘*’描述符。在高位零的位置上代以空格或‘*’。如: 02 A1 PIC Z(5).99. 02 A2 PIC *(5).*(2).
02 A3 PIC +ZZZ,ZZZ,ZZ.ZZ. 02 A4 PIC -*,***,***.99.
(8)。插入‘DB’和‘CR’字符。DB和CR只能用作固定插入,当数值为负时,在编辑型数据项中最后两个字节中置DB或CR,数值为正时,此两字节留空格。如: 02 A1 PIC $9(3).99DB. 02 A2 PIC $9(3).99CR. 4. VALUE子句:
VALUE子句用于给变量赋初值。如:
4
01 A PIC 9(3) VALUE 123.
*注意:
只有对工作单元节中的数据项才能赋初值,不能对文件节中输入输出文件中的数据项赋初值。
如果在组合项的描述体中使用VALUE,初值只能是表意常量或非数值型常量。 对组合项整体而言,一律按字符型数据项处理。
(3) 当用一个带符号的数值作初值时,相应的PIC子句中应有‘S’描述符。 (4) 赋初值时应该注意类型的一致性。
(5) VALUE子句给出的值应适合PIC子句的描述范围,否则会出现截断或产生错误。
*总结:输入专用符号:S,V
输出专用符号:, . B $ + - Z
说明:输入专用符号一般用在从外部设备读入数据的定义,输出专用符号一般用在输出数据
的定义。
定义数据时要根据数据的用途使用不同的符号,否则会编译出错。
如果要将输入数据以某种格式输出,则需要定义两种数据进行赋值操作。 5. COBOL在DATA DIVISON中进行变量以及文件记录的定义:
其格式为: (1). 普通变量 DATA DIVISION.
WORKING-STORAGE SECTION. NUM-DATA PIC 9.
01 STR-DATA PIC XX.
(2). 结构体定义 DATA DIVISON.
WORKING-STORAGE SECTION. 01 STRUCT-DATA.
05 NAME PIC X(4). 05 SEX PIC 9(4). 05 TEL PIC 9(8).
结构体中的每个变量都可以在程序中单独使用,当引用到结构体时相当于引用了结构体中的全部变量。如DISPLAY STRUCT-DATA. 就会将 NAME, SEX, TEL的值都显示在屏幕上.
(3).文件记录的定义 DATA DIVISION. FILE SECTION. FD PHONE-FILE
LABEL RECORDS ARE STANDARD. 01 PHONE-RECORD.
5