COBOL学习笔记_20121231

合集下载

cobol学习02——基本语句

cobol学习02——基本语句

cobol学习02——基本语句1.MOVE语句 是整个COBOL中最常⽤额语句。

可以实现变量的赋值,参数传递等类似功能。

可以对单个数据进⾏复制,也开业对⼀组数据进⾏复制。

 a、复制单个数据  例: 01 IN-STATUS PIC X(5). --> MOVE 'READY' TO IN-STATUS. --> MOVE IN-STATUS TO OUT-STATUS. 说明:当复制的数据为数值类型时 如果⽬标数据的长度⼤于源数据项内容的长度时,则在⽬标数据项的⾼位以0进⾏填充 如果⽬标数据的长度⼩于源数据项内容的长度,对⾼位超出部分进⾏截断。

如果数值含有⼩数部分,需要作为浮点数做相应处理。

b、复制⼀组数据 通过MOVE语句对⼀组数据进⾏复制。

MOVE语句中的两个变量分别是数据组的名称。

注意点: 所复制的组内数据必须同名,不同名的数据将不被复制。

如果数据项在分组中,则分组名称也必须相同。

数据项在组内的顺序可以任意。

以FILLER命名的数据项不被复制。

2.PERFORM语句 执⾏COBOL中所编写的相应的处理过程。

过程处理相当于COBOL中的函数,PERFORM⽤于调⽤这些函数。

可通过THRU选项同时对多个处理过程进⾏执⾏。

3.ACCEPT和DISPLAY语句 可以⽅便调试。

a、ACCEPT语句接收数据 既可以接收⽤户从终端输⼊的数据,也可以接收由系统产⽣的相应数据。

接收的数据存放在 COBOL数据部中所定义的相应变量中。

4.REDEFINES语句 ⽤于同⼀块内存区域内进⾏重定义。

可以定义多个指向同⼀内存区域的变量。

01 TEST-AREA. 05 TEST-A PIC X(4). 05 TEST-B REDEFINES TEST-A.5.⽂件相关语句 ⽂件包括常规⽂件,以及VSAM⽂件。

基本操作包括⽂件的打开、关闭、⽂件读写。

a、OPEN和CLOSE语句 OPEN语句⽤于⽂件的打开操作。

cobol教程

cobol教程

cobol教程COBOL教程COBOL(Common Business-Oriented Language)是一种面向商业应用的编程语言,它主要用于处理大型企业的数据处理和事务处理。

本教程旨在帮助初学者了解和学习COBOL的基本概念和语法规则,从而能够编写简单的COBOL程序。

1. 基本语法COBOL程序由一系列的“句子”组成,每个句子以句点(.)结束。

句子由一系列的“词”组成,每个词由一个或多个字符组成。

COBOL对大小写敏感,因此要注意单词的大小写。

2. 数据定义在COBOL中,需要先定义要处理的数据。

可以使用“DATA DIVISION”来定义数据项及其属性。

数据项可以是数字、字符或日期等类型。

例如,可以定义一个名为“EMPLOYEE-ID”的变量来存储员工的唯一标识。

3. 过程部分过程部分是COBOL程序的核心,用于执行实际的业务逻辑。

可以使用各种控制结构(如IF语句和PERFORM循环)来实现条件判断和循环操作。

通过使用一系列的“句子”来描述要执行的操作。

4. 文件处理COBOL可以处理各种类型的文件,如顺序文件和索引文件。

可以使用“FILE SECTION”来定义文件及其属性,然后使用相关的文件处理语句来读取和写入文件。

5. 运行和调试COBOL程序可以通过COBOL编译器进行编译,并通过COBOL运行时系统来执行。

可以在运行过程中进行调试,以便找出程序中的错误并进行修复。

总结本教程提供了COBOL的基本概念和语法规则的介绍,以及一些常用的编程技巧和注意事项。

希望通过学习本教程,您能够对COBOL有一个初步的了解,并能够编写简单的COBOL程序。

COBOL简易教程

COBOL简易教程

COBOL简易教程主要内容1.COBOL语言的基本概念及程序的结构•一个例子●COBOL程序的结构●COBOL源程序的书写格式2.COBOL数据表示•常量•层次的概念•PICTURE语句•数据在内存中的各种形式3.算术运算●变量赋值 (MOVE, MOVE CORR)●算术运算(ADD, SUB, MUL, DIV, COMPUTE等)●内部函数4.字符串处理●合并、分离、取子串、替换等5.程序逻辑控制•条件的分类•IF、EVALUATE●PERFORM6.表处理定义、赋值、引用、查询7.读、写多格式记录文件8.常用语句小结9.子程序1.关于COBOL的初步知识◆COBOL是Common Business Oriented Language (通用商业语言,或称管理语言)的缩写◆最适用于数据处理◆比较接近于自然语言(英语)◆COBOL的结构严谨,层次性强◆COBOL的缺点是比较烦琐。

1.1 一个例子:***************************************************************** * * COBOL TRAINING PROGRAM * * VERSION 2.1.0 COPYRIGHT (C) 2004 * * WISTRON DALIAN SOFTWARE CO., LTD. * * ALL RIGHTS RESERVED. * * * **************************************************************** IDENTIFICATION DIVISION.PROGRAM-ID. EXERCIS6.AUTHOR. QXLU (WISTRON DALIAN).DATE-WRITTEN. 04-06-23.DATE-COMPILED. 04-06-23.*----------------------------------------------------------------* * COMMENT : * * * *----------------------------------------------------------------* ENVIRONMENT DIVISION.CONFIGURATION SECTION.SOURCE-COMPUTER. IBM-3084.OBJECT-COMPUTER. IBM-3084.INPUT-OUTPUT SECTION.FILE-CONTROL.SELECT DDI01 ASSIGN TO "DDI01".SELECT DDO01 ASSIGN TO "DDO01".*DATA DIVISION.FILE SECTION.*FD DDI01 LABEL RECORD IS STANDARD DATA RECORD AREIN-AREA0, IN-AREA1.01 IN-AREA0.05 IN-YEAR-NUM PIC 9(2).05 IN-PRINCIPAL PIC 9(4)V99.05 FILLER PIC X(07).05 RMARK PIC X(01) VALUE X"0A".01 IN-AREA1.05 IN-INTEREST-RATE OCCURS 5 TIMES PIC V999.05 RMARK PIC X(01) VALUE X"0A".FD DDO01 BLOCK 0 RECORDS LABEL RECORD STANDARD RECORDING F.01 PRT-REC.05 FILLER PIC X(79).**===============================================================* WORKING-STORAGE SECTION.01 IN-FILE-DATA.05 YEAR-NUM PIC 9(2).05 PRINCIPAL PIC 9(4)V99.05 INTEREST-RATE-TABLE.15 INTEREST-RATE OCCURS 5 TIMES PIC V999.*01 HEADER0 PIC X(79) VALUE' TABLE OF SIMPLE INTEREST'.01 HEADER1 PIC X(79) VALUE' ************************************'.01 HEADER2 PIC X(79) VALUE' PRINCIPAL 4,000.00 FOR 10 PERIODS'.01 HEADER3 PIC X(79) VALUE SPACE.01 HEADER4 PIC X(79) VALUE' PERIOD INTEREST RATE'.01 HEADER5.05 OUT-I-R OCCURS 5 TIMES PIC BBBBBBBBB.999.01 DETAIL0.05 OUT-PERIOD PIC ZZZ.05 OUT-P-I-S-ITEM OCCURS 5 TIMES.10 FOURSPACES PIC X(04) VALUE SPACE.10 OUT-P-I-SUM PIC 9,999.99.01 CNT-YEAR-NUM PIC 9(2).01 I-R-INDEX PIC 9.01 P-I-SUM PIC 9(6)V99.****************************************************************** * P R O C E D U R E D I V I S I O N * ***************************************************************** PROCEDURE DIVISION.*INPUT-DATA SECTION.OPEN INPUT DDI01.OPEN OUTPUT DDO01.READ DDI01.MOVE IN-YEAR-NUM TO YEAR-NUM.MOVE IN-PRINCIPAL TO PRINCIPAL.READ DDI01.MOVE IN-AREA1 TO INTEREST-RATE-TABLE.*PROCESS-OUTPUT-DATA SECTION.*PRINT HEADERWRITE PRT-REC FROM HEADER0 BEFORE 1.WRITE PRT-REC FROM HEADER1 BEFORE 1.WRITE PRT-REC FROM HEADER2 BEFORE 1.WRITE PRT-REC FROM HEADER3 BEFORE 1.WRITE PRT-REC FROM HEADER4 BEFORE 1.* PRINT INTEREST RATEPERFORM TEST BEFORE VARYING I-R-INDEXFROM 1 BY 1 UNTIL I-R-INDEX > 5MOVE INTEREST-RATE( I-R-INDEX ) TO OUT-I-R( I-R-INDEX )END-PERFORM.WRITE PRT-REC FROM HEADER5 BEFORE 1.*PROCESS & PRINT DETAILSPERFORM PRINT-DETAILVARYING CNT-YEAR-NUM FROM 1 BY 1UNTIL CNT-YEAR-NUM > YEAR-NUM.*CLOSE-FILES SECTION.CLOSE DDI01.CLOSE DDO01.*STOP RUN.**---------------------------------------------------------------** PRINT-DETAIL **---------------------------------------------------------------*PRINT-DETAIL SECTION.*MOVE CNT-YEAR-NUM TO OUT-PERIOD.PERFORM PROCESS-DETAILVARYING I-R-INDEX FROM 1 BY 1 UNTIL I-R-INDEX > 5.WRITE PRT-REC FROM DETAIL0 BEFORE 1.*PRINT-DETAIL-RTN.EXIT.**---------------------------------------------------------------** PROCESS-DETAIL **---------------------------------------------------------------*PROCESS-DETAIL SECTION.*COMPUTE P-I-SUM = PRINCIPAL *( INTEREST-RATE( I-R-INDEX ) * CNT-YEAR-NUM + 1 ).MOVE P-I-SUM TO OUT-P-I-SUM( I-R-INDEX ).*PROCESS-DETAIL-RTN.EXIT.** *** END OF CODING EXERCIS6 ***1.2 COBOL 程序的结构(1/p4)部(Division) 一部可包括若干节节(Section) 一节可包含若干段段(Paragraph) 一段可包含若干句子句子(Sentence) 一个句子可包含若干语句语句(Statement) 制定计算机完成一定的操作子句(Clause) 制定完成某一方面的功能每个程序应包含四个部IDENTIFICATION DIVISION (标识部)主要用来指定源程序名字,也可以写入其他用作备忘的某些信息(如日期、作者等)。

