Cobol语言基础(3)

2020-05-05 15:57

4.对INDEX文件的操作:

(1)定义:

SELECT CUSTOMER-FILE

ASSIGN TO \ ORGANIZATION IS INDEXED

RECORD KEY IS CUSTOMER-NUMBER56 ACCESS MODE IS DYNAMIC. INDEX文件中会有一个主KEY,

RECORD KEY IS CUSTOMER-NUMBER: 记录中的CUSTOMER-NUMBER就是每条记录的主KEY

(2)根据KEY得到相应记录:

例如:01 MOVE XX TO PRIMARY-KEY 02 READ FILE RECORD 03 INVALID KEY 04 DO SOMETHING.

说明:01行表示设置按照何值查找数据 02—04行表示读入一条数据。

(3)得到多条记录:

语法:01 READ file name NEXT RECORD 02 AT END do something.

说明:01行表示按照数据存储的顺序遍历数据记录 02行表示数据读完后进行的处理。

(4)使用COPY命令简化文件操作定义:

A.环境配置说明:在源程序文件下建立“Copy Library Files”目录,在该目录下建立后缀为“CBL”的

B.可以将文件属性和结构的定义配置在外部文件中,通过COPY命令将其包含到主程序里,以此简化对文件操作的定义。 例如:

A.将读入文件的属性定义在文件“SLVND01.CBL”中: 000100*-------------------------------- 000200* SLVND01.CBL

000300*-------------------------------- 000400 SELECT VENDOR-FILE 000500 ASSIGN TO \

000600 ORGANIZATION IS INDEXED

000700 RECORD KEY IS VENDOR-NUMBER 000800 ACCESS MODE IS DYNAMIC. B.将文件结构定义在文件“FDVND01.CBL”中: 000100*--------------------------------

11

000200* FDVND01.CBL

000300*-------------------------------- 000400 FD VENDOR-FILE

000500 LABEL RECORDS ARE STANDARD. 000600 01 VENDOR-RECORD.

000700 05 VENDOR-NUMBER PIC 9(5). 000800 05 VENDOR-NAME PIC X(30).

C.通过COPY命令将文件定义包含到主程序中: 000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. VNDBLD02. 000600 ENVIRONMENT DIVISION. 000700 INPUT-OUTPUT SECTION. 000800 FILE-CONTROL. 000900

001000 COPY \001100

001200 DATA DIVISION. 001300 FILE SECTION. 001400

001500 COPY \001600

001700 WORKING-STORAGE SECTION. 001800

001900 PROCEDURE DIVISION. 002000 PROGRAM-BEGIN.

002100 OPEN OUTPUT VENDOR-FILE. 002200 CLOSE VENDOR-FILE. 002300

002400 PROGRAM-DONE. 002500 STOP RUN.

(5)增加文件记录: 01 WRITE file-record 02 INVALID KEY 03 do something

说明: 01行表示将一条记录写入文件。 02 行表示捕捉文件操作错误。

03 行表示文件操作失败将进行的处理。

(6)更新文件记录:

01 READ VENDOR-FILE RECORD 02 INVALID KEY

03 MOVE \

12

04 REWRITE VENDOR-RECORD 05 INVALID KEY

06 do something 说明: 01行表示读入一条记录

04行表示更新读入的文件记录。 05 行表示捕捉文件操作错误。

06 行表示文件操作失败将进行的处理。

(6)删除文件记录:

01 DELETE file-name RECORD 02 INVALID KEY

03 do something

说明: 01行表示删除一条文件记录。 02 行表示捕捉文件操作错误。

03 行表示文件操作失败将进行的处理。

(7) Indexed文件的打开和关闭: 01 PROGRAM-BEGIN.

02 OPEN OUTPUT/INPUT/I-O VENDOR-FILE. 03 CLOSE VENDOR-FILE

说明: 02 行表示以何种方式打开文件。

03行表示关闭已打开文件。

注意:不可使用EXTEND 方式打开Indexed文件。 5.习题:

1从文件中读入一组产品销售记录,每读入一个记录,计算出销售总额(数量X单价),循

