
COBOL语言基础教程.doc
25页cobol语言基础培训教程2009年04月23日 | 5:23 下午分类:大型机|Mainframe | 标签:cobol 数据类型、COBOL 程序举例、cobol入门、cobol教程、cobol语言、大型机培训 | CHAPTER 1 COBOL 概述COBOL 是Common Business Oriented Language 的缩写它不仅是商业数据处理的理想语言,而且广泛用于数据管理领域,因此COBOL 语言也被称为”用于管理的语言”COBOL 语言的特点最适于数据处理领域:算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一定的逻辑 关系,大量的分类排序;COBOL比较接近英语,容易懂;通用性强,易移植,COBOL结构严谨,层次分明COBOL的组成部分:1标识部(IDENTIFICATION DIVISION):用于标识程序名环境部(ENVIRONMENT DIVISION):用于说明程序运行的环境数据部(DATA DIVISION):用于说明程序中涉与的所有数据过程部(PROCEDURE DIVISION):是程序的核心部分,它决定计算机应进行什么操作。
三最简单的COBOL 程序举例:COL 1 —6 7 8 12—72 73—80IDENTIFICATION DIVISIONPROGRAM-ID PSAMPLE1ENVIRONMENT DIVISIONDATA DIVISIONPROCEURE DIVISIONDISPLAY ’THIS IS A COBOL PROGRAM.’STOP RUNCOBOL 源程序的书写格式:第1 至 6 列为 ”标号区” 第7列为”续行标志区”第8至此11列,称为”A区”程序中有些容如部头,节头,段头,层号 01,层号 77 与文件描述符FD等应从A区开始写第12至此72列,称为”B区”写程序中的正文部分如过程部中的句子只能从B区开始写第73至80列,称为”注释区”COBOL字符集包括:数字0 — 9 ,字母 A— Z ,a — z , 专用字符:+ - * / = , . ; ’ ( ) < > $ 与空格属于系统字符集而不属于COBOL字符集的字符只能出现 在COBOL 程序中的字符串里常量:COBOL 常量分为数值常量(如 100,-29),非数值常量(如 ’ABC’ )和表意常量(如 ZERO,SPACE,HIGH-VALUE,LOW-VALUE ,QUOTE ,ALL 常量)。
七COBOL 所处理的数据的特点层次的概念:数据间存在的从属关系文件的概念:多个记录可以组成一个文件记录的概念:具有一定层次关系的一组数据项的最大集合,它是存中具有独立逻辑含义的最大存取项,具有最高层次CHAPTER 2 过程部初步一输入输出语句ACCEPT语句:直接从终端键盘或系统指定的输入设备上输入数据ACCEPT 标识符 [FROM 助忆名]注:A标识符(identifier)指的是能唯一地标识一个数据项的数据名,不能唯一地标识一个数据项的数据名不是标识符标识符可以是组合项在ACCEPT语句中如不写FROM部分,如ACCEPT A ,则表示从系统隐含指定的设备上读入一个数据给A 如果不想从指定的设 备上输入,则要用FROM 选项,这时”助忆名”需要在环境部中事先说明和那种外部设备相联系如:ENVIRONMENT DIVISION环境部)CONFIGRATION SECTION配置节)SPECIAL-NAMES专用名段)CONSOLE IS ABC如在过程部中有 ACCEPT T FROM ABC 则表示要从控制台接收数据2DISPLAY语句:从计算机存中输出到某一指定的输出设备上。
DISPLAY { 标识符1,常量1}[标识符2,常量2][UPON 助忆名]( 标识符和助忆名的说明同上)ACCEPT语句和DISPLAY语句不必定义文件适用于少量的数据输入输出READ语句:COBOL语言中数据的输入输出主要是通过对外部文件的读写进行的READ 语句就是从外部文件上读入数据输 出到程序中的数据项中在程序中用到的所有文件都需要在环境部中指定程序中用到的文件名与实际外部文件的联系数据部也要对文件加以描述指定数据结构各数据项所占的存单元长度以与数据形式COBOL 的存取是以文件为对象以记录为单位的READ语句的最简单的格式为: READ 文件名ENVIRONMENT DIVISIONINPUT-OUTPUT SECTIONFILE-CONTROLSELECT IN-FILLE ASSIGN TO 外部文件名为了存储读入的记录,必须在存开辟一个与文件记录长度相等的存储区,即’输入文件纪录区’每一个输入文件都有相应的’输入文件纪录区’,与之一一对应亦即在数据部中描述文件的数据结构READ语句:假设 IN-FILE 文件每一记录中包含的容为:产品代码,产品数量,产品单价,生产日期。
设某一记录的具体数据如下:0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 9 9 9 0 3 2 2prodcode quantity price year mon day如果我们希望读入该记录并对各数据项进行处理,则需要在 ’输入纪录区’中划分出各数据项,以便存放相应的数据定义输入纪录区以与划分记录区中各数据项的工作是由数据部来完成的下面我们简单介绍数据部定义记录区方法,针对上面输入数据的特点,我们可以在数据部中对记录区作如下描述:DATA DIVISIONFD IN-FILE LABLE RECORD IS STANDARD01 IN-RECORD (定义记录区名为IN-RECORD)02 PROD-CODE PIC 9(4)02 PROD-QUANTITY PIC 9(5)02 PROD-PRICE PIC 9(6)02 MANU-DATE生产日期为一组合项)05 DATE-CCYY PIC 9(4)。
05 DATE-MM PIC 9(2)05 DATE-DD PIC 9(2)其中,FD 即 FILE DESCRIPTION,表示从该行起是’文件描述体’LABLE RECORD IS STANDARD :所有的磁盘文件和磁带文件都必须写明此句01 层定义’输入纪录区’ 的名字为IN-RECORD,由于 01层属于FD描述体,因此也就指定了 IN-RECORD 和 IN-FILE 的关系亦即从IN-FILE 读入的数据存放在 IN-RECORD记录区中这样,在执行一次READ语句后,文件中一个记录的数据便输入到存记录区,按排列顺序分别送到记录区中各数据项中注意文件的各记录中的数据是不分数据项的,只是按一定的顺序把数据存放在各字节中所以数据部对记录区中各数据项的描述应该与文件的记录中各数据排列次序和长度相一致READ 语句的一般形式:READ 文件名 RECORD [INTO 标识符] [AT END 执行语句] , 例如:READ IN-FILE INTO TEMP-RECORD AT END STOP RUN 该语句除了将读到的数据传送到IN-RECORD之外,还传送到TEMP-RECORD中。
在遇到文件尾时,程序完毕运行WRITE语句:将存中的数据输出到外部设备,主要是由WRITE 语句来完成的WRITE语句的最简单的格式为:WRITE 记录名 (注意WRITE语句的操作对象是记录,所以是’记录名’而不是’文件名’)与输入文件相似输出文件也要在环境部中指定所对应的实际存在的外部文件:ENVIRONMENT DIVISIONINPUT-OUTPUT SECTIONFILE-CONTROLSELECT OUT-FILLE ASSIGN TO 打印机名也要在数据部中定义输出记录区:DATA DIVISIONFD OUT-FILE LABLE RECORD IS OMITTED01 OUT-RECORD02 PROD-CODE PIC 9(4)02 PROD-QUANTITY PIC 9(5)02 PROD-PRICE PIC 9(6)02 MANU-DATE05 DATE-CCYY PIC 9(4)05 DATE-MM PIC 9(2)05 DATE-DD PIC 9(2)。
LABLE RECORD IS OMITTED :凡输出设备是打印机的都必须写明此句如输出设备是磁盘,则仍用LABLE RECORD IS STANDARD01 层定义’输出纪录区’ 的名字为OUT-RECORD,由于 01层属于FD描述体,因此也就指定了OUT-RECORD 和OUT-FILE 的关系在用WRITE 语句输出一个记录之前,应向输出记录区传送数据如已将数据传送到上述各数据项中,则在执行 W RITE OUT-RECORD 语句后,则记录区中的数据通过打印机打印出来WRITE 语句的一般形式: 标识符 2 LINEBEFORE 整数 LINESWRITE 记录名 [FROM 标识符 1 ] AFTER ADVANCING 助忆名PAGE5OPEN语句:程序中如果需要读写文件,则该文件必须先用OPEN语句打开,系统在执行READ,WRITE以前先检查该文件是否已在规定的外部设备上准备就绪OPEN语句的一般格式为:INPUT 文件名1 [,文件名2]。
OPEN OUTPUT 文件名3 [,文件名4] CLOSE语句:当对一个文件的读或写的操作已完成,就应关闭该文件CLOSE语句的一般格式为:CLOSE 文件名 1 [,文件名2]COBOL通过2位长度的文件状态字(FILE-STATUS)来表示文件的操作结果是否成功,常见的文件状态值与意义:二算数运算语句1ADD语句:格式1:ADD 标识符1 ,标识符2 TO 标识符m [,标识符n]常量1 ,常量2格式2:ADD 标识符1 ,标识符2 ,标识符3常量1 ,常量2 ,常量3GIVING 标识符m [,标识符n]SUBTRACT语句:格式1:SUBTRACT 标识符1 ,标识符2 FROM 标识符m [,标识符n]常量1 ,常。