COBOL学习基础教程 01

COBOL学习基础教程 01

COBOL 概述1.COBOL语言的发展概述COBOL是Common Business Oriented Language(商业通用语言)的缩写。

实际上,COBOL不仅是商业数据处理的理想语言,而且广泛应用于数据管理领域,如财会工作,统计报表,计划编制,情报搜索,人事管理等。

因此COBOL也被称为“用于管理的语言“。

在计算机的应用领域中,数据处理(data processing)是应用最为广泛的一个领域。

数据处理的日益广泛应用要求人们设计出能满足实际数据处理工作中各种要求的一种计算机语言。

COBOL就是在这种形势下应运而生的。

1959年COBOL-611965年COBOL-651978年COBOL-781985年COBOL-852.COBOL语言的特点①最适于数据处理领域。

所谓数据处理是指对大量数据的收集,统计,分类和加工。

例如企业管理,库存管理,报表统计,账目管理,信息情报检索等方面都属于数据处理。

数据处理的特点是:算术计算量小而逻辑处理多;输入输出多;数据间存在着一定的逻辑关系;大量的分类排序;对打印报表要求比较高,多样化等等。

②COBOL比较接近于自然语言(英语)。

COBOL程序看起来很像一篇用英语写出来的文章。

比如 ADD A TO B 表示 A + B = B 。

COBOL采用大量英文词汇和句型,学过英语的人看COBOL程序感到通俗易懂。

③通用性强,由于COBOL语言的标准化程度较高。

一个计算机上的COBOL程序向另一计算机系统上移植是比较容易实现的。

④COBOL的结构严谨,层次分明。

每个程序分四大部分(称为部 DIVISION),每个部下面分为若干节,每个节下面分为若干段。

每一部分都有固定的程式。

⑤COBOL的缺点是比较繁琐。

无论程序大小简繁,四大部分都要写齐,对每个部进行必要的定义和说明。

因此源程序显得比较冗长。

3.COBOL程序的结构①部IDENTIFICATION DIVISION(标识部) : 主要用来指定源程序的名字,也可以写入其他做备忘的某些信息。

COBOL培训教程-11

COBOL培训教程-11

COBOL培训教程-11COBOL是一种过程型编程语言,最初由美国联邦政府财政部和IBM公司共同开发,主要应用于商业和金融领域。

随着计算机技术的不断发展和商业需求的变化,COBOL确立了其在企业信息系统中的重要地位。

而为了满足企业对COBOL程序员的需求,也为有志成为COBOL开发人员的IT专业人士提供了学习机会,许多培训机构开始提供COBOL培训教程,其中包括“COBOL培训教程-11”。

一、“COBOL培训教程-11”是什么?“COBOL培训教程-11”是一个专门为COBOL初学者或想深入学习COBOL的人提供的培训教程。

本教程涵盖了COBOL的基本语法、程序结构、数据类型、数据处理、文件处理、子程序等内容,同时还涉及到企业级COBOL程序的编写和调试。

本教程注重实践操作,通过编写实际的程序来帮助学习者更好地理解和掌握COBOL编程。

二、为什么要学习COBOL?COBOL是一种非常稳定、安全、高效的编程语言,被广泛应用于金融、制造、保险、医疗等行业的业务处理和管理系统。

许多企业的信息系统至今仍在使用COBOL编写的程序,需要维护和升级。

因此,学习COBOL开发有非常广阔的就业前景。

除此之外,COBOL还有以下优点:1. 语法简单易懂,学习门槛不高。

2. 可以处理大型数据,并有效地组织和管理数据。

3. 可以与其他编程语言或工具集成,提供灵活性。

4. 可以从源代码的角度审计系统,保证信息安全。

三、“COBOL培训教程-11”的学习流程1. 熟悉COBOL开发环境学习COBOL之前,需要熟悉COBOL开发环境。

现有的主流开发环境包括微软Windows、Linux、UNIX等,还需要安装COBOL编译器和调试器等开发工具。

在学习过程中需要熟练掌握开发环境的基本使用方法。

2. 学习COBOL基本语法COBOL的基本语法包括程序结构、基本语句、数据类型、运算符等。

学习者需要熟悉这些基本语法,从而能够编写简单的COBOL程序。

COBOL基础培训

COBOL基础培训
➢ COBOL是Common Business Oriented Language的缩写,是面向商业通用编程语言。 它是专门为商业数据处理而设计的计算机高级程序语言。广泛用于数据管理领域。应用 于多个行业如:银行,证券,金融,制造,等等。
➢ 1960年4月正式发表COBOL 61。目前最新版COBOL 2002。
➢ 常量:COBOL常量分为数值常量,非数值常量,表意常量。 ✓ 数值常量:由数字 0 ~ 9 ,正负号和小数点组成,如:123, 45.67, -890 ✓ 非数值常量:用匹配的引号(单)括起来的字符串,如:’$123’,’HELLO!’。 由纯数字组成 的非数值常量不能用于数学运算,如:’123’和123不同。 ✓ 表意常量: QUOTE, QUOTES表示引号,如:QUOTE ‘HENRY’ QUOTE ZERO, ZEROS, ZEROES : 表示零字符;SPACE, SPACES : 表示空格 HIGH-VALUE, HIGH-VALUES : 表示具有最高值的字符(每个字符二进制为11111111) LOW-VALUE, LOW-VALUES : 表示具有最低值的字符 (每个字符二进制为00000000) ALL : 表示由该量组成的字符串
➢ 数据名:相当于其它语言中的变量名,它代表一个具体的数据项。 ✓ 只能由字母(至少一个),数字和连字符“-“组成,连字符不能出现在两端,不能包含空格 ✓ 数据名长度不能超过30个字符 (length<=30) ✓ 尽量使用有意义的英文字或拼音,如:NAME,XING-MING ✓ 不能用保留字作为数据名,多使用连字符,如: NAME-OF-STUDENT
ENVIRONMENT
INPUT-OUTPUT
FILE-CONTROL.

cobol学习笔记

cobol学习笔记

cobol学习笔记(1) COBOL入門 COBOLとは?2010/06/29 16:35COBOL面向商业的通用语言 (Common business Oriented Language) コボル∙ 1960.04 CODASYL-60∙ 1968. ANSI COBOL(COBOL68)第1次規格∙ COBOL74 第2次規格∙ COBOL85 第3次規格∙ COBOL2002 第4次規格COBOL是Common Business-Oriented Language(公用面向商业的语言)的缩写,主要供数据处理、数据收集及分析之用。

COBOL自60年代初开始广泛应用于计算机应用领域(商业和其他领域)。

事实上,除了商业之外,各种管理工作都广泛使用COBOL,如各种统计工作,财会工作,企业计划编制,作业制度,情报检索,人事管理等。

COBOL针对商业世界的使用,是真正商用应用程序开发的首选语言。

1.适于数据处理领域。

2.采用英语语法的高级语言,可读性、可维护性、可移植性较强。

3.通用性强,标准化程度较高。

4.结构严谨,层次分明。

5.缺点是比较繁琐。

cobol的书写格式(每行)1、前6列为序号区(一般不编辑)2、第7列为标示列,仅可以写如下几个标示符。

a. “*” 注释符(注释当前行的代码)b “/“ 注释符(注释当前行的代码,程序编译时,强制程序清单另起一页,不建议使用)c “-“ 字符串连接符d “D” DEBUG行标示符(程序为DEBUG模式时,标有该标示符的语句行代码执行,否则和注释行效果一样)3、第8列---11列为A区,包括以下内容。

a 部、节名。

b 层号014、第12列---72列为B区,过程部的程序必须写在B区中。

5、第72以后部分不能编辑。

cobol学习笔记(2)COBOL的程序结构 IDENTIFICATION DIVISION 标识部見出し部2010/06/29 20:44COBOL程序由4部(DIVISION)组成:IDENTIFICATION DIVISION.(标识部)、ENVIRONMENT DIVISION.(环境部)、DATA DIVISION.(数据部)、PROCEDURE DIVISION.(过程部),而每个部又由若干节 (SECTION)组成。

COBOL程序设计语言入门教程

COBOL程序设计语言入门教程

COBOL程序设计语言入门教程第一章:COBOL简介COBOL,全称为“公共业务计算机编程语言”(Common Business-Oriented Language),是一种专门针对商业应用开发的高级程序设计语言。

本章节将为读者介绍COBOL的背景、特点以及应用领域。

1.1 COBOL的背景COBOL于1960年首次发布,由美国政府、大型企业和专业团体联合开发。

当时,计算机还是新兴的技术,大多数应用主要集中在科学计算领域。

为了适应商业应用的特殊需求,COBOL 应运而生。

1.2 COBOL的特点COBOL以易读性和易维护性著称。

它采用了自然语言风格的编码,使得非专业的程序员也能轻松理解和修改代码。

此外,COBOL还具有丰富的数据处理功能和强大的文件处理能力,适用于处理大量数据的商业应用。

1.3 COBOL的应用领域COBOL广泛应用于金融、保险、银行、物流以及政府行政等领域。

由于COBOL的稳定性和成熟性,一些大型企业仍在使用COBOL开发和维护核心业务系统。

第二章:COBOL基础语法在本章节中,我们将介绍COBOL的基本语法,包括程序结构、数据类型、变量定义、运算符等内容。

2.1 程序结构COBOL程序由多个部分组成,包括程序头、数据定义、主程序和辅助程序。

程序头包含程序名称、作者、日期等信息;数据定义定义所有的变量和文件;主程序包含实际的业务逻辑;辅助程序用于处理一些通用的功能。

2.2 数据类型和变量定义COBOL的数据类型包括数字、字符串、日期、逻辑等。

变量定义使用关键字“PIC”(Picture)来指定变量的类型和长度,例如“PIC 9(4)”表示一个4位数的整数变量。