环读入记录直到文件结束,.然后将全部产品的统计数据输出到新的文件中,数据结构同上一章的习题1。

2将上一题中的统计数据输出到IINDEX文件中,要求按照销售总额由大到小排序。

七.数据验证相关

1.利用程序实现数据验证:

使用条件判断语句:

例如: 001100 IF VENDOR-NUMBER < 10000

001200 DISPLAY

\

13

2使用UNTIL语句控制输入输出:

例如: 023700 ENTER-STATE-CODE.

023800 PERFORM ACCEPT-STATE-CODE. 023900 PERFORM RE-ACCEPT-STATE-CODE 024000 UNTIL STATE-CODE NOT = SPACE. 024100

024200 ACCEPT-STATE-CODE. 024300 DISPLAY \

024400 DISPLAY \024500 DISPLAY \

024600 \024700 DISPLAY \024800 ACCEPT STATE-CODE. 024900

025400 RE-ACCEPT-STATE-CODE.

025500 DISPLAY \025600 PERFORM ACCEPT-STATE-CODE.

说明:023900—024000行使用UNTIL语句控制用户的输入不为空格,避免了GOTO语句的使用。

3.修正被验证数据的格式:

例如:

000900 77 UPPER-ALPHA PIC X(26) VALUE 001000 \001100 77 LOWER-ALPHA PIC X(26) VALUE 001200 \

说明:定义“UPPER-ALPHA”和“LOWER-ALPHA”分别表示大写字符串和小写字符串。 032000 INSPECT INPUT-STRING

032100 CONVERTING LOWER-ALPHA 032200 TO UPPER-ALPHA.

说明:03200—03220行将一个小写字符串变为大写。

八.批量数据处理

1.TABLE的定义:

为了避免频繁进行I/O操作,引入了TABLE的定义,可以批量读入数据记录。 例如: 007000 01 TABLE-STATE-RECORD OCCURS 50 TIMES. 007100 05 TABLE-STATE-CODE PIC XX.

007200 05 TABLE-STATE-NAME PIC X(20).

14

说明:定义了“TABLE-STATE-RECORD”可以一次读入50条记录进行处理。 记录按序存储在TABLE-STATE-RECORD中,相当于数组。 2.调用TABLE中的记录:

例如: 018000 MOVE SPACE TO TABLE-STATE-RECORD(5).

018100 MOVE STATE-CODE TO TABLE-STATE-CODE(1). 018200 MOVE STATE-NAME TO TABLE-STATE-NAME(15). 018300 DISPLAY TABLE-STATE-NAME(23).

018400 MOVE TABLE-STATE-CODE(43) TO PRINT-CODE. 说明:018000—018400行实现了对TABLE中记录的操作。 3.按序排列TABLE记录。

例如:007000 01 TABLE-STATE-RECORD OCCURS 50 TIMES

007100 INDEXED BY STATE-INDEX.

007200 05 TABLE-STATE-CODE PIC XX. 007300 05 TABLE-STATE-NAME PIC X(20).

说明:007100行表示设定TABLE中默认的数据记录从STATE-INDEX开始。

注意:不可以对STATE-INDEX进行算术操作。例如:ADD, SUBTRACT, MULTIPLY, 和 DIVIDE

4.操作STATE-INDEX:

SET STATE-INDEX TO 1

说明:设置STATE-INDEX为1 SET STATE-INDEX TO A-VALUE

说明:设置STATE-INDEX为A-VALUE SET STATE-INDEX UP BY 1

说明:设置STATE-INDEX在原基础上加1。 SET STATE-INDEX UP BY NEXT-AMOUNT

说明:设置STATE-INDEX指向下一条记录 SET STATE-INDEX DOWN BY 1

说明:设置STATE-INDEX在原基础上减1 SET STATE-INDEX DOWN BY LAST-AMOUNT

说明:设置STATE-INDEX指向上一条记录 5.在TABLE中查找数据记录: 语法: 01 SEARCH table name 02 [AT END

15


Cobol语言基础(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018-2024年中国马饲养行业市场运营态势研究报告(目录) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: