学习COBOL无需访问大型机

AJ.*_*AJ. 17 windows cobol

我是计算机科学专业的研究生.我的部门使用Java教授大部分课程(虽然我确实参加了一门关于系统架构的课程,该课程使用C来演示处理器调度,内存管理等等......但我离题了).

我想了解更多有关COBOL的信息,但我无法访问大型机系统.任何人都可以推荐一个免费的Windows COBOL编译器,使我能够通过一些基本的COBOL教程?

免责声明:是的,我已经用Google搜索过了,所以希望有些有经验的人能够提供更多信息.

谢谢!

Nea*_*alB 22

其他海报提出了Tiny COBOL,但也看看OpenCOBOL.OpenCOBOL是C的交叉编译器,并且具有相当活跃的开发社区.

COBOL不是一门难学的语言.除非你想要进入大型机商店,否则花费大量时间学习COBOL可能不会有太多的职业回报.

正如belisarius指出的那样,语言并不像需要学习的环境那么多.通过类比,也没有太多关于C语言的知识.但是,只知道C不会让你走得太远 - 你需要使用它附带的巨大标准库.COBOL在这方面类似.区别在于COBOL没有大型标准库,它是包的一部分,通常包括:CICS,DB/2,MQ系列和一系列其他库服务(IBM环境中的LE服务).

COBOL可以在大型机环境之外找到,但大型机是它的"真正的家".作为概括,"大型机"意味着运行Z/OS的IBM大型机(很多可能会对此语句采取例外).本出版物:大型机简介 - z/OS 是一个了解IBM大型机环境的好地方.

我发现COBOL的特征是:

  • COBOL是一种程序语言.一些供应商已经添加了OO扩展,新的COBOL语言标准包括OO扩展,但这主要是装饰.COBOL从根本上说是一种程序性语言.

  • 数据声明.该PICTURE/USAGE事情是有点脑筋急转弯的.数据声明将内部数据表示(二进制,压缩十进制,浮点,字符等)与表示(位数,前导零,符号等)组合成单个声明.

  • REDEFINES 用于提供相同底层内存的不同视图.

  • 分层数据声明.使用级别编号定义数据层次结构.级别1定义层次结构的顶部,增加的数字定义较低级别.等级66(与RENAMES一起),77,88具有特殊含义.

  • 控制流程.许多程序员(甚至是一些资深的COBOL程序员)SECTION/PARAGRAPH 以类似于过程调用的方式查看.它们完全不同.SECTION/PARAGRAPH不遵循正常的面向堆栈的调用/返回语义.COBOL使用一种独特的机制来管理PERFORMed段/段的返回.

  • 具有大量全局变量的单片程序.发现COBOL源文件在数千行中运行有数百个全局变量并不罕见.COBOL不必这样写-我相信这是一个传统可以追溯到的时候,程序调用被认为是昂贵的,但PERFORMing一个SECTION/PARAGRAPH是非常有效的.习惯似乎已经陷入困境,而新的COBOL程序也往往被写成单片怪物.

  • 字符串处理噩梦.COBOL可以很好地进行财务计算.它根本不能很好地处理字符串.该字符串处理动词INSPECT,STRINGUNSTRING可以做一些有趣的事情,但管理是相当加重了.

  • COPY/REPLACINGREPLACE编译器指令需要被理解.它们的行为与大多数其他语言中的文件包含有所不同.大多数商店COPY仅用于共同记录或数据声明,其他商店也使用它们用于通用程序代码(使用REPLACING和或REPLACE).

有了C的工作知识,你应该能够毫不费力地接受COBOL.


Dr.*_*ius 7

我不会解决你的具体问题,因为很多年前我不再是大型机系统程序员(一般都是大型机......而且包括COBOL).不过,我想强调两点:

  1. COBOL是一门易学的语言.一开始你会觉得语法令人生畏.许多"分歧","部分","段落"......只是试图理解它们存在的原因.没有人写这些标签.COBOL使用和重新定义数据结构的方式可能是最有趣的概念,试着很好地理解它.

  2. 这是关键点.我说"COBOL很容易".现在的坏消息是:成为一个公平的大型机COBOL程序员并不容易.但这与COBOL无关,而是环境.大型机很大,那里有很多"生态系统".您有DB2,CICS,一些JCL和VSAM作为最低限度,可能还有十几个,具体取决于您的安装.打印机,磁带和其他专业和难以管理的硬件.他们每个人都需要几年的时间来驯服,这才是一个优秀的大型机程序员的真正价值所在.Microfocus有一个昂贵的编译器/环境产品,能够模仿这些功能中的一些,但我认为它现在已经退出市场.
    无论如何,具有这些功能的灵巧通常是"在商店"获得的,并且很难(相信我)从书本或课件中获取.

也就是说,在学习和驯服COBOL之后,不要指望获得大型机工作(除了超级初级工作).这只是第一步.

HTH!