2.3 运算符COBOL支持常见的算术运算符(加、减、乘、除)和逻辑运算符(与、或、非)。

此外,COBOL还提供了特殊的字符串连接运算符和条件运算符,用于处理字符串和条件语句。

第三章:COBOL程序设计在本章节中,我们将介绍COBOL程序的设计方法和常用技巧,包括文件处理、条件语句、循环结构以及子程序的使用。

COBOL语言基础教程

COBOL语言基础教程

COBOL语言基础教程1.数据定义:在COBOL中,数据定义是程序的核心。

它定义了各种数据项的类型和长度,如数值、字符串、日期等。

COBOL提供了特殊的关键字和语法用于定义这些数据项。

2.数据处理:COBOL提供了许多内置函数和操作符,用于处理和计算数据。

这些函数和操作符可用于进行数学运算、日期计算、字符串处理等。

COBOL还具有丰富的条件和循环语句,用于控制程序的流程。

3.文件处理:COBOL是一种事务处理语言,它可以处理大量的数据。

在COBOL中,可以定义文件结构和记录布局,并使用特殊的关键字和语句来读取、写入和更新文件数据。

这使得COBOL成为处理大型数据库的有效工具。

4.子程序:COBOL支持子程序的概念,用于将程序分割成一系列可重用的模块。

这使得程序的开发和维护更加容易。

子程序可以被其他程序调用,并传递参数进行数据交换。

5.错误处理:COBOL具有强大的错误处理机制。

它提供了异常处理和错误检测的能力,以确保程序能够适应各种错误情况,并采取适当的措施。

这有助于保护程序免受潜在的错误和异常的影响。

6.编程规范:COBOL具有一套严格的编程规范和命名约定。

这些规范旨在使程序易于理解和维护,并提高程序员之间的协作。

遵循这些规范将使程序具有一致的外观和结构。

7.部署和调试:COBOL代码可以在各种计算机系统上运行,包括大型主机和小型服务器。

由于COBOL的稳定性和广泛性,许多工具和调试器可用于帮助开发和调试COBOL程序。

总结起来,COBOL是一种功能强大且广泛应用于商业应用程序开发的编程语言。

它有自己独特的语法结构和特殊的数据处理功能,适用于处理商业交易和数据处理。

掌握COBOL的基础知识将有助于开发和维护商业应用程序的工作。

COBOL编程基础教程:COBOL简介、应用场景和目标受众说明书

COBOL编程基础教程:COBOL简介、应用场景和目标受众说明书

