当前位置:文档之家› COBOL培训教程

COBOL培训教程

COBOL培训教程
COBOL培训教程

這是公司的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 语言也被称为“用于管理的语言”。

一.C OBOL 语言的特点

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

二。COBOL的组成部分:

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

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

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

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

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

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

IDENTIFICATION DIVISION。

PROGRAM-ID。PSAMPLE1。

ENVIRONMENT DIVISION。

DATA DIVISION。

PROCEURE 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-V ALUE,LOW-VALUE ,QUOTE ,ALL 常量)。

七。COBOL 所处理的数据的特点

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

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

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

CHAPTER 2 过程部初步-----最基本的过程部语句

CHAPTER 2 过程部初步-----最基本的过程部语句

一。输入输出语句。

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 外部文件名。

为了存储读入的记录,必须在内存开辟一个与文件记录长度相等的存储区,即…输入文件纪录区?。每一个输入文件都有相应的…输入文件纪录区?,与之一一对应。亦即在数据部中描述文件的数据结构。

假设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

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

DA TA 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-DA TE。(生产日期为一组合项)

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 打印机名。

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

DA TA 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-DA TE

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

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

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

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

BEFORE 整数 LINES

WRITE 记录名[FROM 标识符1 ] AFTER ADV ANCING 助忆名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:SUBTRACT 标识符1 ,标识符2 。。。FROM 标识符m [,标识符n]。。。

常量1 ,常量2

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

常量1 ,常量2 常量

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

3。MULTIPLY语句:

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

常量1,

格式2:MULTIPL Y 标识符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(运行单元)。

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。

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

CHAPTER 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-DA TE。

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层号开始,后跟记录名。如果记录本身就是一个初等项,则在记录名后描述记录长度;否则,数据名后跟句点,下面定义记录的数据结构。如:

DA TA DIVISION。

FILE SECTION。

FD IN-FILE

LABLE RECORD IS STANDARD。

DATA RECORD IS IN-FILE-RECORD。

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

DATA DIVISION。

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.常用数值型数据

四。工作单元节(WORKING-STORAGE SECTION)

1。工作单元节的作用:程序中用的数据项分为两部分,一部分是属于输入或输出文件的,另一部分是非输入或输出的数据。如一些中间变量或用作累计的数据项等。非输入输出的数据就应在工作单元节中描述,还可以用工作单元节来赋初值。

2。V ALUE子句:用于给变量赋初值。如:

02 A PIC 9(3)V ALUE 123。

注意:(1)只有对工作单元节中的数据项才能赋初值,不能对文件节中输入输出文件中的数据项赋初值。

(2)如果在组合项的描述体中使用V ALUE,初值只能是表意常量或非数值型常量。对组合项整体而言,一律按字符型数据项处理。

(3)当用一个带符号的数值作初值时,相应的PIC子句中应有…S?描述符。

(4)赋初值时应该注意类型的一致性。

(5)V ALUE子句给出的值应适合PIC子句的描述范围,否则会出现截断或产生错误。CHAPTER 5 过程部之二

一。MOVE 语句的较高技巧

1。各种类型数据之间的传送规则见下表:(Y:表示合法传送。N:表示非法传送。空白:

表示某些时候是合法的。)

2。用CORRESPONDING子句的传送——对应传送(同名传送)

对应传送的一般格式:

MOVE CORRESPONDING 标识符1 TO 标识符2

CORR

说明:

(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

算术表达式NEGATIVE

ZERO

2。类型条件:

标识符 IS [NOT] NUMERIC

ALPHABETIC

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

88 条件名{ V ALUE IS} 常量1 [{THRU} 常量2]

[常量3 [ [{THRU} 常量4]] 。。。]

如: 02 WS-FILE-STATUS PIC 9(2)。

88 WS-FILE-NORMAL V ALUE 0,93。

88 WS-FILE-EOF V ALUE 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 ]

V ARYING 标识符1 FROM 常数1 BY 常数2 UNTIL 条件

标识符2 标识符3

四。执行语句的多重循环形式:COBOL 允许三重循环,其一般格式可写为:

