文档库 最新最全的文档下载
当前位置:文档库 › cobol

cobol

cobol
cobol

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

一。COBOL 语言的特点

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

二。COBOL的组成部分:

1。标识部(IDENTIFICATION DIVIS ION):用于标识程序名。

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

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

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

三。最简单的COBOL 程序举例:

COL 1 ---6 7 8 12---72 73---80

IDENTIFICATION DIVIS ION。

PROGRAM-ID。PSAMPLE1。

ENVIRONMENT DIVISION。

DATA DIVISION。

PROCEURE DIVIS ION。

DIS PLAY …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 所处理的数据的特点

层次的概念:数据间存在的从属关系。

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

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

一。输入输出语句。

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

ACCEPT 标识符[FROM 助忆名]

注: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 助忆名]

(标识符和助忆名的说明同上)

ACCEPT语句和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 2

prodcode quantity price year mon day

如果我们希望读入该记录并对各数据项进行处理,则需要在…输入纪录区?中划分出各数据项,以便存放相应的数据。定义输入纪录区以及划分记录区中各数据项的工作是由数据部来完成的。下面我们简单介绍数据部定义记录区方法,针对上面输入数据的特点,我们可以在数据部中对记录区作如下描述:

DATA DIVIS ION。

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 STA NDARD :所有的磁盘文件和磁带文件都必须写明此句。

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 DIVIS ION。

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-DATE

05 DATE-CCYY PIC 9(4)。

05 DATE-MM PIC 9(2)。

05 DATE-DD PIC 9(2)。

LABLE RECORD IS OMITTED :凡输出设备是打印机的都必须写明此句。如输出设备是磁盘,则仍用LABLE RECORD IS STA NDA RD。

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

在用WRITE 语句输出一个记录之前,应向输出记录区传送数据。如已将数据传送到上述各数据项中,则在执行W RITE OUT-RECORD 语句后,则记录区中的数据通过打印机打印出来。

WRITE 语句的一般形式:标识符2 LINE

BEFORE 整数 LINES

WRITE 记录名[FROM 标识符1 ] AFTER ADVANCING 助忆名PAGE

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

OPEN语句的一般格式为:

INPUT 文件名1 [,文件名2]。。。

OPEN OUTPUT 文件名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:SUBTRA CT 标识符1 ,标识符2 。。。FROM 标识符m [,标识符n]。。。

常量1 ,常量2

格式2:SUBTRACT 标识符1 ,标识符2 。。。FROM 标识符

常量1 ,常量2 常量

GIVING 标识符n [,标识符p]。。。

3。MULTIPLY语句:

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

常量1,

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

常量1 ,常量2

4。DIVIDE语句:

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

常量1

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

常量1 BY 常量2

B ?注意: DIVIDE A INTO B 是指 B/A

DIVIDE A INTO C? B GIVING C 是指 B/A

DIVIDE A BY B C ?GIVING C 是指 A/B

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

常量1

MOVE语句的传送规则:

1,如果接收项和发送项在数据部中描述的类型和长度相同,则按字节一一对应传送。

2,如果接收项和发送项长度不相同,而二者都是数值数据项,则按小数点对齐处理。

3,对字母或字符数据(非数值型数据)的传送,按左对齐处理。

4,初等项和组合项之间可以相互传送。

关于各类数据之间的传送规则将在第五章中介绍。

四。转移语句(GO TO)

当需要使程序改变正常执行的顺序时,可以使用无条件转移语句GO TO 。其一般格式为:

格式1: GO TO 过程名

格式2:GO TO 过程名1 [,过程名2]。。过程名

n DEPENDING ON 标识符

注意:只能转移到段或节的开头,不能转移到段或节的当中某一语句。段名或节名为过程名。

五。条件语句(IF)

当需要根据给出的某些条件是否满足来决定应执行哪一部分语句时,可以使用条件语句IF。

其一般格式为:

IF 条件语句组1 ELSE 语句组1 [END-IF]

NEXT SENTENCE NEXT SENTENCE

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 > 0

DISPLAY A。

ADD A TO TOTAL。

DISPLAY TOTAL。

与IF A > 0

DISPLAY A

ADD A TO TOTAL。

DISPLAY TOTAL。就不同。

为避免出现问题应该使用显式终止符(END-IF,END-PERFORM等)代替隐式终止符(句点“。”)六。停止语句(STOP)

其一般格式为:STOP RUN

常量

STOP RUN 执行后,程序停止运行,停止后不能再接着运行,如需要,可重新运行一次。

STOP 常量,表示程序暂时挂起不往下执行,显示出此常量。

七。返回语句(GOBACK)

停止运行,将控制权返回给上一级。可用本语句代替STOP语句。子程序必须用GOBACK 而

不能用STOP:因为STOP停止的是一个RUN UNIT(运行单元)。

一。标识部(IDENTIFICATION DIVISION)

IDENTIFICATION DIVISION.

PROGRAM-ID. 程序名。

[AUTHOR。作者名。]

[INSTALLATION。计算机设置场所。]

[DATE-WRITTEN。源程序编写日期。]

[DATE-COMPILED。源程序编译日期。]

[SECURITY。保密程度。]

二。环境部(ENVIRONMENT DIVIS ION)

ENVIRONMENT DIVIS ION.

CONFIGRATION SECTION。

SOURCE-COMPUTER。源计算机名。

OBJECT-COMPUTER。目标计算机名。

[SPECIAL-NAMES。专用名描述项。]

[INPUT-OUTPUT SECTION。

FILE-CONTROL。{文件控制描述体}。。。

[I-O-CONTROL。输入输出控制描述体]]

1。CONFIGRATION SECTION。

专有名段的一般格式:

SPECIAL-NAMES。

[DICIMAL-POINT IS COMMA。]