About the T utorialCOBOL stands for Common Business-Oriented Language. The US Department of Defense, in a conference, formed CODASYL (Conference on Data Systems Language) to develop a language for business data processing needs which is now known as COBOL.COBOL is used for writing application programs and we cannot use it to write system software. The applications like those in defense domain, insurance domain, etc. which require huge data processing make extensive use of COBOL. AudienceThis tutorial is designed for software programmers who would like to learn the basics of COBOL. It provides enough understanding on COBOL programming language from where you can take yourself to a higher level of expertise. PrerequisitesBefore proceeding with this tutorial, you should have a basic understanding of computer programming terminologies and JCL. A basic understanding of any of the programming languages will help you understand the concepts of COBOL programming and move fast on the learning track.Copyright & DisclaimerCopyright 2014 by Tutorials Point (I) Pvt. Ltd.All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish any contents or a part of contents of this e-book in any manner without written consent of the publisher.We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our website or its contents including this tutorial. If you discover any errors on our website or inthistutorial,******************************************T able of ContentsAbout the Tutorial (i)Audience (i)Prerequisites (i)Copyright & Disclaimer (i)Table of Contents ...................................................................................................................................... i i 1. OVERVIEW . (1)Introduction to COBOL (1)Evolution of COBOL (1)Importance of COBOL (1)Features of COBOL (2)2. ENVIORNMENT SETUP (3)Installing COBOL on Windows/Linux (3)Compiling COBOL Programs (3)Executing COBOL Programs (4)Executing COBOL-DB2 programs (4)Try it Option Online (6)3. PROGRAM STRUCTURE (7)Divisions (8)4. BASIC SYNTAX (12)Character Set (12)Coding Sheet (13)Character Strings (14)Comment (14)Literal (16)COBOL Word (17)5. DATA TYPES (19)Data Name (19)Level Number (20)Picture Clause (21)Value Clause (22)6. BASIC VERBS (24)Input / Output Verbs (24)Initialize Verb (25)Move Verb (26)Legal Moves (28)Add Verb (28)Subtract Verb (30)Multiply Verb (32)Divide Verb (33)Compute Statement (34)7. DATA LAYOUT (36)Redefines Clause (36)Renames Clause (37)Usage Clause (38)Copybooks (40)8. CONDITIONAL STATEMENTS (41)IF Condition Statement (41)Relation Condition (42)Sign Condition (44)Class Condition (45)Condition-name Condition (46)Combined Condition (48)Evaluate Verb (49)9. LOOP STATEMENTS (51)Perform Thru (51)Perform Until (52)Perform Times (53)Perform Varying (54)GO TO Statement (55)10. STRING HANDLING (57)Inspect (57)String (59)Unstring (60)11. TABLE PROCESSING (63)Table Declaration (63)Subscript (65)Index (66)Set Statement (67)Search (69)Search All (69)12. FILE HANDLING (72)Field (72)Record (73)File (73)13. FILE ORGANIZATION (74)Sequential File Organization (74)Relative File Organization (75)14. FILE ACCESS MODE (77)Sequential Access (77)Random Access (78)Dynamic Access (79)15. FILE HANDLING VERBS (81)Open Verb (81)Read Verb (82)Write Verb (85)Rewrite Verb (87)Delete Verb (89)Start Verb (90)Close Verb (91)16. SUBROUTINES (92)Call Verb (92)Call By Reference (92)Call By Content (94)Types of Call (95)17. INTERNAL SORT (96)Sort Verb (96)Merge Verb (98)18. DATABASE INTERFACE (101)Embedded SQL (101)DB2 Application Programming (101)Host Variables (101)SQLCA (102)SQL Queries (103)Cursors (109)19. INTERVIEW QUESTIONS (112)What is Next? (116)1. OVERVIEWIntroduction to COBOLCOBOL is a high-level language. One must understand the way COBOL works. Computers only understand machine code, a binary stream of 0s and 1s. COBOL code must be converted into machine code using a compiler. Run the program source through a compiler. The compiler first checks for any syntax errors and then converts it into machine language. The compiler creates an output file which is known as load module. This output file contains executable code in the form of 0s and 1s. Evolution of COBOLDuring 1950s, when the businesses were growing in the western part of the world, there was a need to automate various processes for ease of operation and this gave birth to a high-level programming language meant for business data processing.∙In 1959, COBOL was developed by CODASYL (Conference on Data Systems Language).∙The next version, COBOL-61, was released in 1961 with some revisions.∙In 1968, COBOL was approved by ANSI as a standard language for commercial use (COBOL-68).∙It was again revised in 1974 and 1985 to develop subsequent versions named COBOL-74 and COBOL-85 respectively.∙In 2002, Object-Oriented COBOL was released, which could use encapsulated objects as a normal part of COBOL programming.Importance of COBOL∙COBOL was the first widely used high-level programming language. It is an English-like language which is user friendly. All the instructions can be coded in simple English words.∙COBOL is also used as a self-documenting language.∙COBOL can handle huge data processing.7∙COBOL is compatible with its previous versions.∙COBOL has effective error messages and so, resolution of bugs is easier. Features of COBOLStandard LanguageCOBOL is a standard language that can be compiled and executed on machines such as IBM AS/400, personal computers, etc.Business OrientedCOBOL was designed for business-oriented applications related to financial domain, defense domain, etc. It can handle huge volumes of data because of its advanced file handling capabilities.Robust LanguageCOBOL is a robust language as its numerous debugging and testing tools are available for almost all computer platforms.Structured LanguageLogical control structures are available in COBOL which makes it easier to read and modify. COBOL has different divisions, so it is easy to debug.82. ENVIORNMENT SETUPInstalling COBOL on Windows/LinuxThere are many Free Mainframe Emulators available for Windows which can be used to write and learn simple COBOL programs.One such emulator is Hercules, which can be easily installed on Windows by following a few simple steps as given below:∙Download and install the Hercules emulator, which is available from the Hercules' home site :www.hercules-390.eu∙Once you have installed the package on Windows machine, it will create a folder like C:/hercules/mvs/cobol.∙Run the Command Prompt (CMD) and reach the directory C:/hercules/mvs/cobol on CMD.∙The complete guide on various commands to write and execute a JCL and COBOL programs can be found at:/hercules/installmvs/instmvs2.htmHercules is an open-source software implementation of the mainframe System/370 and ESA/390 architectures, in addition to the latest 64-bit z/Architecture. Hercules runs under Linux, Windows, Solaris, FreeBSD, and Mac OS X.A user can connect to a mainframe server in a number of ways such as thin client, dummy terminal, Virtual Client System (VCS), or Virtual Desktop System (VDS). Every valid user is given a login id to enter into the Z/OS interface (TSO/E or ISPF). Compiling COBOL ProgramsIn order to execute a COBOL program in batch mode using JCL, the program needs to be compiled, and a load module is created with all the sub-programs. The JCL uses the load module and not the actual program at the time of execution. The load libraries are concatenated and given to the JCL at the time of execution using JCLLIB or STEPLIB.9There are many mainframe compiler utilities available to compile a COBOL program. Some corporate companies use Change Management tools like Endevor, which compiles and stores every version of the program. This is useful in tracking the changes made to the program.//COMPILE JOB,CLASS=6,MSGCLASS=X,NOTIFY=&SYSUID//*//STEP1 EXEC IGYCRCTL,PARM=RMODE,DYNAM,SSRANGE//SYSIN DD DSN=MYDATA.URMI.SOURCES(MYCOBB),DISP=SHR//SYSLIB DD DSN=MYDATA.URMI.COPYBOOK(MYCOPY),DISP=SHR//SYSLMOD DD DSN=MYDATA.URMI.LOAD(MYCOBB),DISP=SHR//SYSPRINT DD SYSOUT=*//*IGYCRCTL is an IBM COBOL compiler utility. The compiler options are passed using the PARM parameter. In the above example, RMODE instructs the compiler to use relative addressing mode in the program. The COBOL program is passed using the SYSIN parameter. Copybook is the library used by the program in SYSLIB. Executing COBOL ProgramsGiven below is a JCL example where the program MYPROG is executed using the input file MYDATA.URMI.INPUT and produces two output files written to the spool. //COBBSTEP JOB CLASS=6,NOTIFY=&SYSUID////STEP10 EXEC PGM=MYPROG,PARM=ACCT5000//STEPLIB DD DSN=MYDATA.URMI.LOADLIB,DISP=SHR//INPUT1 DD DSN=MYDATA.URMI.INPUT,DISP=SHR//OUT1 DD SYSOUT=*//OUT2 DD SYSOUT=*//SYSIN DD *//CUST1 1000//CUST2 1001/*10The load module of MYPROG is located in MYDATA.URMI.LOADLIB. This is important to note that the above JCL can be used for a non-DB2 COBOL module only. Executing COBOL-DB2 programsFor running a COBOL-DB2 program, a specialized IBM utility is used in the JCL and the program; DB2 region and required parameters are passed as input to the utility. The steps followed in running a COBOL-DB2 program are as follows:∙When a COBOL-DB2 program is compiled, a DBRM (Database Request Module) is created along with the load module. The DBRM contains the SQL statements of the COBOL programs with its syntax checked to be correct.∙The DBRM is bound to the DB2 region (environment) in which the COBOL will run. This can be done using the IKJEFT01 utility in a JCL.∙After the bind step, the COBOL-DB2 program is run using IKJEFT01 (again) with the load library and the DBRM library as the input to the JCL.//STEP001 EXEC PGM=IKJEFT01//*//STEPLIB DD DSN=MYDATA.URMI.DBRMLIB,DISP=SHR//*//input files//output files//SYSPRINT DD SYSOUT=*//SYSABOUT DD SYSOUT=*//SYSDBOUT DD SYSOUT=*//SYSUDUMP DD SYSOUT=*//DISPLAY DD SYSOUT=*//SYSOUT DD SYSOUT=*//SYSTSPRT DD SYSOUT=*//SYSTSIN DD *DSN SYSTEM(SSID)RUN PROGRAM(MYCOBB) PLAN(PLANNAME) PARM(parameters to cobol program) - LIB('MYDATA.URMI.LOADLIB')11END/*In the above example, MYCOBB is the COBOL-DB2 program run using IKJEFT01. Please note that the program name, DB2 Sub-System Id (SSID), and DB2 Plan name are passed within the SYSTSIN DD statement. The DBRM library is specified in the STEPLIB.Try it Option OnlineYou really do not need to set up your own environment to start learning COBOL programming language. Reason is very simple, we have already set up COBOL Programming environment online, so that you can compile and execute all the available examples online at the same time, when you are doing your theory work. This gives you confidence in what you are reading and to check the result with different options. Feel free to modify any example and execute it online.Try the following example using our Try it option available alongside the code in our website.IDENTIFICATION DIVISION.PROGRAM-ID. HELLO.PROCEDURE DIVISION.DISPLAY 'Hello World'.STOP RUN.When you compile and execute the above program, it produces the following result: Hello WorldFor some of the examples given in this tutorial, you will find a Try it option in our website code sections at the top right corner that will take you to the online compiler. So just make use of it and enjoy your learning. Try it option would work only with the code compatible with OpenCOBOL. The programs that require JCL (Input file, Output file or Parameters) for execution would not run on Try it option.123. PROGRAM STRUCTUREA COBOL program structure consists of divisions as shown in the following image:A brief introduction of these divisions is given below:∙Sections are the logical subdivision of program logic. A section is a collection of paragraphs.∙Paragraphs are the subdivision of a section or division. It is either a user-defined or a predefined name followed by a period, and consists of zero or more sentences/entries.∙Sentences are the combination of one or more statements. Sentences appear only in the Procedure division. A sentence must end with a period.∙Statements are meaningful COBOL statements that perform some processing.∙Characters are the lowest in the hierarchy and cannot be divisible.You can co-relate the above-mentioned terms with the COBOL program in the following example:PROCEDURE DIVISION.A0000-FIRST-PARA SECTION.FIRST-PARAGRAPH.13ACCEPT WS-ID - Statement-1 -----|MOVE '10' TO WS-ID - Statement-2 |-- Sentence - 1DISPLAY WS-ID - Statement-3 -----|.DivisionsA COBOL program consists of four divisions.Identification DivisionIt is the first and only mandatory division of every COBOL program. The programmer and the compiler use this division to identify the program. In this division, PROGRAM-ID is the only mandatory paragraph. PROGRAM-ID specifies the program name that can consist 1 to 30 characters.Try the following example using the Try it option online.IDENTIFICATION DIVISION.PROGRAM-ID. HELLO.PROCEDURE DIVISION.DISPLAY 'Welcome to Tutorialspoint'.STOP RUN.Given below is the JCL to execute the above COBOL program.//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C//STEP1 EXEC PGM=HELLOWhen you compile and execute the above program, it produces the following result: Welcome to TutorialspointEnvironment DivisionEnvironment division is used to specify input and output files to the program. It consists of two sections:Configuration section provides information about the system on which the program is written and executed. It consists of two paragraphs:14o Source computer : System used to compile the program.o Object computer : System used to execute the program.∙Input-Output section provides information about the files to be used in the program. It consists of two paragraphs:o File control : Provides information of external data sets used in the program.o I-O control : Provides information of files used in the program.ENVIRONMENT DIVISION.CONFIGURATION SECTION.SOURCE-COMPUTER. XXX-ZOS.OBJECT-COMPUTER. XXX-ZOS.INPUT-OUTPUT SECTION.FILE-CONTROL.SELECT FILEN ASSIGN TO DDNAMEORGANIZATION IS SEQUENTIAL.Data DivisionData division is used to define the variables used in the program. It consists of four sections:∙File section is used to define the record structure of the file.∙Working-Storage section is used to declare temporary variables and file structures which are used in the program.∙Local-Storage section is similar to Working-Storage section. The only difference is that the variables will be allocated and initialized every time a program starts execution.∙Linkage section is used to describe the data names that are received from an external program.COBOL ProgramIDENTIFICATION DIVISION.PROGRAM-ID. HELLO.15ENVIRONMENT DIVISION.INPUT-OUTPUT SECTION.FILE-CONTROL.SELECT FILEN ASSIGN TO INPUT.ORGANIZATION IS SEQUENTIAL.ACCESS IS SEQUENTIAL.DATA DIVISION.FILE SECTION.FD FILEN01 NAME PIC A(25).WORKING-STORAGE SECTION.01 WS-STUDENT PIC A(30).01 WS-ID PIC 9(5).LOCAL-STORAGE SECTION.01 LS-CLASS PIC 9(3).LINKAGE SECTION.01 LS-ID PIC 9(5).PROCEDURE DIVISION.DISPLAY 'Executing COBOL program using JCL'.STOP RUN.The JCL to execute the above COBOL program is as follows://SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C//STEP1 EXEC PGM=HELLO//INPUT DD DSN=ABC.EFG.XYZ,DISP=SHRWhen you compile and execute the above program, it produces the following result: Executing COBOL program using JCLProcedure Division16Procedure division is used to include the logic of the program. It consists of executable statements using variables defined in the data division. In this division, paragraph and section names are user-defined.There must be at least one statement in the procedure division. The last statement to end the execution in this division is either STOP RUN which is used in the calling programs or EXIT PROGRAM which is used in the called programs.IDENTIFICATION DIVISION.PROGRAM-ID. HELLO.DATA DIVISION.WORKING-STORAGE SECTION.01 WS-NAME PIC A(30).01 WS-ID PIC 9(5) VALUE '12345'.PROCEDURE DIVISION.A000-FIRST-PARA.DISPLAY 'Hello World'.MOVE 'TutorialsPoint' TO WS-NAME.DISPLAY "My name is : "WS-NAME.DISPLAY "My ID is : "WS-ID.STOP RUN.JCL to execute the above COBOL program://SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C//STEP1 EXEC PGM=HELLOWhen you compile and execute the above program, it produces the following result:Hello WorldMy name is : TutorialsPointMy ID is : 12345174. BASIC SYNTAXCharacter Set'Characters' are lowest in the hierarchy and they cannot be divided further. The COBOL Character Set includes 78 characters which are shown below: Character DescriptionA-Z Alphabets(Upper Case)a-z Alphabets (Lower Case)0-9 NumericSpace+ Plus Sign- Minus Sign or Hyphen* Asterisk/ Forward Slash$ Currency Sign, Comma; Semicolon18. Decimal Point or Period" Quotation Marks( Left Parenthesis) Right Parenthesis> Greater than< Less than: Colon' Apostrophe= Equal SignCoding SheetThe source program of COBOL must be written in a format acceptable to the compilers. COBOL programs are written on COBOL coding sheets. There are 80 character positions on each line of a coding sheet.Character positions are grouped into the following five fields:Positions Field Description1-6 Column Numbers Reserved for line numbers.7 Indicator It can have Asterisk (*) indicating comments,Hyphen (-) indicating continuation and Slash (/ ) indicating form feed.198-11 Area A All COBOL divisions, sections, paragraphs andsome special entries must begin in Area A.12-72 Area B All COBOL statements must begin in area B.73-80 Identification Area It can be used as needed by the programmer.ExampleThe following example shows a COBOL coding sheet:000100 IDENTIFICATION DIVISION. 000100000200 PROGRAM-ID. HELLO. 000101000250* THIS IS A COMMENT LINE 000102000300 PROCEDURE DIVISION. 000103000350 A000-FIRST-PARA. 000104000400 DISPLAY “Coding Sheet”. 000105 000500 STOP RUN. 000106JCL to execute the above COBOL program://SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C//STEP1 EXEC PGM=HELLOWhen you compile and execute the above program, it produces the following result:Coding Sheet20Character StringsCharacter strings are formed by combining individual characters. A character string can be a∙Comment,∙Literal, or∙COBOL word.All character strings must be ended with separators. A separator is used to separate character strings.Frequently used separators : Space, Comma, Period, Apostrophe, Left/Right Parenthesis, and Quotation mark.CommentA comment is a character string that does not affect the execution of a program. It can be any combination of characters.There are two types of comments:Comment LineA comment line can be written in any column. The compiler does not check a comment line for syntax and treats it for documentation.Comment EntryComment entries are those that are included in the optional paragraphs of an Identification Division. They are written in Area B and programmers use it for reference.The text highlighted in Bold are the commented entries in the following example: 000100 IDENTIFICATION DIVISION. 000100000150 PROGRAM-ID. HELLO. 000101000200 AUTHOR. TUTORIALSPOINT. 000102000250* THIS IS A COMMENT LINE 00010321000300 PROCEDURE DIVISION. 000104000350 A000-FIRST-PARA. 000105000360/ First Para Begins - Documentation Purpose 000106000400 DISPLAY “Comment line”. 000107 000500 STOP RUN. 000108JCL to execute above COBOL program://SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C//STEP1 EXEC PGM=HELLOWhen you compile and execute the above program, it produces the following result: Comment Line22End of ebook previewIf you liked what you saw…Buy it from our store @ https://23。

