【问题标题】:Learning COBOL Without Access to Mainframe [closed]在没有访问大型机的情况下学习 COBOL [关闭]
【发布时间】:2010-12-13 20:26:09
【问题描述】:

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

我想了解有关 COBOL 的更多信息,但我无法访问大型机系统。谁能推荐一个免费的适用于 Windows 的 COBOL 编译器,让我能够完成一些基本的 COBOL 教程?

免责声明:是的,我已经在 Google 上搜索过了,所以希望有经验的人提供更多信息。

谢谢!

【问题讨论】:

  • 研究生院的COBOL?哇。如果他们教 Lisp 而不是 Java,我会感觉更好。
  • @duffymo - FWIW,我也上过函数式编程课程,用 PLT Scheme 教授。 :)
  • 这是为了上课,还是你自己做的事情?你的问题听起来像后者,但如果这是真的,你是可以证明的。我在大学里做了一堆 COBOL,然后在专业上工作了三年。这真的不是一种有趣的语言。
  • @AgentConundrum - 这不适合学校......我自己学习。我在这里只提到学校作为背景来解释我缺乏 COBOL 接触。显然我注册那门课程晚了 20 年。
  • 对于了解“更新”语言和 cobol 的程序员仍然有需求。我知道这里有几家公司在 cobol 中有遗留系统并且正在转向 java。我在大学里学过 cobol 课程,以后再也不会自愿使用它了。 Cobol 是那些大多数程序员不愿承认他们知道的语言之一。

标签: windows cobol


【解决方案1】:

其他张贴者建议使用 Tiny COBOL,但也请查看 OpenCOBOL。 OpenCOBOL 是 C 的交叉编译器,拥有相当活跃的开发社区。

COBOL 不是一门难学的语言。除非你想通过自己的方式进入大型机商店, 花大量时间学习 COBOL 可能没有多少职业回报。

正如贝利撒留所指出的,需要学习的不是语言而是环境。 以此类推,C 语言也没什么可学的。然而, 只知道 C 不会让你走得太远——你需要与 附带的庞大标准库。 COBOL 的相似之处在于 尊重。不同之处在于 COBOL 没有附带庞大的标准库,它是包的一部分 这通常包括:CICS、DB/2、MQ 系列和一系列其他库服务(IBM 环境中的 LE 服务)。

COBOL 可以在大型机环境之外找到,但大型机 是它的“真正的家”。作为概括,“大型机”意味着运行 Z/OS 的 IBM 大型机 (许多人可能会反对这种说法)。本刊:Introduction to the Mainframe - 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 a SECTION/PARAGRAPH 非常有效。习惯 似乎卡住了,而且较新的 COBOL 程序也往往被写成单体怪物。

  • 字符串处理的噩梦。 COBOL 可以很好地进行财务计算。它不做 字符串处理非常好。字符串处理动词INSPECTSTRINGUNSTRING可以做到 很多有趣的事情,但也很令人讨厌。

  • COPY/REPLACINGREPLACE 编译器指令需要理解。他们表现得有些 与大多数其他语言中的文件包含不同。大多数商店使用COPY 仅用于公共记录或 数据声明,其他人也将它们用于常见的程序代码(使用REPLACING 和或REPLACE)。

鉴于 C 的工作知识,您应该能够轻松掌握 COBOL。

【讨论】:

  • +1 for COBOL 使用一种独特的机制来管理从 PERFORMed 部分/段落的返回 不守纪律的程序员可以做一些非常丑陋的事情 :)
  • 关于可以追溯到过程调用被认为代价高昂的时代的评论:我认为传统也部分是由于缺乏 CVS(源代码和编译化身)。我记得在 Vollie(一个已失效的产品,alla ICCF)中构建了一个完整的 CVS,只是为了说服程序员重用 something
【解决方案2】:

我不会解决您的具体问题,因为很多年前我就停止了作为大型机系统程序员的工作(以及一般的大型机......并且包括 COBOL)。尽管如此,我还是要强调两点:

  1. COBOL 是一种易于学习的语言。一开始您会觉得语法令人生畏。很多“部门”、“部分”、“段落”……只是试着理解它们为什么存在。没有人写那些标签。 COBOL 使用和重新定义数据结构的方式可能是最有趣的概念,试着去理解它。

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

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

HTH!

【讨论】:

    【解决方案3】:

    曾经有一家名为“The Kompany”的公司提供 Cobol-to-C 编译器和 Eclipse IDE。该产品被称为“Kobol”。它允许您使用基于 Eclipse 的环境编写 Cobol,该环境类似于您用于大型机(Rational Developer for Z)的环境。他们有一个免费的演示版和一个便宜的学生版 IIRC。

    您会发现 Cobol 易于学习、易于编写且难以自拔。这也是它如此受金融机构欢迎的原因之一。

    我认为您将 Cobol 添加到您的工具箱中很棒。

    【讨论】:

      【解决方案4】:

      你试过TinyCobol吗?我认为我用过一次,还不错。

      不久前,MicroFocus 有一个免费版本的 IDE+Compiler (Net Express),但他们不再提供。我很确定我在此处某处 有一个安装程序的副本,但我不确定如果他们不再提供该产品,安装它是否仍然合法。今晚晚些时候我可以看看(它会在我的另一台计算机上,它目前是无头且不活动的),看看我想出了什么。

      【讨论】:

      • 谢谢,尽管我对学习 COBOL 充满热情(窃笑),但我绝对不想这样做违反任何法律。不过,我会看看 TinyCobol,谢谢你的提示!
      【解决方案5】:

      试试 OpenCOBOL http://www.opencobol.org/,它是免费的,它可以在 Windows 和 Linux 上运行,并且正在积极开发中。

      【讨论】:

        【解决方案6】:

        Micro focus 现在免费提供其个人版 Visual COBOL 用于非商业用途。此 COBOL 可与 Microsoft Visual Studio 作为 .Net 语言或 Eclipse 一起使用。它甚至附带一个精简版的 Visual Studio,因此您不必购买它。可以从https://www.microfocus.com/product-downloads/vcpe/vcpe22/index.aspx下载

        www.opencobol.org/ 上的开源 OpenCOBOL 现已更改名称和位置。现在称为 GNU Cobol,它可以在 sourceforge.net/projects/open-cobol/ 找到。这是一个出色的 COBOL,它实现了 ANS 85 和 ISO 2002 COBOL 标准的大部分内容。

        GNU COBOL 站点也有一个指向 Gary Cutler 的 OpenCOBOL 1.1 程序员指南的链接,这是一个很好的语言参考。如果您正在寻找学习材料,您可以在 www.csis.ul.ie/cobol/course 上尝试我的 COBOL 教程

        还有一个非常有用的 COBOL 在线版本,它使用 OpenCOBOL 编译器。可以在http://www.compileonline.com/compile_cobol_online.php找到 查看他们过长的“Hello world”程序。在 ISO 2002 COBOL 中,不需要 IDENTIFICATION DIVISION 并且由于程序在到达文本结尾时停止,所以也不需要 STOP RUN。实际上只需要下面显示的三行。自己试试吧。

        PROGRAM-ID. HELLO-WORLD.
        PROCEDURE DIVISION.
           DISPLAY 'Hello, world'.
        

        【讨论】:

          猜你喜欢
          • 2011-08-02
          • 2014-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-22
          • 2010-10-25
          • 1970-01-01
          相关资源
          最近更新 更多