[CURRENCY SIGN IS 非数值常量。]

[专用名IS 助忆名。]

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

一。数据部概述。

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

层次规定如下:

(1)用来描述数据的层次结构的层号从01到49。记录的层次最高,定为01层号。

(2)从属项的层号比其下属项的层号高。层号不必要求连续。

(3)从属于同一组合项但不互相从属的数据项具有相同的层号。

3。数据部的结构:数据部中通常用到的有以下几个节:

(1)FILE SECTION:描述程序中用到的输入输出文件及其记录中各数据项的属性。

(2)WORKING-STORAGE SECTION:描述程序中用到的中间数据项。

(3)LINKAGE SECTION:描述与调用程序间发生数据传递的数据项。

(4)REPORT SECTION:为了完成报表编制功能,此节用来规定欲输出的报表的…体裁?,设计各报表栏的打印形式和方法等。

二。文件节。

1。文件节的作用:程序中每一个输入或输出文件都要在文件节中加以描述。内容包括:文件名和文件属性;文件中包括的记录名字;每个记录中数据的层次关系;记录中各数据项的数据形式和占内存的大小。

2。文件描述:最简单的文件描述体的一般格式为:

FD 文件名

LABLE RECORD IS STANDARD

RECORDS ARE OMITTED

DATA RECORD IS 数据名

RECORDS ARE

3。记录描述:记录描述体由01层号开始,后跟记录名。如果记录本身就是一个初等项,则在记录名后描述记录长度;否则,数据名后跟句点,下面定义记录的数据结构。如:

DATA DIVIS ION。

FILE SECTION。

FD IN-FILE

LABLE RECORD IS STANDARD。

DATA RECORD IS IN-FILE-RECORD。

01 IN-FILE-RECORD PIC X(80)。

DATA DIVIS ION。

FILE SECTION。

FD IN-FILE

LABLE 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)。)

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)如送入一个负数,则负号被舍弃。

…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不占位数,在传送或运算时起作用。

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)。99DB

02 A2 PIC $9(3)。99CR。

5.常用数值型数据

假如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] POS ITIVE

算术表达式NEGATIVE

ZERO

2。类型条件:

标识符 IS [NOT] NUMERIC

ALPHABETIC

3。条件名条件:用来表示条件变量当前值的名字叫条件名。条件名本身是一个条件,它有一个值(…真?或…假?),用它来检查条件变量的值是否落在条件名所代表的值的范围中,当条件变量的值落在条件名所代表的值的范围中,则此条件名所表示的条件为…真?,否则为…假?。

条件名条件的一般格式:

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。

二.程序举例:

例1:

读入一组产品销售记录,每读入一个记录,计算出销售总额(数量X单价).然后打印出该产品的全部数据.数据形式如下:

1 9 9

2 1 2

3 1 0 0 0 0 0 1 A A A A 0 1 0 0 5 0 0 0

1 9 9 3 1

2

3 1 1 0 0 0 0 1 B B B B 0 2 0 0 6 0 0 0

------------------------- ----------------- ------------ ------------ -----------

DATE PRODCODE CUST AMT PRICE

程序如下:

IDENTIFICATION DIVISION.

PROGRAM-ID. PEXAM1

ENVIRONMENT DIVISION.

CONFIGRATION SECTION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT INPUT-FILE ASSIGN TO FILE1

ORGANIZATION IS SEQUENCIAL

ACCESS MODE IS SEQUENCIAL

FILE-STATUS IS WS-INPUT-FILE-STATUS.

SELECT OUTPUT-FILE ASSIGN TO P-FILE

ORGANIZATION IS SEQUENCIAL

ACCESS MODE IS SEQUENCIAL

FILE-STATUS IS WS-OUTPUT-FILE-STATUS. DATA DIVISION.

FILLE SECTION.

FD INPUT-FILE LABEL RECORD IS STANDARD.

01 IN-REC.

05 DATE PIC 9(8).

05 PROD-CODE PIC 9(6).

05 CUSTOMER-CODE PIC X(4).

05 QUANTITY PIC 9(4).

05 UNIT-PRICE PIC 9(4).

FD OUTPUT-FILE LABEL RECORD IS STANDARD.

01 OUT-REC.

05 DATE PIC 9999B99B99.

05 FILLER PIC X(5).

05 PROD-CODE PIC 9(6).

05 FILLER PIC X(5).

05 CUSTOMER-CODE PIC X(4).

05 FILLER PIC X(5).

05 QUANTITY PIC ZZZ9.

05 FILLER PIC X(5).

05 UNIT-PRICE PIC $(5).

05 FILLER PIC X(5).

05 SALES-VALUE PIC $(8).

WORKING-STORAGE SECTION.

01 WS-VARIBLES.

05 WS-INPUT-FILE-STATUS PIC 9(2).

88 WS-INPUT-FILE-SUCCESSFUL VALUE 0.

88 WS-INPUT-FILE-EOF VALUE 23.

05 WS-OUTPUT-FILE-STATUS PIC 9(2).

88 WS-OUTPUT-FILE-SUCCESSFUL VALUE 0. PROCEDURE DIVISION.

A000-MAIN.

PERFORM A100-OPEN-FILES

PERFORM R000-READ-FILE

PERFORM A200-PROCESS-RECORD UNTIL WS-INPUT-FILE-EOF

PERFORM A300-CLOSE-FILES

STOP RUN

.

A000-EXIT.

EXIT

.

A100-OPEN-FILES.

OPEN INPUT INPUT-FILE

OUTPUT OUTPUT-FILE

IF NOT WS-INPUT-FILE-SUCCESSFUL

DISPLAY …INPUT-FILE OPEN NOT SUCCESSFUL?UPON CONSOLE

PERFORM Z000-ABEND

END-IF