COBOL语言学习参考资料

COBOL语言学习参考资料

COBOL 语言学习参考资料第一章.COBOL程序的结构首先,请大家观察一下程序SAMPLE1。

它是由COBOL语言编成的。

COBOL 其它程序的结构都与该程序差不多。

因此,由SAMPLE1可以看出,COBOL程序分为四个部。

即:标识部(IDENTIFICATION DIVISION)、环境部(ENVIRONMENT DIVISION)、数据部(DATA DIVISION)、过程部(PROCEDURE DIVISION)。

各部下又有多个节或段。

它的程序结构可以示意如下:IDENTIFICATION DIVISION.段┆ENVIRONMENT DIVISION.节段┆节┆DATA DIVISION.节描述体┆┆PROCEDURE DIVISION.(节)段┆一.标识部。

IDENTIFICATION DIVISION主要用来指定程序名称。

标识部的格式如下:IDENTIFICATION DIVISION.PROGRAM-ID. 程序名.[AUTHOR. 作者姓名.][INSTALLATION. 计算机设置的场所.][DATE-WRITTEN. 源程序编写的日期.][DATE-COMPILED. 源程序编译的日期.][SECURITY. 保密程度.]前两句话是程序的必写部分。

后六句可有可无,也可以选写其中几段,次序任意。

二. 环境部。

ENVIRONMENT DIVISION指定程序的操作对象(文件)名与一外部设备联系起来。

此外,还指定程序中使用的专门控制方法及程序所用内存区的大小等。

环境部的格式如下:ENVIRONMENT DIVISION.CONFIGURATION SECTION. 配置节.SOURCE-COMPUTER. 源计算机名。

OBJECT-COMPUTER. 目标计算机名。

[SPACIAL-NAMES.] 专用名描述项。