PERFORM 过程名1 [{THRU} 过程名2 ]

[V ARYING 参数1 FROM 初值1 BY 步长1 UNTIL 条件1 ]

[AFTER 参数2 FROM 初值2 BY 步长2 UNTIL 条件2 ]

[AFTER 参数3 FROM 初值3 BY 步长3 UNTIL 条件3 ]

五。出口语句(EXIT):EXIT语句提供了一组过程的公共出口,即指出了被调用过程的逻辑终点。

CHAPTER 7 各部之间的关系及程序举例

二.程序举例:

例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. DA TA 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-V ARIBLES.

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

88 WS-INPUT-FILE-SUCCESSFUL V ALUE 0.

88 WS-INPUT-FILE-EOF V ALUE 23.

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

88 WS-OUTPUT-FILE-SUCCESSFUL V ALUE 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-V ALUE = QUANTITY OF IN-REC * UNIT-PRICE OF OUT-REC

PERFORM W000-WRITE-FILE

PERFORM R000-READ-FILE

.

A300-CLOSE-FILE.

CLOSE INPUT-FILE

OUTPUT-FILE

.

R000-READ-FILE.

READ INPUT-FILE

IF NOT WS-INPUT-FILE-SUCCESSFUL AND NOT WS-INPUT-FILE-EOF DISPLAY …INPUT-FILE READ NOT SUCCESSFUL?UPON CONSOLE

PERFORM Z000-ABEND THRU Z000-EXIT

END-IF

.

W000-WRITE-FILE.

WRITE OUT-REC AFTER 1

IF NOT WS-OUTPUT-FILE-SUCCESSFUL

DISPLAY …OUTPUT-FILE WRITE NOT SUCCESSFUL?UPON CONSOLE

PERFORM Z000-ABEND

END-IF

.

Z000-ABEND.

DISPLAY …PROGRAM ABEND !?UPON CONSOLE

PERFORM A300-CLOSE-FILES THRU A300-EXIT

MOVE 16 TO RETURN-CODE GOBACK

.

输出的数据形式如下:

1992 12 31 000001 AAAA 100 $5000 $500000

1993 12 31 100001 BBBB 200 $6000 $1200000

COBOL+CICS文件操作

COBOL+CICS文件操作 1.输入输出数据 非CICS: ACCEPT数据来源:终端输入和系统接收。 一般系统接收数据为日期或者时间。 DA TE--YYMMDD. DAY---YYDDD. DAY-OF-WEEK--- PIC 9. 范围1-7. TIME---HHMMSSHH,最后HH表示hundredths from midnigth. 如:DA TA DIVISION. WORKING-STORAGE SECTION. 01 INPUT-DATE. 05 INPUT-YEAR PIC 99. 05 INPUT-MONTH PIC 99. 05 INPUT-DAY PIC 99. * PROCEDURE DIVISION. ... ACCEPT TEST-DA TE. DISPLAY TEST-DATE. ---终端输入的数据 ACCEPT TEST-DA TE FROM DA TE. --系统产生的数据 DISPLAY TEST-DATE. --输出 CICS下: 如:DA TA DIVISION. WORKING-STORAGE SECTION. 01 INFLDS. 05 INLEN PIC 9(4) COMP. 01 INPUT-NAME. 05 INPUT-FIRST PIC X(10). 05 INPUT-MIDDLE PIC X(10). 05 INPUT-LAST PIC X(10). *PROCEDURE DIVISION. ... MOVE 15 TO INLEN. EXEC CICS RECEIVE INTO(INPUT-NAME) LENGTH(INLEN) --所接收的最大长度,小于为实际,大于为异常END-EXEC. EXEC CICS SEND FROM(INPUT-NAME) LENGTH(20) --为实际长度,并非变量。输出位置为当前光标位置END-EXEC. ... GOBACK.

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

宏病毒文档修复前备份

2、数据库的特点是( ) A、与其他软件连接 B、描述数据性质 C、数据库的用户 D、用数据字段表示实体的属性 2 、 SQL 是 A 、结构化查询语言 B 、结构化疑问语言 C 、法定查询语言 D 、法定疑问语言 3 、操作系统的作用是 A 、一种程序语言 B 、使用户能与计算机交互的界面 C 、给用户提供一个应用平台 D 、是一个应用软件的例子 4 、下列哪一种是应用软件 A 、 Fortran B、PASCAL C、Word for Windows D、Windows XP 5 、用户接口软件是为了 A 、使得用户和系统交互更方便 B、替换DOS C 、使得编程工作更加容易 D、替换应用软件 6 、 DBMS 是用来 A 、开发电子数据表 B、管理数据库中的大量数据 C 、在数据库和电子数据表之间处理大量数据 D、使一个文字处理器连接到一个电子数据表 7 、下列哪一个不是数据的类型 A 、常量 B 、变量 C、字符 D、表格 8 、下列哪一个是计算机处理方法 A 、解释 B 、编译 C、汇编 D、批处理 9 、下列哪一个不是一种数据类型 A 、字符型 B 、数值型 C、实数型 D、列表 19 、程序设计语言是用于 A 、运行计算机 B 、运行计算机而不是DOS C 、编写应用软件 D 、控制硬件和软件 20 、下列哪一个是图像文件格式 A 、 JPEG B 、 MP3 C 、 ASII D 、二进制

1.最适合于建立通讯地址簿并具有查询功能的软件是:() A.CAD应用 B.数据库软件 C.文字处理软件 D.电子表格软件 3.UNIX是一种 A.第四代程序设计语言 B.编译程序 C.个人电脑 D.多用户操作系统 5.在数学计算和科学研究中常用的程序设计语言是 A.C++ B.COBOL C.FORTRAN D.PROLOG 11.第一代程序设计语言是 A.C语言 B.机器语言 C.javascript D.脚本语言 12.数据库管理员的主要职责是 A 管理数据库和设定用户访问权限 B负责每天更新数据库中在数据 C 维护数据库运行所需的硬件设备 D 为有权访问数据库的用户提供详细的查询 13.关系数据库是 A 一系列相关在二维表 B 一系列记录 C 一系列相关文档 D 基于大型机的大型数据库 19.信息的定义是 A 存储在计算机中的数据 B 存储在数据库中的数据 C 显示在计算机屏幕上或打印出来能看到的数据 D 经过处理后得到的有用数据 10、计算机的机器语言是( ) A、第五代计算机语言 B、第一代计算机语言 C、标记性语言 D、计算机高级程序语言 17、用于数值计算和科学研究的计算机语言是( ) A、C语言 B、COBOL语言 C、FORTRAN语言 D、PROLOG语言 4、通常将有用的数据称为( ) A、数据变换 B、高级编程 C、伪代码 D、信息 7、如果你想建立一个可查询的地址簿,选择的应用软件是( ) A、分页软件 B、数据库软件 C、字处理软件 D、多媒体编辑软件 8、宏是( ) A、一种报告错误的程序 B、一种软件报告 C、一种自动触发文件的方法 D、一种高级语言编写的程序 计算机中宏又称为宏命令,即通过特殊的控制语,将一系列动作简便化;即:一种批处理的程序 10、用于进行数学计算和计算机语言是( ) A、C语言 B、COBLL C、FORTRAN D、PROLOG A、C语言 B、机器语言 C、PROLOG D、汇编语言 12、第一代计算机语言是指( ) 15、UNIX是( ) A、第四代程序语言 B、解释程序 C、应用软件 D、多用户操作系统

浅谈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

AS400 基本命令和操作