IF NOT WS-OUTPUT-FILE-SUCCESSFUL

DISPLAY …OUTPUT-FILE OPEN NOT SUCCESSFUL?UPON CONSOLE

PERFORM Z000-ABEND

END-IF

.

A200-PROCESS-RECORD.

INITIALIZE OUT-REC

MOVE CORR IN-REC TO OUT-REC

COMPUTE SALES-VALUE = QUANTITY OF IN-REC * UNIT-PRICE OF O UT-REC

PERFORM W000-WRITE-FILE

PERFORM R000-READ-FILE

.

A300-CLOSE-FILE.

CLOSE INPUT-FILE

OUTPUT-FILE

.

R000-READ-FILE.

01-Cobol-基础知识讲义

第一章关于COBOL的初步知识 一. COBOL语言的特点 COBOL是Common Business-Oriented Language(公用面向商业的语言)的缩写,主要供数据处理、数据收集及分析之用。COBOL自60年代初开始广泛应用于计算机应用领域(商业和其他领域)。事实上,除了商业之外,各种管理工作都广泛使用COBOL,如各种统计工作,财会工作,企业计划编制,作业制度,情报检索,人事管理等。COBOL针对商业世界的使用,是真正商用应用程序开发的首选语言。 . 1 适于数据处理领域。 . 2 采用英语语法的高级语言,可读性、可维护性、可移植性较强。 3 . 通用性强,标准化程度较高。 . 4 结构严谨,层次分明。 . 5 缺点是比较繁琐。 . 最简单的COBOL程序介绍 二例1: IDENTIFICATION DIVISION.(标识部) PROGRAM-ID. EXAM1.(程序标识段) ENVIRONMENT DIVISION.(设备部) DATA DIVISION.(数据部) PROCEDURE DIVISION.(过程部) A. DISPLAY ‘THIS IS A COBOL PROGRAM.’. STOP RUN. 例2: IDENTIFICATION DIVISION.(标识部) PROGRAM-ID. EXAM2.(程序标识段) ENVIRONMENT DIVISION.(设备部) DATA DIVISION.(数据部) WORKING-STORAGE SECTION.(工作单元节) 77 A PICTURE IS 9(3).(对A进行描述) 77 B PICTURE IS 9(3).(对B进行描述) PROCEDURE DIVISION.(过程部) S. ACCEPT A.(输入A值) ACCEPT B.(输入B值) ADD A TO B.(A+B->B) DISPLAY A,B.(显示A和B值) STOP RUN. 三.COBOL程序的结构 1.部 每个程序都包括四个部: IDENTIFICATION DIVISION (标识部)提供程序的一般性文档说明,主要用来指定源程序名。 ENVIRONMENT DIVISION (环境部)列出程序中所用到的文件。程序中不需要外部文件时,环境部为空,也可以省略部标题。 DATA DIVISION (数据部)程序中所用到的全部数据(包括:文件数据—-用于输入输出、静态数据、参数等)都应在数据部中说明它们的类型和所占内存的情况。 PROCEDURE DIVISION (过程部)包含构成程序的过程性语句,用来给出程序要执行的指令,使计算机产生相应的操作。 2.节和段 标识部下只有各个段。除标识部以外,每个部下可以有若干个节(SECTION),每个节以“节头”作标识。每个节下又可包括若干段(PARAGRAPH),每个段用“段名”标识。各个段内有各种COBOL元素。 3.句子,语句和子句 在过程部中,每一段由若干个句子(Sentence)组成。一个句子是以英文句号来结束的。句子又由语

cobol基本语法教学内容

c o b o l基本语法

基本語法 一、COBOL基本語法 一、cobol的书写格式(每行) 1、前6列为序号区(一般不编辑) 2、第7列为标示列,仅可以写如下几个标示符。 a. “*”注释符(注释当前行的代码) b “-“字符串连接符 3、第8列---11列为A区,包括以下内容。 a 部、节名。 b 层号01 4、第12列---72列为B区,过程部的程序必须写在B区中。 5、第72以后部分不能编辑。 二、cobol的语法结构 (几大部分) 1、标示部(IDENTIFICATION DIVISION):提供程序的一般性文档说明。 2、环境部(ENVIRONMENT DIVISION): 提供程序外部有关的项目。 a.配置节(CONFIGURATION SECTION) ①.指定源计算机(SOURCE-COMPUTE). ②.目标计算机(OBJECT-COMPUTE). b. 输入输出节(INPUT-OUTPUT SECTION). 文件的物理路径的定义。 方法二:(过程部中动态指定文件) SELECT FILE-LOG ASSIGN TO SELECT-FILE ORGANIZATION IS LINE SEQUENTIAL. 在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。 3、数据部(DATA DIVISION)。 程序中的变量都在数据部中定义,Cobol中没有全局变量和局部之分。(变量的类型结构参照5.变量类型) a. 文件节(FILE SECTION) 给环境部定义的文件指定一个RECORD变量,读写文件用: FD FILE-LOG. 01 RECORD-LOG PIC X(2000). b. 工作存储节 定义程序中用到的临时变量。 a) COBOL变量定义需要加层号(表示层次关系), ·层号从01开始 如: 01 I PIC X(10). ·组合项 如: 01 WORK-AREA. 05 NUM-1 PIC 9(09).

COBOL面试1—30题答案

COBOL面试1—30题答案 A1) IDENTIFICA TION DIVISION, ENVIRONMENT DIVISION, DA TA DIVISION, PROCEDURE DIVISION. Q:列举COBOL的DEVISION A:标识部,环境部,数据部,过程部 A2) Alpha-numeric (X), alphabetic (A) and numeric (9). Q:COBOL有哪些可用的数据类型 A:字符型(这里指的是包含字母和数字),字母型,数字型 A3) Alphabetic, Alphanumeric fields & alphanumeric edited items are set to SPACES. Numeric, Numeric edited items set to ZERO. FILLER , OCCURS DEPENDING ON items left untouched. Q:INITIALIZE这个词做了些什么 A:将字母,字符,数字区域都置成空格(置空),将数字区置0,FILLER和OCCURS DEPENDING ON项不处理 A4) Elementary level item. Cannot be subdivisions of other items (cannot be qualified), nor can they be subdivided themselves. Q:77层有什么作用 A:基本层数据项,不能用做细分别的层,也不能被细分 A5) For condition names. Q:88层有什么作用 A:条件逻辑层 A6) For RENAMES clause. Q:66层有什么作用 A:重命名层 A7) IS NUMERIC can be used on alphanumeric items, signed numeric & packed decimal items and unsigned numeric & packed decimal items. IS NUMERIC returns TRUE if the item only consists of 0-9. However, if the item being tested is a signed item, then it may contain 0-9, + and - . Q:IS NUMERIC这个子句怎么确定(也就是说确定句子的真值) A:IS NUMERIC用在字符项,带符号数字,浮点数,不带符号数。如果目标项只含0~9则返回TRUE。但是,如果待测项目是个带符号数,那么他就含有0-9还有+和- A8) ARRAYS. 05 ARRAY1 PIC X(9) OCCURS 10 TIMES. 05 ARRAY2 PIC X(6) OCCURS 20 TIMES INDEXED BY WS-INDEX Q:COBOL中怎么建表/数组 A:如上.

浅谈COBOL开发

浅谈COBOL开发 近几年,由于IBM和HITACHI等大型机力推COBOL,使COBOL在沉睡了几年以后又重新火了起来。因为本人从毕业以来,一直在做COBOL的项目,今天斗胆把毕业以来的一些经验写出来,不管对还是错拿出来大家一起讨论讨论。 COBOL语言常用的开发方式有以下几种: 1. PC机开发。这种开发方式比较灵活,可以与当今比较流行的语言进行对接。把数据库、及开发环境都可以集成到我们的PC机上。程序执行的LOG和文件都在PC机上指定目录。当今比较流行的语言如.net、 VB、 C++等编译生成的LIB文件,COBOL都可以直接调用。这种开发方式所使用的开发工具中首推日立推出的COBOL2002,还有一个比较低的版本COBOL85,COBOL2002的优势在于DB连接方面。当然由于COBOL85版本太老,本人无缘使用,但是曾经听过一位前辈说COBOL85不能进行DB连接,也就是说COBOL85的数据存储只能以文件的形式存储。COBOL2002可以设定断点(VB、.NET程序员应该比较熟悉),程序执行过程中可以单步调试,察看变量值。COBOL2002还可以记录测试路径的覆盖率,一些异常处理可以利用设定断点的方式跑到,所以这种开发方式可以出现路径覆盖率为100%的情况。但是这种开发形式的语法要求比较低,比如说代码中出现全角空格就能顺利通过编译,而相同的代码在大机上编译就会出错。 2.B/S形式大机开发。程序员在PC机上开发,代码编写完成以后,通过FTP上传工具,把代码上传到大机端。利用远程登录telnet登录大机,在命令行输入编译代码。本身程序员在编写代码过程中完全占用PC机资源,不占用大机内存资源。当程序被传到大机上以后,才占用大机资源。由于大机是多用户多线程作业,所以即使代码死循环,大机也不会停掉。而是在这个线程执行一段时间以后,压到堆栈中,执行其他线程。这种大机典型的是H9000(HITACHI9000,个别人可能误以为是HP的产品)。大机上常常把目录固定,主处理和子程序往往在不同的目录下存放。程序执行过程中无法设定断点。如果想要查看程序执行过程中的变量,只能在代码中追加DISPLAY语句,在LOG中把变量值打出来。一般来说,大机的语法要求高一些,代码里除了X型变量中和注释出现全角空格外,其他地方出现空格是绝对不能编译通过的。 3.HOST端大机开发。程序员通过个人计算机和网络和大机相连,在编写代码的过程中,占用大机资源。就是说如果你PC删除一行代码,对应大机上也要删除一行代码。编写的代码无法在PC机上进行编译,代码需要使用大机的操作系统命令进行编译和执行。代码编写操作远远没有ULTRAEDIT方便,删除、拷贝都需要系统命令。而且要进行用户登录和退出。开发担当常常用一个文本记下所有常用命令,以便开发过程使用。这种开发的典型就是IBM 的S/390

Cobol基础

Cobol 语法基础 作成者审查者承认者 丁成远 变更履历 日期版本作成者备注 2005-03-01 1.0 丁成远初版

一.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基本语法

基本語法 一、COBOL基本語法 一、cobol的书写格式(每行) 1、前6列为序号区(一般不编辑) 2、第7列为标示列,仅可以写如下几个标示符。 a. “*”注释符(注释当前行的代码) b “-“字符串连接符 3、第8列---11列为A区,包括以下内容。 a 部、节名。 b 层号01 4、第12列---72列为B区,过程部的程序必须写在B区中。 5、第72以后部分不能编辑。 二、cobol的语法结构 (几大部分) 1、标示部(IDENTIFICATION DIVISION):提供程序的一般性文档说明。 2、环境部(ENVIRONMENT DIVISION): 提供程序外部有关的项目。 a.配置节(CONFIGURATION SECTION) ①.指定源计算机(SOURCE-COMPUTE). ②.目标计算机(OBJECT-COMPUTE). b. 输入输出节(INPUT-OUTPUT SECTION). 文件的物理路径的定义。 方法二:(过程部中动态指定文件) SELECT FILE-LOG ASSIGN TO SELECT-FILE ORGANIZATION IS LINE SEQUENTIAL. 在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。 3、数据部(DATA DIVISION)。 程序中的变量都在数据部中定义,Cobol中没有全局变量和局部之分。(变量的类型结构参照5.变量类型) a. 文件节(FILE SECTION) 给环境部定义的文件指定一个RECORD变量,读写文件用: FD FILE-LOG. 01 RECORD-LOG PIC X(2000). b. 工作存储节 定义程序中用到的临时变量。 a) COBOL变量定义需要加层号(表示层次关系), ·层号从01开始 如: 01 I PIC X(10). ·组合项 如: 01 WORK-AREA.

