精通COBOL--11.1.2 提高部分功能段执行效率

来源:互联网 发布:centos 双网卡驱动 编辑:程序博客网 时间:2024/05/22 03:08

  COBOL可调用的子程序并不一定要求由COBOL所编写。实际上,COBOL语言所调用的子程序是可以由其他语言编写的,如汇编语言、PL/1语言等等。

对于某些功能,使用其他语言编写往往执行效率会更高。例如,在大型机环境下使用S/390汇编语言编写的程序,通常运行效率就比使用COBOL编写的要高。但是,汇编语言编写起来是不如COBOL方便的。因此,通常可以以COBOL编写主程序,而将其中经常使用的部分功能段使用汇编语言编写。这样,既不会过于增大开发难度,也能从整体上提高程序的运行效率。

例如,下面这段COBOL程序便调用了汇编程序。其中所调用的程序名为ASMPGM,传递的参数依次为DATA1DATA2DATA3。该COBOL程序代码如下。

IDENTIFICATION   DIVISION.

PROGRAM-ID      CALL-ASM-PROG.

AUTHER           XXX.

*

ENVIRONMENT   DIVISION.

*

DATA  DIVISION.

WORKING STORAGE SECTION.

 77  DATA1          PIC  X.

 77  DATA2          PIC  X.

 77  DATA3          PIC  X.

……

*

PROCEDURE   DIVISION.

……

CALL  ‘ASMPGM’   USING  DATA1

DATA2

DATA3.

……

STOP RUN.

所调用的汇编程序通常可以如下。

ASMPGM  CSECT

STM  R14,R12,12(R13)

BALR  R12,R0

USING  *,R12

LM  R2,R4,0(R1)

……

BCR  B’1111’,14

DC  A(PARM1)

DC  A(PARM2)

DC  X’80’,AL3(LASTPARM)

END  ASMPGM

该汇编程序中,R2R3R43个寄存器将分别与COBOL中的3个参数相对应。其中R2DATA1相对应,R3DATA2相对应,R4DATA3相对应。

此处主要是为了说明通过COBOL可以调用其他语言编写的子程序,并以此提高程序整体执行效率。关于大型机上的汇编语言将在后面的章节中进行讲解,这里不必深究。