当前位置 : 主页 > 网络推广 > seo >

COBOL如何存储和检索数据?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我开始学习COBOL了.我有一些编写处理SQL数据库的程序的经验,我想我很困惑COBOL如何存储和检索存储在大型机中的数据.我知道它不像关系数据库,但我见过的每个示例程序都直接从命令行
我开始学习COBOL了.我有一些编写处理SQL数据库的程序的经验,我想我很困惑COBOL如何存储和检索存储在大型机中的数据.我知道它不像关系数据库,但我见过的每个示例程序都直接从命令行获取数据,我知道现实世界的COBOL程序不是如何处理数据的.有人可以解释或向我展示一个可以解释它的好资源吗? COBOL只是另一种第三代计算机语言.它只是比大多数人的年龄稍大,并不意味着它在某种程度上是不完整的(实际上它带来了相当多的包袱 – 但这是另一个故事).

与任何其他第三代语言一样,COBOL操作数据文件的方式与在C程序中的操作方式非常相似.没有什么奇怪的,神秘的或神奇的.使用该语言的文件I / O功能打开,读取,写入和关闭文件.

各种机制用于在实际文件和程序之间形成链接.此处的详细信息通常特定于您正在使用的操作系统.通常,COBOL实现尝试通过逻辑文件名与操作环境隔离,而不是实际名称.当您编写将移植到不同平台的程序时(例如,在Windows平台上的IDE中编写和测试,然后在大型机上运行),这种添加的间接性非常重要.

以下示例与IBM Mainframe环境有关.

在IBM大型机世界中,您会发现程序可以批量运行或联机运行(例如CICS).我不会描述如何在CICS下设置文件I / O(这是一个很长的故事).用于操作文件的程序通常是批处理的.以下是批处理程序如何工作的粗略说明:

>批处理程序通过JCL运行. JCL用于标识要运行的程序(‘EXEC’语句),并使用’DD’语句识别程序将引用哪些文件. DD语句的功能是在实际文件和COBOL程序在引用文件时引用的名称之间形成逻辑连接(这是前面提到的隔离机制).例如,

JCLDDNAM DD DSN='HLQ.MY.FILE'...

将’DD’名称’JCLDDNAM’与名为’HLQ.MY.FILE’的文件相关联.此部分取决于平台,因此详细信息特定于操作环境.
>在COBOL程序的“FILE-CONTROL”部分中,将JCL中定义的“DD NAME”与将在每个I / O语句上使用的名称连接以引用该文件.使用’SELECT’语句定义此连接.
例如,

SELECT MYFILE
ASSIGN JCLDDNAM
remainder of select

在“JCL”中与“JCLDDNAM”相关联的任何文件与之后在COBOL I / O语句中引用的“MYFILE”之间建立连接. SELECT语句本身是ISO COBOL标准的一部分.但是,许多COBOL实现定义了一些非标准扩展来促进其文件子系统的各种怪癖.
>使用名称“MYFILE”打开,读取,写入,关闭程序“PROCEDURE DIVISION”中的文件,如下所示:

OPEN MYFILE  
READ MYFILE  
CLOSE MYFILE

以上是高度简化的,在COBOL中有很多方法可以做到这一点.了解完整的图片需要一些真正的努力,时间和实践.上面说明的I / O语句是COBOL标准的一部分,但每个供应商都有自己的扩展.

IBM COBOL支持各种文件组织和访问方法.您可以查看IBM Enterprise COBOL语言参考手册here以获取文件操作的语法和规则.但是,User Guide提供了许多用于读/写文件的好例子(您将不得不挖掘一下 – 但它已经奠定了出你的).

通过COBOL程序引用SQL数据库的设置有些不同,但涉及在程序和数据库子系统之间建立连接.在IBM世界中,这是通过JCL完成的,其他环境将使用不同的机制.

IBM COBOL使用预处理器或协处理器来集成数据库访问和数据交换.例如,以下代码将从DB2数据库中检索一些数据:

MOVE 1234 TO PERSON-ID
EXEC SQL
  SELECT  FIRST_NAME,  LAST_NAME
  INTO   :FIRST-NAME, :LAST-NAME
  FROM PERSON
  WHERE PERSON_ID = :PERSON-ID
END-EXEC
DISPLAY PERSON-ID FIRST-NAME LAST-NAME

EXEC SQL和END-EXEC之间的东西是一个非常简单的SQL select语句.以冒号开头的名称是COBOL主机变量,用于将数据传递给DB2或将其接收回来.如果您曾经编写过数据库访问例程,那么您应该对此非常熟悉.这篇link简单介绍了如何将SQL语句合并到IBM Enterpirse COBOL程序中.

顺便说一下,IBM Enterprise COBOL也能够处理XML文档.对于沉重的IBM倾斜感到抱歉,但这是我最熟悉的环境.

希望这能让你开始朝着正确的方向前进.

网友评论