[INPUT-OUTPUT SECTION. 输入输出节。

FILE-CONTROL. 文件控制描述体。

COBOL常用操作

COBOL常用操作

COBOL常用操作以下是COBOL常用的一些操作,可分为以下几个方面:-定义数据区段:使用DATADIVISION定义数据区段,包括文件和工作区段。

-声明变量:使用WORKING-STORAGESECTION或LOCAL-STORAGESECTION声明数据项。

-定义记录:使用RECORD字节定义多个相关字段的集合。

2.文件操作:-文件定义:使用FILECONTROL段定义输入和输出文件。

-文件打开和关闭:使用OPEN和CLOSE语句打开和关闭文件。

-文件读写:使用READ和WRITE语句从文件中读取和写入记录。

-文件重写和删除:使用REWRITE和DELETE语句重写和删除记录。

3.运算操作:-算术运算:使用ADD、SUBTRACT、MULTIPLY和DIVIDE执行基本的算术运算。

-逻辑运算:使用AND、OR和NOT运算符执行逻辑运算。

-比较运算:使用IF、ELSE和PERFORM语句实现条件判断和循环。

-字符串操作:使用STRING和INSPECT语句进行字符串操作,如连接、截断、替换等。

4.控制流程:-条件判断:使用IF语句进行条件判断,根据条件执行不同的操作。

-循环:使用PERFORM语句实现循环,如DO...UNTIL和DO...WHILE。

- 分支:使用EVALUATE语句进行多路分支,类似于其他编程语言中的switch语句。

-子程序调用:使用CALL语句调用其他子程序。

5.数据转换和处理:-数据转换:使用MOVE语句将数据从一个变量复制到另一个变量,可进行类型转换。

- 数据格式化:使用EDITED和NUMERIC edit masks格式化数值和日期。

-计算日期和时间:使用特定的函数或操作来处理日期和时间的计算和比较。

6.错误处理和异常处理:-异常处理:使用异常处理语句,如EXIT和CONTINUE,对异常情况进行处理。

-文件错误处理:使用FILESTATUS或INVALIDKEY语句处理文件操作中的错误。

cobol笔记

cobol笔记

.编码格式•第1~6列为序号区,用于表示行号。

行号不是必须的,也不必是顺序的,甚至可以是本机字符集中的任意字符,但正确的行号是很重要的。

•第7列为指示区,可以包含如下指示符:"*"指示本行内容为注释。

"-"指示本行代码为上一行的延续。

"D"指示本行代码为调试代码,将在启用DEBUGGING模式时被编译,未启用时将被忽略。

"/"指示编译器为源码列表开始新的一页,并且本行将被视为注释。

•第8~11列为A区。

下列项必须从A区开始:部标题(DIVISION)节标题(SECTION)段名(段标题)层指示符FD和SD,层号01和77DECLARATIVES 和END DECLARATIVESEND PROGRAM•第12~72列为B区。

作为程序主体的条目(entries),句子(sentences),语句(statements),从句(clauses)和续行(/)等都必须从B区开始。

*句法说明:节(SECTIONs)和段(paragraphs)定义了程序,它们又细分为以下部分:条目(entries):以句点(.)结尾的一系列从句。

构造于标识部、环境部和数据部。

从句(clauses):连续的COBOL字符串的有序集合,用于指定条目的某个属性。

构造于标识部、环境部和数据部。

句子(sentences):以句点(.)结尾的一个或多个语句的序列。

构造于过程部。

语句(statements):指定程序要执行的某个动作。

构造于过程部。

短语(phrases):构成从句和语句的更小单元。

2.基本结构----|----1----|----2----|----3----|----4----|----5----|----6----|----7----|----8//标识部000001 IDENTIFICATION DIVISION.000002 PROGRAM-ID. PGMNAME. //指定本程序名。

cobol学习

cobol学习

CHAPTER 1 COBOL概述COBOL 是Common Business Oriented Language 的缩写.它不仅是商业数据处理的理想语言,而且广泛用于数据管理领域,因此COBOL 语言也被称为“用于管理的语言”.一.COBOL 语言的特点最适于数据处理领域:算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一定的逻辑关系,大量的分类排序;COBOL比较接近英语,容易懂;通用性强,易移植,COBOL结构严谨,层次分明.二.COBOL的组成部分:1.部标识部(IDENTIFICATION DIVISION):用于标识程序名.环境部(ENVIRONMENT DIVISION):用于说明程序运行的环境.数据部(DATA DIVISION):用于说明程序中涉及的所有数据.过程部(PROCEDURE DIVISION):是程序的核心部分,它决定计算机应进行什么操作.四大部分缺一不可,即使下面无内容,也要写上部头.2.节部头下面分若干节,有节头,如(PROCEDURE DIVISION 的)MAIN SECTION.节下面又可包括若干段,有自己的名字.例如(IDENTIFICATION DIVISION的)PROGRAM ID.3.句子,语句一个语句有一个动词,一个句子有一个点.三.最简单的COBOL 程序举例:COL 1 ---6 7 8 12---72 73---80IDENTIFICATION DIVISION .PROGRAM-ID.PSAMPLE1.ENVIRONMENT DIVISION .DATA DIVISION .PROCEDURE DIVISION .DISPLAY ‘THIS IS A COBOL PROGRAM.’STOP RUN .四.COBOL 源程序的书写格式:第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 过程部初步----最基本的过程部语句一.输入输出语句.1.ACCEPT语句:直接从终端键盘或系统指定的输入设备上输入数据.ACCEPT 标识符[FROM 助忆名]ACCEPT A FROM CONSOLE.(CONSOLE可省略) 从控制台接收.ACCEPT B FROM DATE. 从系统日期接收.ACCEPT C FROM TIME. 从系统时间接收.注:A.标识符(identifier)指的是能唯一地标识一个数据项的数据名,不能唯一地标识一个数据项的数据名不是标识符.标识符可以是组合项.B.在ACCEPT语句中如不写FROM部分,如ACCEPT A ,则表示从系统隐含指定的设备上读入一个数据给A.如果不想从指定的设备上输入,则要用FROM 选项,这时“助忆名”需要在环境部中事先说明和那种外部设备相联系.如:ENVIRONMENT DIVISION .(环境部)CONFIGRATION SECTION .(配置节)SPECIAL-NAMES .(专用名段)CONSOLE IS ABC如在过程部中有ACCEPT T FROM ABC .则表示要从控制台接收数据2.DISPLAY语句:从计算机内存中输出到某一指定的输出设备上.DISPLAY { 标识符1,常量1}[标识符2,常量2]…[UPON 助忆名](标识符和助忆名的说明同上)DISPLAY A,B,C. 在控制台上同一行显示A,B,CDISPLAY A.DISPLAY B.DISPLAY C. 在控制台上三行显示A,B,CACCEPT语句和DISPLAY语句不必定义文件适用于少量的数据输入输出.3.READ语句:COBOL语言中数据的输入输出主要是通过对外部文件的读写进行的.READ 语句就是从外部文件上读入数据输出到程序中的数据项中.在程序中用到的所有文件都需要在环境部中指定程序中用到的文件名与实际外部文件的联系.数据部也要对文件加以描述.指定数据结构各数据项所占的内存单元长度以及数据形式.COBOL 的存取是以文件为对象以记录为单位的.READ语句的最简单的格式为: READ 文件名ENVIRONMENT DIVISION .INPUT-OUTPUT SECTION .FILE-CONTROL .SELECT IN-FILLE ASSIGN TO 外部文件名.为了存储读入的记录,必须在内存开辟一个与文件记录长度相等的存储区,即‘输入文件纪录区’.每一个输入文件都有相应的‘输入文件纪录区’,与之一一对应.亦即在数据部中描述文件的数据结构.3.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 DIVISION .FD IN-FILE LABLE RECORD IS STANDARD .01 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中.在遇到文件尾时,程序结束运行.4.WRITE语句:将内存中的数据输出到外部设备,主要是由WRITE 语句来完成的.WRITE语句的最简单的格式为:WRITE 记录名(注意WRITE语句的操作对象是记录,所以是‘记录名’而不是‘文件名’)与输入文件相似输出文件也要在环境部中指定所对应的实际存在的外部文件:ENVIRONMENT DIVISION .INPUT-OUTPUT SECTION .FILE-CONTROL .SELECT OUT-FILLE ASSIGN TO 打印机名.也要在数据部中定义输出记录区:DATA DIVISION .FD OUT-FILE LABLE RECORD IS OMITTED .01 OUT-RECORD .02 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 STANDARD.01 层定义‘输出纪录区’的名字为OUT-RECORD,由于01层属于FD描述体,因此也就指定了OUT-RECORD 和OUT-FILE 的关系.在用WRITE 语句输出一个记录之前,应向输出记录区传送数据.如已将数据传送到上述各数据项中,则在执行W RITE OUT-RECORD 语句后,则记录区中的数据通过打印机打印出来.WRITE 语句的一般形式:标识符2 LINEBEFORE 整数 LINESWRITE 记录名[FROM 标识符 1 ] AFTER ADVANCING 助忆名PAGE5.OPEN语句:程序中如果需要读写文件,则该文件必须先用OPEN语句打开,系统在执行READ,WRITE以前先检查该文件是否已在规定的外部设备上准备就绪.打开文件,文件读写必须先打开.文件要在ENVIRONMENT DIVISION,INPUT-OUTPUT SECTION.FILE-CONTROL.中分配外部装置.OPEN语句的一般格式为:OPEN INPUT 文件名1 [,文件名2]…OPEN OUTPUT 文件名3 [,文件名4] ……如:ENVIRONMENT DIVISION.INPUT-OUTPUT SECTION.FILE-CONTROL.SELECT A1 ASSIGN TO SYS010.…………….………….PROCEDURE DIVISION.XXX SECTION.OPEN INPUT A1.………………要指明文件用于输入还是输出,即INPUT OR OUTPUT6.CLOSE语句:当对一个文件的读或写的操作已完成,就应关闭该文件.CLOSE A1.关闭文件,有OPEN必须有CLOSE,CLOSE 之后不能再对文件进行读写.CLOSE不用写INPUT OUTPUT.CLOSE语句的一般格式为:CLOSE 文件名 1 [,文件名2] …COBOL通过2位长度的文件状态字(FILE-STATUS)来表示文件的操作结果是否成功,常见的文件状态值及意义:二.算数运算语句1.ADD语句:格式1:ADD 标识符1 ,标识符2…TO 标识符m [,标识符n] …常量1 ,常量2格式2:ADD 标识符1 ,标识符2 ,标识符3常量1 ,常量2 ,常量3…GIVING 标识符m [,标识符n] …例如:ADD A TO B. B=A+BADD A, B TO C C=A+B+CADD 15 TO B GIVING C C=15+BADD A, B TO C, D C=A+B+C, D= A+B+D2.SUBTRACT语句:格式1:SUBTRACT 标识符1 ,标识符2 … FROM 标识符m [,标识符n] …常量1 ,常量2格式2:SUBTRACT 标识符1 ,标识符2 …FROM 标识符常量1 ,常量2 ,常量3GIVING 标识符n [,标识符p] …SUBSTRACT B FROM A A=A-BSUBSTRACT A, B FROM C GIVING D D=C-A-B.3.MULTIPLY语句:格式1:MULTIPLY 标识符1 BY 标识符2 [,标识符3] …常量1格式2:MULTIPLY 标识符1 BY 标识符2 GIVING 标识符3 [,标识符4] …常量1 ,常量2MULTIPLY 0.5 BY B B=B*0.5MULTIPLY A BY B GIVING C C=A*B4.DIVIDE语句:格式1:DIVIDE 标识符1 INTO 标识符2 [,标识符3] …常量1格式2:DIVIDE 标识符1 INTO 标识符2 GIVING 标识符3 [,标识符4] …常量1 BY 常量2DIVIDE A INTO B 是指 B/A=BDIVIDE A INTO B GIVING C 是指 B/A=CDIVIDE A BY B GIVING C 是指 A/B=CDIVIDE A BY B GIVING C, D(必须有) C=A/B,D=A/B5.COMPUTE 语句:COMPUTE 标识符1 [,标识符2 ] …= 算术表达式运算的优先级由高到低顺序为:(),正负号,** ,* 或/ ,+ 或-如:C = 3 ,D = 5 ,E = 2 ,F = 1 则:COMPUT A,B = -(C + D)* 2 / E ** 3 - F = -3三.传送语句(MOVE)MOVE 语句用来实现内存中数据的传送(而不是内存和外设之间的传送).MOVE语句的一般格式为:MOVE 标识符1 TO 标识符2 [,标识符3] …常量1MOVE语句的传送规则:1,如果接收项和发送项在数据部中描述的类型和长度相同,则按字节一一对应传送.2,如果接收项和发送项长度不相同,而二者都是数值数据项,则按小数点对齐处理.3,对字母或字符数据(非数值型数据)的传送,按左对齐处理.4,初等项和组合项之间可以相互传送.5,可以将整数型数值型变量赋值给字符型,如果字符型里面存放的都是数字,也可以把字符型赋值给整数型数值型,但是字符型不能进行算术运算.关于各类数据之间的传送规则将在第五章中介绍.四.转移语句(GO TO)当需要使程序改变正常执行的顺序时,可以使用无条件转移语句GO TO .其一般格式为:格式1: GO TO 过程名格式2: GO TO 过程名1 [,过程名2]…过程名n DEPENDING ON 标识符注意:只能转移到段或节的开头,不能转移到段或节的当中某一语句.段名或节名为过程名.五.条件语句(IF)当需要根据给出的某些条件是否满足来决定应执行哪一部分语句时,可以使用条件语句IF.其一般格式为:IF A NOT > 0THEN…………….ELSECONTINUEEND-IF.如果THEN 或ELSE中没有语句,是空的,则要加上CONTINUE.COBOL关系运算符: IS GREATER THAN (>)IS LESS THAN (<)IS EQUAL TO (=)NOT GREATER THAN (NOT >) (<=)NOT LESS THAN (NOT <) (>=)NOT EQUAL TO (NOT =)注意:句点在IF 语句中的特殊作用.如:IF A > 0DISPLAY A .ADD A TO TOTAL.DISPLAY TOTAL.与IF A > 0DISPLAY A.ADD A TO TOTAL.DISPLAY TOTAL.就不同.为避免出现问题应该使用显式终止符(END-IF,END-PERFORM等)代替隐式终止符(句点“.”)六.停止语句(STOP)其一般格式为:STOP RUN常量STOP RUN 执行后,程序停止运行,停止后不能再接着运行,如需要,可重新运行一次.STOP 常量,表示程序暂时挂起不往下执行,显示出此常量.七.返回语句(GOBACK)停止运行,将控制权返回给上一级.可用本语句代替STOP语句.子程序必须用GOBACK 而不能用STOP:因为STOP停止的是一个RUN UNIT(运行单元).八PERFORMPERFORM 过程名执行一个节或段.PERFORM 过程名UNTIL 条件反复执行过程直到条件成立.PERFORM A1 VARYING X FROM A BY B UNTILX>5.X : 循环变量A: 初值 B : 步长九EVALUATE与SWITCH类似,可以EVALUATE 整形,字符型,如EVALUATE AWHEN 1…………….WHEN 2……………WHEN OTHERCONTINUEEND EVALUATE.十、STRINGSTRING A DELIMITED BY SIZE(或字符),B DELIMITED BY SPACE, “ COUNTRY” INTO C A: “CHINA ”B:”IS CITY” C:”CHINA IS COUNTRY”将字符型变量或常量按一定的定界符取出连接.规约:要有END-STRING.十一、UNSTRING :77 SEND-02 PIC X(19).TOKYO,KOBE,TOKOYAMA 77 RR-21 PIC X(8). TOKYO77 RR-22 PIC X(8). KOBE77 RR-23 PIC X(8). TOKOYAMAUNSTRING SEND-02 DELIMITED BY ','INTO RR-21,RR-22,RR-23将一个串分解到几个串.CHAPTER 3 标识部和环境部一.标识部(IDENTIFICATION DIVISION)IDENTIFICATION DIVISION.PROGRAM-ID.程序名.[AUTHOR.作者名.][INSTALLATION.计算机设置场所.][DATE-WRITTEN.源程序编写日期.][DATE-COMPILED.源程序编译日期.][SECURITY.保密程度.]二.环境部(ENVIRONMENT DIVISION)ENVIRONMENT DIVISION.CONFIGRATION SECTION.SOURCE-COMPUTER.源计算机名.OBJECT-COMPUTER.目标计算机名.[SPECIAL-NAMES.专用名描述项.][INPUT-OUTPUT SECTION.FILE-CONTROL.{文件控制描述体}...[I-O-CONTROL.输入输出控制描述体]]1.CONFIGRATION SECTION.下有SPECIAL-NAMES.段(专用名)用来通知系统把系统中原规定的一些设备名或功能名都赋予一个特定的专用名.专有名段的一般格式:SPECIAL-NAMES.[DICIMAL-POINT IS COMMA.][CURRENCY SIGN IS 非数值常量.][专用名IS 助忆名.]用法例:ENVIRONMENT NAME IS ENV-NAME.ENVIRONMENT VALUE IS ENV-VALUE.2.INPUT-OUTPUT SECTION.INPUT-OUTPUT SECTION 包括两个段,即:FILE-CONTROL 和I-O-CONTROL.FILE-CONTROL段是为文件分配外部文件.I-O-CONTROL段的作用是可以指定目标程序运行时,几个文件共用一个内存区,以省内存.在此暂不作介绍.FILE-CONTROL段的主要功能是给程序中使用的文件命名.指出存放该文件的外部设备及其它有关文件控制的信息.对文件的描述是由SELECT子句实现的.FILE-CONTROL段的一般格式:INPUT-OUTPUT SECTION.FILE-CONTROL.SELECT 文件名ASSIGN TO 外部文件名[ORGANIZAION IS …] (SEQUENCIAL , INDEXED , RELATIVE)[ACCESS MODE IS …] (SEQUENCIAL, RANDOM , DYNAMIC)[RECORD KEY IS … ][FILE STATUS IS …]如果程序中用到输入输出文件,就应该在这个节把文件与外部设备联系起来.比如:INPUT-OUTPUT SECTION.FILE CONTROL.SELECT A1 ASSIGN TO PRINTER.SELECT A2 ASSIGN TO SYS010.如果在程序中有WRITE A1-REC.WRITE A2-REC.A1-REC和A2-REC是A1和A2文件的记录名.将向打印机或文件输出一条记录.对于A2,要在程序运行时指定SYS010对应的物理文件名.注意:1)SELECT 要从B区开始写.2)多个文件名分配到一个外部装置时,不能写在一句中,要分开写.例如下面的写法是错误的:SELECT A1,A2,A3 ASSIGN TO SYS010CHAPTER 4 数据部一.数据部概述1.数据部的作用是定义数据项属性,描述数据结构.所有在过程部中出现的数据项都必须在数据部中对它们的属性进行说明.包括数据项的类型,数据项间的关系,记录与文件的关系,文件的属性.2.数据的层次和层号:COBOL中把有从属关系的数据用层次(level)关系来描述.数据的层次结构是:记录--组合项--初等项.如,在前面READ语句中定义的IN-FILE 文件具有如下结构:01 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).层次:记录—组合项—初等项.初等项是逻辑上不能再分的项目,包含若干初等项的项目是组合项,组合项还可以包括组合项.组合项的最高层次是记录,它是存取内存的最大单位.以层次组织,层号大的项目从属于层号小的项目.层号:01-49表示各层项目,77层用来表示孤立的初等项目,其它的组合项目01层是记录层,必须有,记录的层次最高,定为01层号.从属项的层号比其下属项的层号高,层号可以不连续,在同一组合项目下面,小层号第一次出现前不能出现比它大的层号.一个组合项包括它下面层号更大的组合项和初等项,直到相同层号出现为止.从属于同一组合项但不互相从属的数据项具有相同的层号.注意:引用项目时可以直接用项目名,但是如果不同的组合项目有相同的子项,比如:01TEACHER.03 NAME PIC X(10).01STUDENT03 NAME PIC X(8).则在用到NAME时,要说明从属于哪个组合项,如:NAME OF TEACHERNAME OF STUDENT.3.数据部的结构:数据部中通常用到的有以下几个节:(1)FILE SECTION:描述程序中用到的输入输出文件及其记录中各数据项的属性.(2)WORKING-STORAGE SECTION:描述程序中用到的中间数据项.(3)LINKAGE SECTION:描述与调用程序间发生数据传递的数据项.(4)REPORT SECTION:为了完成报表编制功能,此节用来规定欲输出的报表的‘体裁’,设计各报表栏的打印形式和方法等.二.文件节.1.文件节的作用:程序中每一个输入或输出文件都要在文件节中加以描述.内容包括:文件名和文件属性;文件中包括的记录名字;每个记录中数据的层次关系;记录中各数据项的数据形式和占内存的大小.2.文件描述:最简单的文件描述体的一般格式为:FD 文件名LABLE RECORD IS STANDARDRECORDS ARE OMITTEDDATA RECORD IS 数据名RECORDS ARE例如FD INPUT-FILE01INPUT-REC.03 ………….05…………..01INPUT-REC1.03………………..3.记录描述:记录描述体由01层号开始,后跟记录名.一个文件描述(FD: FILE DISCRIPTION)有一个记录,如果有多个01层,那么它们之间是重定义的关系.重定义指不同的数据项目共用一块内存.要求重定义的项目长度一样.如果是文件节的记录层(01层)则自动为重定义,不用REDEFINES 子句,在上例中,不要写成01 INPUT-REC1 REDEFINES INPUT REC.但是如果不是在文件节,就需要REDEFINES 子句,而且重定义的项目要紧跟在被重定义项目之后.文件节的数据不能有V ALUE子句,也就是不能被赋予初期值.FILLER:用来占位的数据项目,不能在程序中使用.如果记录本身就是一个初等项,则在记录名后描述记录长度;否则,数据名后跟句点,下面定义记录的数据结构.如:DATA DIVISION.FILE SECTION.FD IN-FILELABLE RECORD IS STANDARD.DATA RECORD IS IN-FILE-RECORD.01 IN-FILE-RECORD PIC X(80).DATA DIVISION.FILE SECTION.FD IN-FILELABLE RECORD IS STANDARD.DATA RECORD IS IN-FILE-RECORD.01 IN-FILE-RECORD PIC X(80).或( 01 IN-FILE-RECORD.05 DATE PIC 9(8).05 PROD-CODE PIC 9(4).05 PROD-PRICE PIC 9(6).)WORKING-STORAGE SECTION.定义各种程序中使用的中间变量.可用V ALUE 子句赋初值.例如:77 ABC PIC 9(5) VALUE 5.可以给集团项目整体赋初值,但是要当作字符型处理.例如:01 TREENUM VALUE “123456”.03 A PIC 9(2).03 B PIC 9(2).03 C PIC 9(2).这样A是12,B是34,C是56.可以有多个01层.规约:1)JBIC项目要求,所有变量使用前必须进行初期化,以上赋初值即为初期化的一种,还可以在过程部用INITIALIZE语句初期化.3)中间变量用W-或WK-开头.LINKAGE SECTION.当程序是被调用的子程序并且有参数时候.要把参数在此节中说明.CONSTANT SECTION.NET COBOL用,COBOL85不能用.用来说明常量,常量必须被赋予初值4.数据项描述:在每一个初等项的名字后跟一个PIC子句.用它来描述数据的类型和长度.PIC子句在下面详细说明.5.文件节的书写格式:FD从A区开始书写,01层号也从A区开始,其它层号可以从A区也可以从B区开始.为了看起来层次分明,最好从B区开始.三.PIC 子句.PIC即PICTURE的缩写.PIC子句用来描述每一个初等项.它说明:(1)数据项是什么类型.(2)数据项占多大内存域.(3)是否需要按打印的要求准备有关字符.PIC子句的主要作用在于描述一个初等项的一般特征和编辑要求.1.数值型数据的描述:‘9’描述符:表示该位置上可以放入一个0 ~ 9 之间的数字.因此:01 A PIC 999.或01 A PIC 9(3).表示A可以存放000 ~ 999 之间的一个三位数.有几个9表示有几位数.注意:(1)在数值型数据项中只能放数字不能放空格.(2)用‘9’描述符只能表示整数,如输入小数部分,则小数部分被舍弃.(3)如送入一个负数,则负号被舍弃.(4)如果把大于三位的整数赋给它,则左截断,如如果数据从文件中读来,则在文件中的数据位数不足的要有前导0.输出到文件时候也会有前导0.‘V’描述符:指出在数值数据结构中隐含的小数点的位置.小数点不占内存单元.如:03 M PIC 9(3)V9(2).注意:(1)V在描述符的最后,则等于无小数点.(2)一个数据的描述符中只能出现一个V.(3)进行数据传送或运算时,按隐含的小数点位置对准进行传送或运算.(4)V表示的小数点只在传送或运算时起作用,不能被显示或打印出来.‘S’描述符:如果想在数据项中放入一个带符号的数,可以用‘S’描述符.如:03 M PIC S9(3)V9(2).注意:(1)S描述符必须是最左边的一个描述符.(2)在内存中,S不占位数,在传送或运算时起作用.03 A PIC S9(4) (SIGN LEADING SEPARATE).SIGN LEADING SEPARATE限定被加上后,可正常用于文件的输入输出(输入文件的数据整数要加正号.)如果不加,将会出现问题.2.字母型数据的描述:字母型数据项用A描述符,在这种类型的数据项中只允许存放字母或空格.3.字符型数据的描述:由仸意的COBOL字符组成的数据,称为字符型数据,它是非数值型的,不能用于计算.用X描述符来表示字符型数据.如:03 M PIC X(5).注意:(1)字符型数据可以用X描述符,也可以用9和A描述符来描述.如描述数据‘COB-74’可以用PIC X(6),也可以用PIC A(3)X9(2).(2)字母型数据既可以用A描述,也可以用X.(3)字符型数据中可以放数字.4.编辑型描述符:编辑型数据项只是作为输出数据时增加或改变某些所需的符号,起编辑作用,它不是作计算用的.下面分别介绍编辑数据项中用到的编辑描述符.(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).99DB02 A2 PIC $9(3).99CR.5.常用数值型数据四.工作单元节(WORKING-STORAGE SECTION)1.工作单元节的作用:程序中用的数据项分为两部分,一部分是属于输入或输出文件的,另一部分是非输入或输出的数据.如一些中间变量或用作累计的数据项等.非输入输出的数据就应在工作单元节中描述,还可以用工作单元节来赋初值.2.VALUE子句:用于给变量赋初值.如:02 A PIC 9(3)VALUE 123.注意:(1)只有对工作单元节中的数据项才能赋初值,不能对文件节中输入输出文件中的数据项赋初值.(2)如果在组合项的描述体中使用VALUE,初值只能是表意常量或非数值型常量.对组合项整体而言,一律按字符型数据项处理.(3)当用一个带符号的数值作初值时,相应的PIC子句中应有‘S’描述符.(4)赋初值时应该注意类型的一致性.(5)VALUE子句给出的值应适合PIC子句的描述范围,否则会出现截断或产生错误.CHAPTER 5 过程部之二一.MOVE 语句的较高技巧1.各种类型数据之间的传送规则见下表:(Y:表示合法传送.N:表示非法传送.空白:表示某些时候是合法的.)2.用CORRESPONDING子句的传送——对应传送(同名传送)对应传送的一般格式:MOVE CORRESPONDING 标识符1 TO 标识符2CORR说明:(1)如果两个组合项中包括的项不同,则只传送同名的项.(2)传送的两者间必须有成对的同名数据项,而且这一对中必须至少有一个项是初等项.否则不能作为对应项传送.(3)所谓同名,指的是它们有相同的全程受限,即全程同名.假如T1和T2的描述分别为:01 T1. 01 T2.02 X.02 X.03 X1... 03 X2...03 X3... 03 X1...02 Y1.02 Y.03 A1... 03 A1...则T1中的A1与T2中的A1就不是全程同名.4.除法语句中的余数语句(REMAINDER 子句):DIVIDE 语句只能求商不能求余数.如想求余数,可用REMAINDER 子句.如:DIVIDE A INTO B GIVING C REMAINDER D 注意:(1)商和余数的值不仅取决于除数和被除数,还取决于数据部中对商和余数的描述.(2)如用ROUNDED子句,它只对商起作用,余数不作四舍五入处理,在计算余数时,仍按四舍五入前的值为准.(3) 长度溢出也只检查商的值是否溢出,而不检查余数.三.IF语句的较高技巧1.符号条件:数据名IS [NOT] POSITIVE算术表达式NEGATIVEZERO2.类型条件:标识符 IS [NOT] NUMERICALPHABETIC3.条件名条件:用来表示条件变量当前值的名字叫条件名.条件名本身是一个条件,它有一个值(‘真’或‘假’),用它来检查条件变量的值是否落在条件名所代表的值的范围中,当条件变量的值落在条件名所代表的值的范围中,则此条件名所表示的条件为‘真’,否则为‘假’.条件名条件的一般格式:88 条件名{ VALUE IS} 常量1 [{THRU} 常量2][常量3 [ [{THRU} 常量4]] ...]如: 02 WS-FILE-STATUS PIC 9(2).88 WS-FILE-NORMAL VALUE 0,93.88 WS-FILE-EOF VALUE 10.CHAPTER 6 过程部之三—-执行语句(PERFORM)一.执行语句的作用:在一个COBOL程序中,过程部中往往有一部分语句需要执行多次.为了让重复的部分在程序中只出现一次,可以把重复的部分单独写成一段或一节(有一个段名或节名),每次执行这部分语句时转去该段,执行完转回来.这时候就需要用到执行语句(PERFORM ).二.执行语句的一般形式:PERFORM 过程名1 [THRU] 过程名2三.使用PERFORM语句实现循环:1. PERFORM 过程名1 [{THRU} 过程名2 ] 整数TIMES标识符2. PERFORM 过程名1 [{THRU} 过程名2 ] UNTIL 条件3. PERFORM 过程名1 [{THRU} 过程名2 ]VARYING 标识符1 FROM 常数1 BY 常数2 UNTIL 条件。

