cobol入门

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

cobol入门
CHAPTER1COBOL概述
而且广泛用于数据管理领域,因此COBOL语言也被称为”用于管理的
语言”。

一。

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

二。

COBOL的组成部分:
1。

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

2。

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

3。

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

4。

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

三。

最简单的COBOL程序举例:
COL1—67812—7273—80IDENTIFICATIONDIVISION。

PROGRAM-ID。

PSAMPLE1。

ENVIRONMENTDIVISION。

DATADIVISION。

PROCEUREDIVISION。

DIS PLAY’THISISACOBOLPROGRAM.’STOPRUN。

四。

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所处理的数据的特点
层次的概念:数据间存在的从属关系。

文件的概念:多个记录可以组
成一个文件。

记录的概念:具有一定层次关系的一组数据项的最大集合,它是内存
中具有独立逻辑含义的最大存取项,具有最高层次。

CHAPTER2过程部初

一。

输入输出语句。

1。

ACCEPT语句:直接从终端键盘或系统指定的输入设备上输入数据。

ACCEPT标识符[FROM助忆名]
注:A。

标识符(identifier)指的是能唯一地标识一个数据项的数据名,不能唯一地标识一个
数据项的数据名不是标识符。

标识符可以是组合项。

B。

在ACCEPT语句中如不写FROM部分,如ACCEPTA,则表示从系统
隐含指定的
如在过程部中有ACCEPTTFROMABC。

则表示要从控制台接收数据2。

DISPLAY语句:从计算机内存中输出到某一指定的输出设备上。

DISPLAY{标识符1,常量1}[标识符2,常量2]。

[UPON助忆名](标识符和助忆名的说明同上)
ACCEPT语句和DISPLAY语句不必定义文件适用于少量的数据输入输出。

COBOL的存取是以文件为对象以记录为单位的。

READ语句的最简单的
格式为:READ文件名
ENVIRONMENTDIVISION。

INPUT-OUTPUTSECTION。

FILE-CONTROL。

SELECTIN-FILLEASSIGNTO外部文件名。

为了存储读入的记录,必须在内存开辟一个与文件记录长度相等的存储区,即’输入文件纪录区’。

每一个输入文件都有相应的’输入文件纪录区’,与之一一
对应。

亦即在数据部中描述文件的数据结构。

3。

READ语句:
假设IN-FILE文件每一记录中包含的内容为:产品代码,产品数量,
产品单价,生产日期。

设某一记录的具体数据如下:
00100100000100019990322prodcodequantitypriceyearmonday如果我们希望读入该记录并对各数据项进行处理,则需要在’输入纪录区’中划分出各数据项,以便存放相应的数据。

定义输入纪录区以及划分记录区中各数据项的工作是由数据部来完成的。

下面我们简单介绍数据部定义记录区方法,针对上面输入数据的特点,我们可以在数据部中对记录区作如下描述:DATADIVISION。

FDIN-FILELABLERECORDISSTANDARD。

01IN-RECORD。

(定义记录区名为IN-RECORD)02PROD-CODEPIC9(4)。

02PROD-QUANTITYPIC9(5)。

02PROD-PRICEPIC9(6)。

02MANU-DATE。

(生产日期为一组合项)05DATE-CCYYPIC9(4)。

05DATE-MMPIC9(2)。

05DATE-DDPIC9(2)。

其中,FD即FILEDESCRIPTION,表示从该行起是’文件描述体’。

LABLERECORDISSTANDARD:所有的磁盘文件和磁带文件都必须写明此句。

01层定义’输入纪录区’的名字为IN-RECORD,由于01层属于FD描述体,因此也就指定了IN-RECORD和IN-FILE的关系。

亦即从IN-FILE读入的数据存放在IN-RECORD记录区中。

这样,在执行一次READ语句后,文件中一个记录的数据便输入到内存记录区,按排列顺序分别送到记录区中各数据项中。

注意文件的各记录中的数据是不分数据项的,只是按一定的顺序把数据存放在各字节中。

所以数据部对记录区中各数据项的描述应该与文件的记录中各数据排列次序和长度相一致。