COBOL语言测试试卷(一)

COBOL语言测试试卷(一) 一、选择题(共10分) 1、关于COBOL语言,下述描述中正确的是:() A.COBOL可以用于开发操作系统。 B.COBOL还可以用于开发编译器。 C.COBOL主要用于编写面向商业的应用程序。 D.如今比较少用COBOL开发应用程序。 2、不属于COBOL程序的部的是:() A.过程部。 B.程序部。 C.数据部 D.环境部 3、COBOL代码中最小的单位是:() A. Division B. Section C. Sentence D. Statement 4、COBOL程序中的数据在哪个部中定义?() A.过程部。 B.环境部。 C.数据部 D.定义部 5、COBOL程序中如果有环境部的话,应置于:() A.过程部之后定义部之前。 B.定义部之后过程部之前。 C.定义部之后数据部之前。 D.数据部之后过程部之前。 6、定义部中不可缺少的段名是:() A.PROGRAM-ID B.AUTHOR C.FILE SECTION D.PROGRAM 7、COBOL程序中一般变量在哪里定义?() A.定义部 B.环境部 C.数据部的FILE SECTION D.数据部的WORKING-STORAGE SECTION 8、在过程部中,可以没有的是:() A.SECTION B.PARAGRAPH C.SENTENCE D.STATEMENT 9、当一个COBOL编译器区分A区和B区的时候,必须从B区开始的是:() A.段名 B.节名和01级数据 C.部名 D.过程部里的Sentences。 10、在COBOL程序中,下列用户自定义的名称有效的是:() A.This result B.-Grosspay C.Grosspay- D.Gross-pay 二、判断题(共20分)

COBOL经典面试题库(中文)