COBOL实用资料

COBOL实用资料

COBOL 实用资料1.COBOL的历史 (2)2.COBOL主要特性 (2)3.COBOL主要应用在哪些领域 (3)4.COBOL学习的一点体会 (3)5.COBOL前景概述 (4)6.COBOL技术——IT届的铁饭碗 (5)7.COBOL语言走过五十年, COBOL就业前景良好 (5)8.COBOL语言的学习过程 (6)9.如何学习COBOL (7)10.常见的COBOL编译器 (7)12.COBOL语言的程序结构简析 (7)11.COBOL语言概述之COBOL程序的结构 (9)12.COBOL语言概述之COBOL的数据关系 (10)13.COBOL教程实例之九九乘法表 (13)14.Cobol学习之表的基本概念 (14)15.Cobol学习之表的基本用途 (15)16.COBOL语言学习心得之标点符号篇 (17)17.COBOL语言学习心得之数据层的标号篇 (18)18.COBOL技术之联机及批量程序的一些差异 (18)19.COBOL语言学习心得之指示符篇 (19)20.COBOL语言学习心得之数据类型篇 (19)21.COBOL语言学习心得之指示符篇 (20)22.COBOL语言学习心得之段头的定义和使用篇 (20)23.COBOL语言学习心得之行标示篇 (21)24.COBOL技术之编程规范 (21)1.COBOL的历史相对地,科学计算方面的问题往往原始数据较少,但算法复杂;而数据处理方面的问题却常常需要面对大量的初始数据进行加工,加工过程是一些极其简单的运算(有时甚至不执行计算)或逻辑判断,但需要重复许多次,最后输出大量的结果数据,这些数据还往往是一些表格,这种数据的大量和可组织性及加工过程的简单和重复性构成了这类问题的主要特性。