READ语句的一般形式:READ文件名RECORD[INTO标识符][ATEND执行语句],例如:
READIN-FILEINTOTEMP-RECORDATENDSTOPRUN该语句除了将读到的数
据传送到IN-RECORD之外,还传送到TEMP-RECORD中。

在遇到文件尾时,
程序结束运行。

4。

WRITE语句:将内存中的数据输出到外部设备,主要是由WRITE
语句来完成的。

WRITE语句的最简单的格式为:
WRITE记录名(注意WRITE语句的操作对象是记录,所以是’记录名’而不是’文件名’)
与输入文件相似输出文件也要在环境部中指定所对应的实际存在的外
部文件:ENVIRONMENTDIVISION。

INPUT-OUTPUTSECTION。

FILE-CONTROL。

SELECTOUT-FILLEASSIGNTO打印机名。

也要在数据部中定义输出记录区:DATADIVISION。

FDOUT-FILELABLERECORDISOMITTED。

01OUT-RECORD。

02PROD-CODEPIC9(4)。

02PROD-QUANTITYPIC9(5)。

02PROD-PRICEPIC9(6)。

02MANU-DATE
05DATE-CCYYPIC9(4)。

05DATE-MMPIC9(2)。

05DATE-DDPIC9(2)。

LABLERECORDISOMITTED:凡输出设备是打印机的都必须写明此句。

如输出
设备是磁盘,则仍用LABLERECORDISSTANDARD。

01层定义’输出纪录区’的名字为OUT-RECORD,由于01层属于FD
描述体,因此也就指定了
OUT-RECORD和OUT-FILE的关系。

在用WRITE语句输出一个记录之前,应向输出记录区传送数据。

如已将数据传送到上述各数据项中,则在执行WRITEOUT-RECORD语句后,则记录区中的数据通过打印机打印出来。

WRITE语句的一般形式:标识符2LINEBEFORE整数LINESWRITE记录名[FROM标识
符1]AFTERADVANCING助忆名
5。

OPEN语句:程序中如果需要读写文件,则该文件必须先用OPEN 语句打开,系统在执行READ,WRITE以前先检查该文件是否已在规定的外部设备上准备就绪。

OPEN语句的一般格式为:
INPUT文件名1[,文件名2]。

OPENOUTPUT文件名3[,文件名4]。

6。

CLOSE语句:当对一个文件的读或写的操作已完成,就应关闭该文件。

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]。

2。

SUBTRACT语句:
格式1:SUBTRACT标识符1,标识符2。

FROM标识符m[,标识符n]。

常量1,常量2
格式2:SUBTRACT标识符1,标识符2。

FROM标识符
常量1,常量2常量GIVING标识符n[,标识符p]。

3。

MULTIPLY语句:
格式1:MULTIPLY标识符1BY标识符2[,标识符3]。

常量1,
格式2:MULTIPLY标识符1BY标识符2GIVING标识符3[,标识符4]。

常量1,常量24。

DIVIDE语句:格式1:DIVIDE标识符1INTO标识符2[,标识符3]。

常量1
格式2:DIVIDE标识符1INTO标识符2GIVING标识符3[,标识符4]。

常量1BY常量2
Bà注意:DIVIDEAINTOB是指B/ADIVIDEAINTOCàBGIVINGC是指B/A
DIVIDEABYBCàGI VINGC是指A/B5。

COMPUTE语句:
COMPUTE标识符1[,标识符2]。

=算术表达式
运算的优先级由高到低顺序为:(),正负号,某某,某或/,+或-如:C=3,D=5,E=2,F=1则:
COMPUTA,B=-(C+D)某2/E某某3-F=-3三。

传送语句(MOVE)
MOVE语句用来实现内存中数据的传送(而不是内存和外设之间的传送)。

MOVE语句的一般格式为:
MOVE标识符1TO标识符2[,标识符3]。