数据描述规范DDS通过文件的记录字段仅一次的说明,可定义多种访问路径,多个程序使用。 结构化查询语言SQL/400组成:(1)SQL运行支持程序(2)SQL预编译程序(3)SQL交互式接口(4)DB2 QUERY MANAGER FOR AS/400,提供菜单、填空式提示的交互式接口,允许建立、增加、维护数据,和运行报表 PDM(PROGRAMMING DEVELOPMENT MANAGER)处理源代码、对象和库 SEU(SOURCE ENTRY UTILITY)建立和编辑源文件成员STRSEU SDA(SCREEN DESIGN AID)交互式设计、创建和维护应用屏幕 RLU(REPORT LAYOUT UTILITY)交互式定义打印报表的格式分布 DFU(DA TA FILE UTILITY)快速定义、创建面向数据录入、查询或文件维护STRDFU QUERY/400获取外部描述数据库文件信息STRQRY CL(CONTROL LANGUAGE)调用AS/400的所有系统功能。简化操作,控制工作流程,设置作业运行环境等 AS/400三级存储结构 库(LIBRARY)——数据库文件(FILE)——成员(MEMBER) 一级目录——二级目录——三级目录 字段是用来描述某一属性的一组值;字段定义是对字段属性的说明 记录是把一组字段放在一起命名,用来说明某一事物;记录格式是对记录中所有字段的简单说明以及对各字段排序的说明 文件是已命名的一组记录,文件说明是对文件所有的记录格式和存取路径的说明,数据库文件分为数据文件和源文件,数据文件就是程序中使用的物理文件和逻辑文件。 物理文件(*FILE,PF-DTA):在SQL中称做表(TABLE),含有系统实际存储的数据,每个物理文件只有一个固定长度的记录格式。CRTPF 逻辑文件(*FILE,LF):在SQL中称做表(VIEW),它不含有实际数据,依附于物理文件,可以描述一个或多个物理文件的记录(JOIN逻辑文件)。CRTLF 源文件(*FILE,PF-SRC):是系统用来建立源程序(RPGLE、CLLE、C)或源物理文件(PF)等目标的源说明CRTSRCPF 库名:存放该应用系统的源程序库就命名为SGM SRC,存放该应用系统目标的库可命名为SGM OBJ CRTLIB 源文件名:存放程序的源文件叫R+PGM+SCF,存放物理文件和逻辑文件定义的源文件叫R+DTA+SCF 物理文件/逻辑文件名:学生成绩表命名为STGD+A其中一个逻辑名为STGD L1 程序名:SGM+0400+R‘R’:RPGLE,‘C’:C,C或CL,‘R’:报表等 DDS行中对物理文件有效的位置是: 6:A=DDS 17:R=RECORD NAME ,K=KEY FIELD NAME,BLANK=FIELD NAME)

COBOL语言基础教程

cobol语言基础培训教程 2009年04月23日 | 5:23 下午分类:大型机|Mainframe | 标签:cobol 数据类型、COBOL 程序举例、cobol入门、cobol教程、cobol语言、大型机培训 | CHAPTER 1 COBOL 概述 COBOL 是Common Business Oriented Language 的缩写。它不仅是商业数据处理的理想语言, 而且广泛用于数据管理领域,因此COBOL 语言也被称为”用于管理的语言”。 一。COBOL 语言的特点 最适于数据处理领域:算数计算量少而逻辑处理量多,输入输出量大,数据间存在着一定的逻辑关系,大量的分类排序;COBOL比较接近英语,容易懂;通用性强,易移植,COBOL结构严谨,层次分明。 二。COBOL的组成部分: 1。标识部(IDENTIFICATION DIVISION):用于标识程序名。 2。环境部(ENVIRONMENT DIVISION):用于说明程序运行的环境。 3。数据部(DATA DIVISION):用于说明程序中涉及的所有数据。 4。过程部(PROCEDURE DIVISION):是程序的核心部分,它决定计算机应进行什么操作。 三。最简单的COBOL 程序举例: COL 1 —6 7 8 12—72 73—80 IDENTIFICATION DIVISION。 PROGRAM-ID。 PSAMPLE1。 ENVIRONMENT DIVISION。 DATA DIVISION。 PROCEURE 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字符集包括:

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实验报告2 一,实验目的 1,能够利用cobol程序实现一个报表的编辑和制作。 2,能够对文件进行操作,比如说:打开,关闭,读和写3,了解COBOL的常用语句和一些常用的数据类型, 能够利用编辑型数据实现数据的友好输出。 4,能够运用sdsf修改程序中的错误 5,学会编写稍微复杂的COBOL程序。 二,实验原理和内容 1,修改UTE20.COBOL.MURACH.EXERCISE(RPT1000X) 使之正常运行。 2,在RPT1000原有基础上改进成增强的报表打印程序。 3,利用给定的数据和格式独立的制作一个报表 三,实验环境 PC机和TSO下的ISPF环境 四,实验步骤