COBOL经典面试题库 Q1:列举COBOL的DEVISION A1:标识部,环境部,数据部,过程部 Q2:COBOL有哪些可用的数据类型 A2:字符型(这里指的是包含字母和数字),字母型,数字型 Q3:INITIALIZE这个词做了些什么 A3:将字母,字符,数字区域都置成空格(置空),将数字区置0,FILLER和OCCURS DEPENDING ON项不处理 Q4:77层有什么作用 A4:基本层数据项,不能用做细分别的层,也不能被细分 (来源:) Q5:88层有什么作用 A5:条件逻辑层 Q6:66层有什么作用 A6:重命名层 Q7:IS NUMERIC这个子句怎么确定(也就是说确定句子的真值) A7:IS NUMERIC用在字符项,带符号数字,浮点数,不带符号数。如果目标项只含0~9则返回TRUE。但是,如果待测项目是个带符号数,那么他就含有0-9还有+和- 05 ARRAY1 PIC X(9) OCCURS 10 TIMES. 05 ARRAY2 PIC X(6) OCCURS 20 TIMES INDEXED BY WS-INDEX Q8:COBOL中怎么建表/数组 A8:如上. Q9:OCCURS 子句能用在第一层吗 A9:不能 Q10:索引和下标有什么区别 A10:下标可以指定数组中任意中位置的元素(只要知道其下标),下标只能是数字型常量或者数字型变量(但是不能在指定的时候修改,如:A(K+1)这样是不行的,要修改的话要在指定的外部改,如:ADD 1 TO K,而索引的话是从表头/数组头开始检索(以BY N的指定检索规律往后滚) 再者,索引只能通过PERFORM, SEARCH 和SET来修改,如果要在一个表中使用SEARCH, SEARCH ALL,那这个表就要有索引(因为SEARCH, SEARCH ALL的参数中指定索引,所以即使其有很多限制还是得用它)

COBOL语法和文法

COBOL语法和文法 REDEFINES 可以用不同的变量描述同一内存。 01 PART_RECODE USAGE DISPLAY 03 PART-TYPE PICTURE... 03 PART_TYPE_A. 05 PART_NUMBER PICTURE... 05 PART_COST PICTURE... 03 PART_TYPE_B REDEFINES PART_TYPE_A. 05 UPC_CODE PICTURE... 03 PART_TYPE_C REDEFINES PART_TYPE_A. 05 ISBN PICTURE... 根据PART_TYPE决定用PART_TYPE_A还是PART_TYPE_B还是PART_TYPE_C。 规则: PART_TYPE_B和PART_TYPE_C长度不能大于PART_TYPE_A。 数据项不能有VALUE。 01层不能用REDEFINES. PART_TYPE_B和PART_TYPE_C中不能有OCCURS. PICTURE 定义基本项目的具体长度,格式,数据类型。可以简写成PIC. 格式字符串最多30个字符,可以包含下列字符: A 字母A-Z,a-z,空格 B 插入空格 P 标量字符,代表字段中不显示的小数点位置 S 代数符号,实际显示取决于项目的USAGE V 小数点位置 X 任何字符 Z 抑制前头的0并转换成空字符 0 插入0 9 数字0~9 / 插入/ , 插入,(逗号不能作为字符串的最后一位,最后时逗号是分隔符) 。插入。 * 抑制前头的0并转换成* + 正值插入+,负值插入- - 正值插入空格,负值插入- $ 插入美元号 CR 正值插入两个空格,负值插入CR DB 正值插入两个空格,负值插入DB 例子: 03 VAR PIC AAAAA. STATE变量长度为5个字符,不能有数字,等价于03 STATE PIC A(5)。

COBOL试题答案

一、选择题(15分)(含多项选择) 1、不属于COBOL程序的部的是:(B ) A.过程部。 B.程序部。 C.数据部 D.环境部 2、COBOL程序中的数据在哪个部中定义?(C ) A.过程部。 B.环境部。 C.数据部 D.标识部 3、COBOL程序中如果有环境部的话,应置于:(C ) A.过程部之后标识部之前。 B.标识部之后过程部之前。 C.标识部之后数据部之前。 D.数据部之后过程部之前。 4、标识部中不可缺少的段名是:(A ) A.PROGRAM-ID B.AUTHOR C.FILE SECTION D.PROGRAM 5、COBOL程序中一般变量在哪里定义?(D ) A.标识部 B.环境部 C.数据部的FILE SECTION D.数据部的WORKING-STORAGE SECTION 6、下列关于过程部的说法正确的是:(C ) A.过程部中可以不定义节但是必须定义段 B.过程部中可以不定义段但是必须定义节 C.过程部中可以不定义节和段,节和段是根据需要定义的 D.所有程序都是在过程部中以STOP RUN来结束的 7、下面是COBOL合法数据名的是:(ABD ) A.W ANG B.TAN-1 C.12345 D.END-OF E.PROGRAM F.GROSS-$ G.SECTION 8、关系运算符的优先顺序正确的是(A ) A.NOT > AND > OR B.OR> NOT > AND C.AND > NOT > OR D.NOT > OR > AND 9、下记语句表示A/B=>C的是(B ) A.DIV A INTO B GIVING C. B.DIV A BY B GIVING C 10、下记哪些方法可以显示出…ABCD?六个字符(A,C ) A. PIC X(6) VALUE "'ABCD'". 说明:V ALUE后依次为空格双引号单引号ABCD单引号双引号 B. PIC X(6) V ALUE ''ABCD''.说明:V ALUE后依次为空格单引号单引号ABCD单引号单引号 C. QUOTE ?ABCD? QUOTE 11、COBOL对文件的操作以为单位的(B ) A.整个文件 B.记录 C.字段

Cobol基本语法总结

コボル基本語法 一、COBOL基本語法 compla項目使用的Cobol是Micro Focus 公司生产的Cobol,采用在HP-UNIX上运行。 一、cobol的书写格式(每行) 1、前6列为序号区(一般不编辑) 2、第7列为标示列,仅可以写如下几个标示符。 a. “*”注释符(注释当前行的代码) b “/“注释符(注释当前行的代码,程序编译时,强制程序清单另起一页,不建议使用) c “-“字符串连接符 d “D”DEBUG行标示符(程序为DEBUG模式时,标有该标示符的语句行代码执行,否则和注 释行效果一样) 3、第8列---11列为A区,包括以下内容。 a 部、节名。 b 层号01 4、第12列---72列为B区,过程部的程序必须写在B区中。 5、第72以后部分不能编辑。 二、cobol的语法结构(几大部分) 1、标示部(IDENTIFICATION DIVISION):提供程序的一般性文档说明,本项目只保留程序名 (PROGRAM-ID)一项。 2、环境部(ENVIRONMENT DIVISION): 提供程序外部有关的项目。 a.配置节(CONFIGURATION SECTION) ①.指定源计算机(SOURCE-COMPUTE). ②.目标计算机(OBJECT-COMPUTE). ③.设置debug模式(SOURCE-COMPUTE H9000V WITH DEBUGGING MODE) ④. 指定读环境变量设置. SPECIAL-NAMES. ENVIRONMENT-VALUE IS CNS-ENV-PARM ENVIRONMENT-NAME IS CNS-ENV-NAME. b. 输入输出节(INPUT-OUTPUT SECTION). 文件的物理路径的定义。 方法一:(写死文件路径) SELECT FILE-LOG ASSIGN "/usr3/WSI/commonlog/WSI1101.log" ORGANIZATION IS LINE SEQUENTIAL. 方法二:(过程部中动态指定文件) SELECT FILE-LOG ASSIGN TO SELECT-FILE ORGANIZATION IS LINE SEQUENTIAL. 在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。 方法三:(环境变量中动态指定文件)

cobol 知识点集锦

cobol 知识点集锦 COBOL数据类型 计息是银行的一项重要业务,包括日常代理客户收、付计算客户利息和年度计息等。目前,这些工作大多数是在IBM ES9000主机的SAFE应用系统平台上进行,该系统联 机程序和联机计息程序是用IBM 370汇编语言实现的。为方便汇编语言读写,在VSAM文 件存储的数据中,数据存放格式进行了特殊的定义。如日期存放采用X(3)型,01年03月15日,存入EBCD码为X‘010315’。在进行年度计息时,为了实现各种复杂的运算工作,一般采用COBOL语言来实现各种运算。而采用COBOL语言读取X(3)型数据时,读出的是字符型数据,不能直接进行运算,必须转换为COBOL数据类型的数据后才能进行相应处理。 如刚才的X‘010315’,需要转换为内部十进制数据X‘0010315C’。本文介绍一种用COBOL语言实现字符型X(3)与内部十进制数据相互转换的方法。 由X(3)型转换为内部十进制 由于日期数据总是大于零,在COBOL语言的工作单元节定义变量DATE-FIRST后,再追加 定义COBOL语言的最小数据单元X‘000C’,即十进制12。由于重定义DATE-CASE为DATE-CHANGE后,DATE-CHANGE是原日期数据的1000倍,于是要在过程部将DATE-CHANGE除以1000。 首先,在COBOL程序WORKING-STORAGE SECTION. 中定义如下内容: WORKING-STORAGE SECTION. 01 DATE-CASE. 02 DATE-FIRST PIC X(3). 02 DATE-SIGN PIC 9(4) COMP VALUE 12.;定点二进制数 01 DATE-CHANGE REDEFINES DATE-CASE PIC 9(9) COMP-3. ;内部十进制数据 01 DATE-HEX PIC X(3). ;转换前数据 01 DATE-DEC PIC S9(7)COMP-3 . ;转换后数据 然后,在过程部PROCEDURE DEVISION.中加入如下语句: PROCEDURE DEVISION. MOVE DATE-HEX TO DATE-FIRST . COMPUTE DATE-CHANGE = DATE- CHANGE / 1000.

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个字符。

cobol学习笔记

cobol学习笔记(1) COBOL入門 COBOLとは? 2010/06/29 16:35 COBOL面向商业的通用语言 (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 层号01 4、第12列---72列为B区,过程部的程序必须写在B区中。 5、第72以后部分不能编辑。 cobol学习笔记(2)COBOL的程序结构 IDENTIFICATION DIVISION 标识部見出し部 2010/06/29 20:44 COBOL程序由4部(DIVISION)组成:IDENTIFICATION DIVISION.(标识部)、ENVIRONMENT DIVISION.(环境部)、DATA DIVISION.(数据部)、PROCEDURE DIVISION.(过程部),而每个部又由若干节 (SECTION)组成。

cobol介绍

英文缩写: COBOL (Common business Oriented Language) 中文译名: COBOL语言 解释: 一种适合于商业及数据处理的类似英语的程序设计语言。这种语言可使商业数据处理过程精确表达。 COBOL(面向商业的通用语言,又称为企业管理语言、数据处理语言等,Common Business Oriented Langauge)是最早的高级编程语言之一,是世界上第一个商用语言。 1 COBOL的历史 1959年5月,五角大楼委托格雷斯·霍波(G.Hopper)博士领导一个委员会并由Rear Admiral Grace Hopper公司主持开发,并于1961年由美国数据系统语言协会公布。正式发布于1960年4月,称为Cobol-60。1959年12月出现了第一个COBOL语言文本,并于1960年4月正式发表,因此也被称为COBOL-60。1968年美国国家标准委员会ANSI 又通过了新的标准ANSI COBOL X.3.23-1968。1972年国际标准化组织ISO将其作为ISO COBOL-72。1974年ANSI对COBOL-68作出了修订扩充,形成了ANSI COBOL X3.23-1974,随后1978年ISO采用其形成ISO COBOL-78,后来又提出了ANSI X3.23-85,增加了很多结构化程序设计的内容,ISO标准ISO1989:1985也采用了该标准。COBOL 标准还在不断地改进和完善,最新的标准COBOL 2002主体已经于2002年12月出版,其他部分还在不断地完善之中。现在最新的版本是Cobol-2002。 1963年,美国国家标准研究所(ANSI)进行了标准化,但是ANSI标准很少被遵循;因此,COBOL程序只是部分可移植的。 2 COBOL的重要性 经过40多年的不断修改、丰富完善和标准化,COBOL已发展为多种版本的庞大语言,在财会工作、统计报表、计划编制、情报检索、人事管理等数据管理及商业数据处理领域,都有着广泛的应用。 COBOL的重要性可以用这句话来描述:世界上70%的数据都是用COBOL语言处理的,并且90%的A TM事务处理用的都是COBOL语言。每天在线处理的COBOL事务有300亿次。500强中有492家(包括全部的100强)使用了COBOL语言,目前在COBOL方面的投资已经超过3万亿美元,,据称用COBOL书写的程序超过了1000亿行,并且以每年大约50亿行代码的速度在增长。 由于COBOL在商业领域的雄厚基础,而且COBOL主要是应用于银行、金融和会计行业等非常重要的商业数据处理领域。所以,即使对于具有相当经验的IT公司来说,重新编写COBOL语言的可靠的应用软件也是不实际或是从商业角度上并不可行的,而且还要花上很长的时间,只要大型机存在,COBOL就不会消失,即使是对电脑界产生巨大影响的“千年虫”(Y2K)也没有改变COBOL的命运。 3 COBOL的特点 COBOL是一种面向数据处理的、面向文件的、面向过程(POL)的高级编程语言,是一种功能很强而又极为冗长的语言。 COBOL适合于具有循环处理周期的环境(例如打印工资支票)以及数据操纵量相当大的环境。COBOL主要应用于商业数据处理领域,对各种类型的数据进行收集、存储、传送、分类、排序、计算及打印报表、输出图象是它的强项。 COBOL语法与英文很接近,即使不懂电脑的人也能看懂程序。 强大的文件处理功能,大量的数据通常以文件的形式存储在磁盘上。 仅提供了加、减、乘、除及乘方这五种简单的算术运算,因而不适于进行科学计算。 未来的COBOL将支持XML等Web时代的新技术。 4 COBOL的程序结构

COBOL语言概述

COBOL语言概述 一.COBOL程序的结构 1.部 IDENTIFICATION DIVISION 标识部 ENVIRONMENT DIVISION 环境部 DATA 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个字符。 五.COBOL的数据关系 过程部初步 一.输入输出语句 1.ACCEPT(接收语句):直接从中断键盘或系统指定的输入设备上输入少量的数据。 语法:ACCEPT 标识符 [FROM 助忆名]

cobol基本语法

cobol 的书写格式(每行) 1、 前 6 列为序号区 (一般不编辑 ) 2、 第 7 列为标示列,仅可以写如下几个标示符。 a. “* ” 注释符 (注释当前行的代码 ) b “- “ 字符串连接符 3、第 8 列 ---11 列为 A 区,包括以下内容。 a 部、节名。 b 层号 01 4、第 12 列 ---72 列为 B 区,过程部的程序必须写在 B 区中。 5、第 72 以后部分不能编辑。 、 cobol 的语法结构 ( 几大部分 ) 1 、 标示部 (IDENTIFICATION DIVISION): 提供程序的一般性文档说明 2 、 环境部 (ENVIRONMENT DIVISION): 提供程序外部有关的项目。 a. 配置节 (CONFIGURATION SECTION) ①. 指定源计算机 (SOURCE-COMPUTE). ②. 目标计算机 (OBJECT-COMPUTE). b. 输入输出节 (INPUT-OUTPUT SECTION). 文件的物理路径的定义。 方法二 :(过程部中动态指定文件 ) SELECT FILE-LOG ASSIGN TO ORGANIZATION IS LINE SEQUENTIAL . 在数据部定义字符串变量 SELECT-FILE, 在文件 FILE-LOG 打开前动态指定文件路径。 3 、数据部 (DATA DIVISION) 。 程序中的变量都在数据部中定义, Cobol 中没有全局变量和局部之分。 (变量的类型结构参照 5.变量类型) a. 文件节 (FILE SECTION) 给环境部定义的文件指定一个 RECORD 变量,读写文件用 : FD FILE-LOG. 01 RECORD-LOG PIC X(2000). b. 工作存储节 定义程序中用到的临时变量。 a) COBOL 变量定义需要加层号 (表示层次关系 ), ?层号从01开始 如 : 01 I PIC X(10). ? 组合项 如 : 01 WORK-AREA. 05 NUM-1 PIC 9(09). 基本語法 、 COBOL 基本語法 SELECT-FILE

COBOL经典面试题目

JCL ------Job Control Language(作业控制语言) @ JCL代表作业控制语言、JCL是一组控制语句,为需要处理的JOB提供必要的规范。 @ JCL每行80个字符,至今未变 @ JCL必须包括3个JCL基本语句 作业语句(JOB):表示一个作业的开始,提供必要的运行参数 执行语句(EXEC):标识一个作业步的开始,定义本作业步所要执行的程序或过程 数据定义语句(DD):用于描述应用程序所需要的数据文件。 @ /* 语句:表示流内数据结束或调用JES控制语句 @ JOB, 分隔符(/*), 或空语句 2. JOBLIB 或JOBCAT DD语句 3. DD * 或DATA语句 4. 任何 JES2 或 JES3 控制语句 @一个数据集的初次分配是什么 数据集建立时的空间 @一个数据集的主分配和从分配有什么区别 从分配是当要求更多空间时所分配的 @你如何创建一个临时数据集吗在哪里可以使用它们 可以创建临时数据集通过不指定任何DSNAME或指定DSN = &&TEMP。 我们把它们输出到在同意作业步上的工作。一旦作业完成,这个临时数据集就会被删除。 @甚么是S0C4错误 存储违反错误由多种原因决定,例,READING是一个美有打开的文件, @SD37, SB37, SE37 abends是甚么 表示磁盘空间不足 SD37没有指定的从分配 SB37终止卷,并且没有根多的卷被指定 SE37已经分配到最大16 extents @甚么是S322 abend 需要更多的CPU时间程序已经超过了默认的为该作业分配的CPU时间,陷入一个无限循环.. @TIME参数的意思是甚么 TIME=1440 表示甚么 TIME当程序需要更多的CPU时间时用于克服S322 abends TIME=1440表示作业的运行没有时间限制,即24小时。 @COND=EVEN 即使先前作业步异常终止,本作业步都要执行 @COND=ONLY 只有先前作业步异常终止,本作业步才执行 @如何在一个JCL中检查是否有语法错误 在JOB过程中,TYPERUN=SCAN或JSCAN.

COBOL语言知识点

1.DATA ITEM NAMING RULES: 长度为30个字节;字符包括A-Z,a-z,0-9和‘-’;横线不能出现在第一个或最后一个;COBOL 关键字用;至少包含一个字符。 2.DATA STRUCTER LEVEL NUMBER 77定义一个独立的变量 66重命名 88定义条件名 3.DATA TYPE Alphabetic, Alphanumeric, Alphanumeric-edited, Numeric, Numeric-edited https://www.wendangku.net/doc/874810727.html,P-1,COMP-2,COMP-3,COMP,COMP-5 COMP-1:指定内部浮点项目(双精度),8个字节长 COMP-2:指定内部浮点项目(单精度),4个字节长 COMP-3:压缩十进制(1个字节有两位) COMP-4(COMP):二进制存储 COMP-3是IBM Mainframe特有,特意将一下: COMP-3 数据类型同样以二进制的形式保存在文件中,其占位数计算方法如下:占位数 =[ 定义长度 /2+1] [] 表示整 COMP-3 数据在文件中存储形式如下例: 例如:定义形式 -- 9(4) COMP-3, 占位数 =[ 定义长度 /2+1]=3 赋值: 1521 存储结果: 01 52 1F(F表示正数) 赋值: 0 存储结果: 00 00 0F COMP-3 带有符号位时,赋值为正时,最后半个字节为 16 进制 C ;赋值为负时,最后半个字节为 16 进制D 例如:定义形式 -- S9(4) COMP-3, 占位数 =[ 定义长度 /2+1]=3 赋值: -1521 存储结果: 01 52 1D (D 表示负数 ) 赋值: 1521 存储结果: 01 52 1C 注意:当 COMP-3 的数据定义无 S ,赋予负值时,最后半个字节仍为 F ,即无法显示负数 5.COBOL中常量 ZERO(ZEROS,ZEROES):数字令或者字符“0” SPACE(SPACES):空格 HIG-VALUE(HIGH-VALUES):将对应的二进制码全部置为1

相关文档