与任何其他第三代语言一样,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倾斜感到抱歉,但这是我最熟悉的环境.
希望这能让你开始朝着正确的方向前进.