常量1
MOVE语句的传送规则:
1,如果接收项和发送项在数据部中描述的类型和长度相同,则按字节一一对应
01PGM3COM.
05CUST-NOPIC9(8).05PGM3-OUT.
10PGM3-RETURN-CODEPIC某(2).
88PGM3-SUCCESSFULVALUE’’.88PGM3-CUST-NBR-
ERRVALUE’01′.88PGM3-CUST-NOT-FNDVALUE’02′.10PGM3-
ACPIC9(5).10PGM3-BALPIC9(11).01MASTER-RECORD.
05MASTER-KEYPIC9(8).05CUST-NAMEPIC某(20).05CHECK-
ACPIC9(5).05BALPIC9(11).LINKAGESECTION.
01DFHCOMMAREAPIC某(26).PROCEDUREDIVISION.A000-MAIN-PROCESS.
MOVEDFHCOMMAREATOPGM3COMINITIALIZEPGM3-OUT
PERFORMB000-VALIDATIONTHRUB000-E某ITIFPGM3-SUCCESSFUL
PERFORMC000-PROCESSTHRUC000-E某ITEND-IF.
A999-RETURN.
MOVEPGM3COMTODFHCOMMAREA.E某ECCICSRETURNEND-E某EC.GOBACK.某
B000-VALIDATION.
IFCUST-NONOTNUMERICSETPGM3-CUST-NBR-ERRTOTRUEEND-IF.
B000-E某IT.
E某IT.某
C000-PROCESS.
MOVECUST-NOTOMASTER-KEYE某
ECCICSREADFILE(’VMASTER’)RIDFLD(MASTER-KEY)INTO(MASTER-RECORD) LENGTH(LENGTHOFMASTER-RECORD)RESP(WS-RESP)END-E某EC
IFWS-RESPNOT=DFHRESP(NORMAL)IFWS-
RESP=DFHRESP(NOTFND)SETPGM3-CUST-NOT-FNDTOTRUEELSE
E某ECCICSABENDABCODE(’ABCD’)END-E某ECEND-IFELSE
MOVECHECK-ACTOPGM3-ACMOVEBALTOPGM3-BALEND-IF.
C000-E某IT.E某IT.
CHAPTER8联机及批量程序的一些差异批量
对大量数据的集中处理一般在非营业时间运行对效率要求较高
联机
对特定的少量数据操作一般在营业时间运行对实时性要求较高
在操作系统中通过后台作业流
在CICS平台上通过CICS激活运行
来调度运行
资源由作业流和程序管理
资源由CICS集中管理,程序对资源使用通过调用CICS提供的语句
一般会使用
不会使用INPUT-OUTPUTSECTION.
INPUT-OUTPUTSECTION.
FILE-CONTROL.FILESECTION.
FILE-CONTROL.FILESECTION.
出错处理通过检测文件状态字出错处理通过检测CICS返回状态字CHAPTER9COBOL编程规范
1.使用結構化的編程方法,開發一致的、可理解的和易于維護的COBOL程序.結構化編程應遵循”KISS”法則,即:”
KeepItSimple&Stupid”forEASYTOREAD,EASYTODEBUG,EASYTOMAINTAI N.
2.只用顺序,循环,选择3种程序結構及組合去表示程序邏輯
3.每個控制結構只有一個入口和一個出口(結構可以是一個模塊,段,節,子程序)。

4.不要爲了時空效率而犧牲清晰性。

5.程序的清晰性首先在於邏輯的清晰,然後才是格式的清晰。

6.清晰
的格式有助於清晰的思維。

7.確信所有變量在被使用時都被正確地置初值。

8.避免濫用語言特色,應使程序簡潔易讀。

9.使用有意義的、簡化的變量名及詞語標號。

10.盡量使用標準的公用子程序執行既定的程序功能。

11.避免不必要
的複雜的算術和邏輯表達式。

12.避免重復的控制序列以及不必要的轉移。

13.不要用注釋去精確地重復程序代碼,要使得注釋有價值。

14.嚴格控制非限制性轉移語句”GOTO”的使用,除非下面兩種情況:當不使用時將會模糊而不是澄清功能;在同一程序單元内正向轉移。

相关文档
最新文档