在数据处理领域中,对数据的加工流程可能是成批的,也可能是零星或随机的,数据通常以记录为处理单位和以块为传输单位构成,文件和记录在数据处理中具有很重要的地位。

COBOL入门培训教材

COBOL入门培训教材

04 QANTITY-OF-SALES PIC 9(6).
04 QANTITY-OF-HAND PIC 9(6).
说明:1. OCCURS子句不能出现在77层,因为77层是独立的数据项.
2.OCCURS子句不能用于01层.
3.只有当OCCURS所说明的数据是初等项时,才能在该数据项的描述中使用PIC子句.
数据的层次和层号:COBOL中把有从属关系的数据用层次(level)关系来 描述.数据的层次结构是:记录--》组合项--》初等项.如,在前面READ语句中 定义的 IN-FILE 文件具有如下结构:
01 IN-RECORD.
02 PROD-CODE PIC 9(4).
02 PROD-QUANTITY PIC 9(5).
UNTIL FILE-STATUS=END. //循环 PERFORM 122-FILE-CLOSE-SECTION. PERFORM 300-END-SECTION .
STOP RUN. 000-MAIN-EXT. 100-INITIALIZATION-SECTION.
INITIALIZE INFILE-REC WORK-AREAS TABLE-REC.
标识部
PROGRAM-ID.
程序名.
[AUTHOR.
作者名. ]
[INSTALLATION. 计算机设置场所. ]
[DATE-WRITTEN. 源程序编写日期. ]
[DATE-COMPILED. 源程序编译日期. ]
[SECURITY.
保密程度.]
环境部
CONFIGRATION SECTION.
COBOL入门培训
16-MAR-2010
本次培训只涉及到COBOL中比较常 见的知识点

COBOL谭浩强版学习笔记

COBOL谭浩强版学习笔记

COBOL资料整理COBOL语言概述一.COBOL程序的结构1.部IDENTIFICATION DIVISION 标识部ENVIRONMENT DIVISION 环境部DA TA DIVISION 数据部PROCEDURE DIVISION 过程部2.节(SECTION)和段(PARAGRAPH)(1)部-节-段(2)标识部下面不设节,直接设段(3)过程部可以设节,下面再设段,也可以直接设段3.句子、语句和子句每一段由若干句子(Sentence)组成,一个句子以句号加上一个以上的空格来结束。

句子由语句(Statement)组成。

语句中又可以包含若干子句(clause),每一个子句也有一个动词(但这个动词往往是可以省略的),它指定某一方面的特定功能。

二.COBOL源程序的书写格式1.1-6列:标号区2.第7列:续行标志区(“-”为续行,“*”为注解)3.8-11列:A区(部头,节头,段头,层号01、77,文件描述符FD等)4.12-72列:B区(正文)5.73-80列:注释区三.COBOL字符数字0-9,大写字母A-Z,小写字母a-z,专用字符15个{ + - * / = , . ; ‘( ) < > $ 空格}四.常量1.数值常量(1)小数点不能多于一个,而且不能出现在常数最右边。

(2)数值常量的长度不能超过18位数字。

(3)至少要有一个数字,不能有多于一个符号。

(4)数字间不能有空格,空格是分界符。

2.非数值常量(1)用’’把字符串包起来(2)假如要把’’放到非数值常量中,用QUOTE保留字,如MOVE QUOTE ‘CHINA’QUOTE TO A(3)长度不应超过120个字符。

3.表意常量表意常量所表示的值初等项初等项过程部初步一.输入输出语句1.ACCEPT(接收语句):直接从中断键盘或系统指定的输入设备上输入少量的数据。

语法:ACCEPT 标识符[FROM 助忆名]2.READ(读语句):从外部文件上读入数据输到程序中的数据项中。

COBOL学习笔记_20121231

COBOL学习笔记_20121231

cobol语言.修订版.(上册+下册).pdf2012-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: 用来给出程序要执行的命令,是计算机产生相应的操作。

COBOL教程

COBOL教程

/index.htmlCOBOL 教程- -Tag:COBOL教程目录CHAPTER 1 COBOL 概述CHAPTER 2 过程部初步CHAPTER 3 标识部和环境部CHAPTER 4 数据部之一CHAPTER 5 过程部之二CHAPTER 6 过程部之三CHAPTER 7 各部之间的关系及程序举例CHAPTER 8 联机及批量程序的一些差异CHAPTER 9 COBOL 编程规范CHAPTER 1 COBOL 概述COBOL 是Common Business Oriented Language 的缩写。

它不仅是商业数据处理的理想语言,而且广泛用于数据管理领域,因此COBOL 语言也被称为“用于管理的语言”。

一。

COBOL 语言的特点最适于数据处理领域:算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一定的逻辑关系,大量的分类排序;COBOL比较接近英语,容易懂;通用性强,易移植, COBOL结构严谨,层次分明。

二。

COBOL的组成部分:1。

标识部(IDENTIFICATION DIVISION):用于标识程序名。

2。

环境部(ENVIRONMENT DIVISION):用于说明程序运行的环境。

3。

数据部(DATA DIVISION):用于说明程序中涉及的所有数据。

4。

过程部(PROCEDURE DIVISION):是程序的核心部分,它决定计算机应进行什么操作。

三。

最简单的COBOL 程序举例:COL 1 ---6 7 8 12---72 73---80IDENTIFICATION DIVISION。

PROGRAM-ID。

PSAMPLE1。

ENVIRONMENT DIVISION。

DATA DIVISION。

PROCEURE DIVISION。

DISPLAY …THIS IS A COBOL PROGRAM.‟STOP RUN。

四。

COBOL 源程序的书写格式:第1 至6 列为“标号区”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

cobol语言.修订版.(上册+下册).pdf2012-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-1923~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. 将输入设备定义为助忆名:ABCACCEPT 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-OUTPUTSECTION.输入输出节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(文件描述)的缩写,表示从该行起是“文件描述体”。

相关文档
最新文档