03 do something ] 04 WHEN condition 05 do something.
说明:02行表示读入到TABLE结束时将进行的操作。 04行表示搜索条件。
九.使用ALTERNATE KEY 操作数据文件
1.ALTERNATE KEY的说明:
拥有primary key的indexed文件还可以拥有多个ALTERNATE KEY,这个KEY不具有唯一性,但程序可以根据它进行相应的数据操作。包括排序,分类,搜索等。 2.建立带有ALTERNATE KEY的索引文件。
例如: 000400 SELECT VENDOR-FILE
000500 ASSIGN TO \
000600 ORGANIZATION IS INDEXED
000700 RECORD KEY IS VENDOR-NUMBER 000800 ALTERNATE KEY
000900 IS VENDOR-NAME WITH DUPLICATES 001000 ACCESS MODE IS DYNAMIC.
说明:000700行定义了记录文件的主健为VENDOR-NUMBER,它具有唯一性,不可重复。 000800—000900行定义了记录文件的ALTERNATE KEY,他不具有唯一性。 注意:带有ALTERNATE KEY的索引文件必须以OUTPUT方式打开建立。 例如:OPEN OUTPUT VENDOR-FILE. 3.设置索引文件的记录排列顺序:
例如: 020000 MOVE SPACE TO KEY-NAME.
020100 START FILE-NAME
020200 KEY NOT < KEY-NAME 020300 INVALID KEY
020400 MOVE \
说明:020000行设置主键值为空,即设置KEY值的参照量为0。
020100—020200行对文件中相应KEY值不小于空的记录按照由小到大的顺序排列。 注意: 1。被设置为KEY的域必须为PRIMARY-KEY或者是ALTERNATE-KEY,其他不可。 2.如果KEY的相应域设置为数值型,则排列顺序按照数值大小排列。
如果KEY的相应域设置为字符型,则排列顺序按照首字符的ASCII码排列。
3.该方法将会直接修改数据文件的存放格式。
16
4.有限改变文件结构:
语法:①START file name
KEY NOT < key name [ INVALID KEY do something ]
②START file name KEY > key name [ INVALID KEY do something ]
③START file name
KEY EQUALS key name [ INVALID KEY do something ]
④START file name
KEY GREATER THAN OR EQUAL TO key name [ INVALID KEY do something ]
说明:方法①-④只有在COBOL-85以上的环境中才可以使用,使用方法同3。 5.习题:
1 将第六章习题2中做成的文件读入,将读入的记录以产品编号为主键,销售总量和销售总额为副键建立新的INDEX文件,按照销售总量为新的INDEX文件排序。
十.使用CALL命令调用子程序
1.配置说明:
(1)在原有COBOL程序的"COBOL Source Files"目录下建立COBOL子程序的源程序文
件,不选择其MAIN属性。
(2)子程序的写法与主程序基本一致,唯一不同之处在于子程序结束时的退出语句为: 000010 PROGRAM-EXIT. 000020 EXIT PROGRAM.
说明:EXIT语句提供了一组过程的公共出口,即指出了被调用过程的逻辑终点。子程序被调
用结束后通过EXIT语句返回主程序。 2.调用带参数的子程序:
COBOL子程序可以拥有的多个参数供主程序调用时使用。 例如: 000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. hello.
17
000030
000040 ENVIRONMENT DIVISION. 000050
000060 DATA DIVISION
000070 LINKAGE SECTION. 000080 01 TEMP PIC 999. 000081 01 ACCP PIC XXX. 000090
000100 PROCEDURE DIVISION USING TEMP ACCP. 000110 PROGRAM-BEGIN. 000120 DISPLAY \ 000130 DISPLAY TEMP. 000140 DISPLAY ACCP. 000150 PROGRAM-EXIT. 000160 EXIT PROGRAM.
说明:1.000020行定义了子程序的PROGRAM-ID,这就是主程序调用他的唯一标识。 2.000070-000081行定义了子程序的参数类型和参数个数。
3.000100行表示参数传递的顺序,多个参数之间以空格或者逗号隔开。 3.子程序的返回值:
(1)在子程序结束时利用MOVE语句为“RETURN-CODE”变量赋值,该变量是一个系统认定的全局变量,默认为带符号的9位长的数值性变量,所以不用另外定义。 (2)在调用程序中可以直接得到“RETURN-CODE”变量的值。 4.习题:
1.将第九章习题中关于运算处理的部分抽出为子程序,在主程序中使用call命令调用其完成运算处理. 注意:(1)需要作运算的变量以参数的方式传入子程序,计算完成的值使用RETURN-CODE
返回。 (2).可以建立多个子程序以满足需要。
十一.COBOL到 .NET的移植:
1. 环境的配置:
(1)首先需要安装“Visual Studio .NET 2003”,然后安装“NetCOBOL for .NET V2.1”。
(2)运行Visual Studio .NET 2003,新建project时选择COBOL Projects,再选择需要使用的
COBOL Projects类型,就可以建立新的cobol程序了。
18