1,步骤1和步骤2:修改 UTE20.COBOL.MURACH.EXERCISE(RPT1000X) 使之正常运行,并在此基础上改进成增强型的报表打印程序。 1.1 代码: 000100 IDENTIFICATION DIVISION. 000200 000300 PROGRAM-ID. RPT1000. 000400 000500 ENVIRONMENT DIVISION. 000600 000700 INPUT-OUTPUT SECTION. 000800 000900 FILE-CONTROL. 001000 001100 SELECT CUSTMAST ASSIGN TO CUSTMAST. 001200 SELECT SALESRPT ASSIGN TO SALESRPT. 001300 001400 DATA DIVISION. 001500 001600 FILE SECTION. 001700

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程序的编译与运行 实验所属系列:操作系统高级试验 实验对象:本科 相关课程及专业:大型机系统管理,计算机专业 实验类型:课程设计 实验时数: 2 ●实验目的 熟悉PCOM及ISPF环境;熟悉在大机系统编译连接与运行基本COBOL 程序的方法。 ●实验内容与要求 1.首先使用由老师分配的IBM的主机用户名和密码登陆大型机 2.建立相应数据集: 1)建立分区数据集<用户名>.E,根据下图初始化数据集的参数,该参 数只是参考,需要根据系统实际或者指导老师要求进行调整。 2)用同样方法建立分区数据集<用户名>.

3)建立名为<用户名>.的数据集,参数Record format改为U。 3.在数据集<用户名>.E中建立一个member,并输入一下COBOL程序: 4.输入编译JCL程序,并编译源程序为目标文件 1)在<用户名>.中建立名为CTEST1的MEMBER,然后在其中输入如 下JCL程序: 注意,程序中的斜体部分应该换成实验者的用户名。 2)然后输入SUB提交该JCL程序,返回值如果不是0,请检查JCL程 序是否有错。若有错,修改后重新提交。输出结果可以在SDSF的H 里面看见。 5.输入运行的JCL程序,并运行编译结果 1)在<用户名>.中建立名为CTEST1的MEMBER,然后在其中输入如 下JCL程序:

注意,程序中的斜体部分应该换成实验者的用户名。 2)然后输入SUB提交该JCL程序,返回值如果不是0,请检查JCL程 序是否有错。若有错,修改后重新提交。输出结果可以在SDSF的H 里面看见。如果输出不是想要的结果,请检查COBOL源程序。 6.控制台方式运行编译程序 1)在ISPF首页选6,输入如下命令: allocate fi(sysout) fi(sysin) da('*') 并运行。该命令的目的是定义标准输出和输入。 2)进入<用户名>.数据集,在名为TEST1的MEMBER前输入CALL后 回车。即可以在屏幕上看见运行结果。 实验思考 1.为什么数据集<用户名>.的参数Record format要设为U?

VSAM文件笔记

要在COBOL中使用文件,要在3个不同的部中放上信息。 环境部,要有程序使用的每个文件的文件控制项目(FILE-CONTROL)。这个项目将程序中使用的文件名与程序外的实际文件联系起来。这些项目还定义文件的组织和访问方式。 数据部,要有每个文件的文件描述符(FD)项目,就是数据定义。 过程部,放上处理语句,OPEN,READ,WRITE,DELETE等。 环境部中主要是FILE-CONTROL和I-O-CONTROL.I-O-CONTROL很少使用。 SELECT[OPTIONAL]file-name ASSIGN TO DEV/FILE [RESERVE N[AREA/AREAS]] [FILE STATUS IS VAR] SELECT必须是第一句,其他顺序无关。file-name是程序中传递使用的文件名,相当于实际文件的一个别名。OPTIONAL用于执行可能不存在的文件。 ASSIGN将file-name连接到实际的外部设备或文件。(TO好像可以省略。)RESERVE指定文件缓冲区。 FILE STATUS指定一个变量存放文件状态,这个变量应该已在WORKING-STORAGE SECTION中定义。 对于顺序文件,还有声明如下: [ORGANIZATION IS SEQUENTIAL]可选,缺省为顺序组织文件 [ACCESS MODE IS SEQUENTIAL]可选。顺序文件只允许顺序访问[PADDING CHARACTER IS char]指定文件在固定块长设备上时键块所用的字符,char为一个字符的数据项。 [RECORD DELIMITER IS STANDARD/usr-define]指定如何确定变长纪录的长度。 顺序文件例子: SELECT file-name ASSIGN TO"/usr/file1" FILE STATUS IS file-status 对于相对文件,还有声明如下: [ORGANIZATION IS RELATIVE]是相对文件必须的 [ACCESS MODE IS SEQUENTIAL[RELATIVE KEY IS data]]或者 [ACCESS MODE IS RANDOM/DYNAMIC RELATIVE KEY IS data] 访问方式有3种,缺省是SEQUENTIAL。 RELATIVE KEY可选。如果存在,则文件读取操作顺利完成后,data用所读取纪录的关键字更新。data应为文件的纪录区中没有的整数数据项。 相对文件的例子: SELECT file-name ASSIGN TO"/usr/file2" ORGANIZATION IS RELATIVE ACCESS MODE IS DYNAMIC RELATIVE KEY IS DAY-NUMBER FILE STATUS IS file-status 对于索引文件,还有声明如下: [ORGANIZATION IS INDEXED]是索引文件必须的 [ACCESS MODE IS SEQUENTIAL/RANDOM/DYNAMIC]RECORD KEY IS data1

CL基本命令系统操作

400操作入门 CL基本命令系统操作 常使用的指令(AS/400 指令均是从英文单字取 3 个字, 如 Work with Active Job ==> WRKACTJOB) 1. WRKACTJOB(整个系统) WRKJOB(单一工作) 检示系统目前的使用状态有那些 Jobs 正在运行 , CPU 使用情形及更改 Jobs 属性(运行等级先后次序), 回操作或程序错误讯息, 检示单一Job 的运行状态,亦可终止 JOB运行(End Job). 2. WRKWTR STRPRTWTR ENDWTR 打印机管理 (Wrok with Writer) 打印机激活 (Start Printer Writer) 打印机终止 (End Writer) 3. WRKSYSSTS (Work with System Status) 检示系统资源 RAM 目前的使用状态.可动态调整资源的分配以取得系统运行最佳化. 4. WRKSPLF (Work with Spooled File) 报表指定打印印表机, ⒋? 删除. 5. WRKJOBSCDE (Work with Job Schedule Entery) 设定工作排程时间 6. Go Power 设定开关机时间 7. SAVLIB (Save Library) SAVOBJ(Save Object) 储存程序馆 --> RSTLIB : 回复程序馆 储存对象 --> RSTOBJ : 回复对象 8. WRKCFGSTS *LIN (线路) (Work with Configuration Status)

WRKCFGSTS *CTL (控制器) WRKCFGSTS *DEV (工作站) 检示及管理激活或终止通信线路使用情形 , 且会自动带出远程控制器及工作站使用情形. Status 状态 Vary on pending 等待联机 Varied On 已联机系统处理中 Active 正常作业中 Varied Off 切断联机 , 此时无法联机 , 需要将线路(Line),控制器(Controller),工作站(Device)设定至 Vary on pending 才可以联机. 在将显示(Display)工作站 Varied Off 前 , 先从画面检视该工作站是否仍有 残存 Job 挂在该工作站 , 若有则需将 Job 强迫结束 (ENDJOB) ,否则无法将 工作站 (Device) 及及控制器 (Controller) Varied Off. 显示(Display)工作站在被 Varied on 后 , 状态会由 Varied off --> Vary on pending , 此时若该显示(Display)工作站有开机, 状态会由 Vary on pending --> Signondisplay, 若 User 输入 ID 及 Password , 系统会以该显示(Display)工作站名称产生Job, 状态会由 Signondisplay--> Active. 在将印表机(Printer)工作站 Varied Off 前 , 先从画面检视该工作站是否仍 有 Writer 挂在该工作站 , 若有则需将 Writer 强迫结束(ENDWTR) ,否则无法将工作站 (Device) 及控制器 (Controller) Varied Off.印表机(Printer)工作站被 Varied on 后 , 状态会由 Varied off --> Vary on pending ,此时若该印表机(Printer)工作站有开机, 状态会由 Vary on pending --> Varied On , 待激活印表机(STRPRTWTR)后 ,系统会以该印表机(Printer)工作站名称于 QSPL 子系统下产生印表机(Printer)工作站 Job , 状态会由 Varied on --> Active. 9. STRPDM 激活 AS/400 程序开发工具 WRKLIBPDM 针对整个链接库所有对象 WRKOBJPDM 针对链接库之单一对象 WRKMBRPDM 针对档案数据成员 以上功能均可对对象(档案)作建立, 复制, 搬移, 删除 10. CPYF(Copy File) 拷贝档案数据成员, 可新增或取代记录 11. WRKMSGQ (*QSYSOPR) (Work with Message Queue)

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

8.2.7 包含有输入输出处理过程的SORT语句排序[共3页]

142 第8章 数据的排序与合并COBOL * PROCEDURE DIVISION. SORT SORT-PROC-FILE ON ASCENDING KEY S-KEY USING IN-FILE OUTPUT PROCEDURE IS SORT-OUTPUT-PROC. /*此处指明输出处理过程*/ STOP RUN. * SORT-OUTPUT-PROC. RETURN SORT-PROC-FILE AT END SET END-OF-RECORDS TO TRUE. PERFORM UNTIL END-OF-RECORDS DISPLAY 'SORTED-REC :' SORT-PROC-REC RETURN SORT-PROC-FILE AT END SET END-OF-RECORDS TO TRUE END-PERFORM. 关于排序中的输出处理过程,还有以下几点需要注意。 在排序输出处理过程中,至少需要包含一条RETURN 语句。RETURN 语句使每一条排序后的记录能够被输出处理过程所使用。RETURN 语句作用于排序中间文件,就好比READ 语句作用于输入文件。 可以使用RETURN INTO 语句替代RETURN 语句。当使用RETURN INTO 语句时,记录将返回到工作存储节或一块用于输出的区域。 在RETURN 语句中,可以使用A T END 或者END-RETURN 短语指明返回结束后的操作。其中A T END 短语表示在所有记录RETURN 完毕后执行其后的操作。END-RETURN 短语则相当于一个强制终止符,此处直接结束RETURN ,并执行其后的操作。 8.2.7 包含有输入输出处理过程的SORT 语句排序 前面分别介绍了排序中的输入输出处理是如何编写的。此处将把这两种处理过程综合应用到使用SORT 语句进行的排序之中。通过综合应用,加深对以上两种处理过程的掌握,同时巩固并扩充应用数据排序的能力。 下面结合一个具体实例进行讲解。仍然以此前的员工信息文件为例,此处在原由的基础上,新增一个员工状态的数据项。假设新的员工信息文件内容如下。 1235 ZHU BO WU HAN 430074 A 1024 WU GUO JUN BEI JING 100085 A 1346 ZHANG XIANG S HEN ZHEN 518057 N 1005 XIE FEI WU HAN 430023 A 1253 XIE FEI WU HAN 430022 A 1028 ZHENG GANG BEI JING 100085 N 1204 ZOU LI QIANG SHANG HAI 201620 A 1536 LING CHEN BEI JING 100080 N 1791 TIAN BO SHANG HAI 201821 N 本例要求仅对员工状态信息为“A ”的员工记录数据进行排序。同时,在排序完成后,要求将所有的员工姓名转换为用小写字母表示,最后再写入排序输出文件中。排序要求以员工姓名作为第一关键字,员工工号作为第二关键字,全部用升序排列。实现以上功能的完整

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.

相关主题
文本预览
相关文档 最新文档