2010-12-13 26 views
15

我是計算機科學專業的研究生。我的部門使用Java教授其大部分課程(儘管我在系統體系結構上完成了一門課程,使用C來演示處理器調度,內存管理等......但我離題了)。無法訪問大型機的學習COBOL

我想了解更多關於COBOL的知識,但我無法訪問大型機系統。任何人都可以請推薦一個免費 COBOL編譯器的Windows,使我能夠通過一些基本的COBOL教程?

聲明:是的,我已經谷歌搜索,所以希望一些有經驗的人提供一些進一步的信息。

謝謝!

+0

COBOL在研究生院?哇。如果他們正在教Lisp而不是Java,我會感覺更好。 – duffymo 2010-12-13 20:30:26

+2

@duffymo - FWIW,我也參加過PLT計劃授課的功能性編程課程。 :) – 2010-12-13 20:35:00

+1

這是一個班級,還是你自己在做什麼?你的問題聽起來像後者,但如果那是真的,那麼你就是可以認證的。我在大學裏做了一堆COBOL,然後在專業上工作了三年。這真的不是一種有趣的語言。 – AgentConundrum 2010-12-13 20:46:09

回答

22

其他海報建議小小COBOL,但也看看OpenCOBOL。 OpenCOBOL 是C的交叉編譯器,具有相當活躍的開發社區。

COBOL不是一門難學的語言。除非你想搭配自己的方式進入大型機商店,否則花費大量時間學習COBOL可能沒有太多的職業回報。

正如belisarius指出的那樣,語言和環境不一樣需要學習。通過比喻,對於C語言的瞭解也不多。然而,僅僅知道C就不會讓你走得很遠 - 你需要與 巨大的標準庫一起工作。 COBOL與 相似。不同之處在於COBOL沒有附帶一個巨大的標準庫,它是一個包 的一部分,通常包括:CICS,DB/2,MQ-系列和一系列其他庫服務(IBM環境中的LE服務)。

COBOL可以在大型機環境之外找到,但大型機 是其「真正的家」。作爲概括,「大型機」意味着運行Z/OS 012的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 do 不遵循標準的面向堆棧的調用/返回語義。 COBOL使用獨特的機制來管理從PERFORMed部分/段落返回的 。

  • 具有大量全局變量的單片程序。使用幾百個全局變量來查找COBOL源文件 成千上萬行並不罕見。 COBOL不一定要這樣寫 - 我相信這是一個遺產,可以追溯到 程序調用成本高昂,但PERFORMing a SECTION/PARAGRAPH非常有效。習慣 似乎卡住了,新的COBOL程序也傾向於被寫成單片怪物。

  • 字符串處理噩夢。 COBOL很好地進行財務計算。它不會做 字符串處理非常好。字符串處理動詞INSPECT,STRINGUNSTRING可以做 一些有趣的事情,但設法也相當嚴重。

  • COPY/REPLACING and REPLACE需要了解編譯器指令。它們在大多數其他語言中的表現與文件包含有所不同,它們的行爲有所不同。大多數商店僅使用COPY用於常規記錄或 數據聲明,其他商店也將其用於常用程序代碼(使用REPLACING和or REPLACE)。

鑑於C的工作知識,您應該能夠在沒有太大困難的情況下使用COBOL。

+0

用於_COBOL的+1使用獨特的機制來管理來自PERFORMED部分/段落的返回_漂亮醜陋的事情可以由無紀律的程序員完成:) – 2010-12-15 19:34:03

+0

對過程調用被認爲是昂貴的_dating的評論__:我認爲傳統也是部分原因是由於缺乏CVS(源代碼和編譯版本)。我記得在_Vollie_(一個不存在的產品,alla ICCF)中構建了一個完整的CVS,目的只是爲了說服程序員重用_something_ – 2010-12-16 08:22:47

0

你試過TinyCobol?我認爲我用過它一次,它並不壞。

早些時候,MicroFocus有一個免費版本的IDE +編譯器(Net Express),但他們不再提供它。我很確定我在這裏附近有一個安裝程序的地方的副本,但我不確定如果他們不再提供該產品,安裝仍然合法。今晚晚些時候我可以看一看(它會出現在我的另一臺電腦上,它目前是無頭的,沒有活動的),看看我想出了什麼。

+0

非常感謝,因爲我對學習COBOL(snicker)非常熱心,所以我絕對不想違反任何法律。我會看看TinyCobol,謝謝你的提示! – 2010-12-13 20:45:56

6

我不會解決您的具體問題,因爲很多年前我已經停止了作爲大型機系統程序員(並且通常包含大型機......並且包括COBOL)的工作。不過,有兩點我想強調的是:

  1. COBOL是簡單易學語言。起初你會覺得語法很艱鉅。很多「分部」,「部分」,「段落」......只是試圖瞭解它們爲什麼存在。沒有人寫這些標籤。 COBOL使用和重新定義數據結構的方式可能是最有趣的概念,試着理解它。

  2. 這是關鍵點。我說「COBOL很容易」。現在的壞消息是:作爲一個公平的主機COBOL程序員是不是容易。但這與COBOL無關,這是環境。大型機很大,裏面有很多「生態系統」。您的DB2,CICS,某些JCL和VSAM是最低限度的,也可能是十幾個,具體取決於您的安裝。打印機,磁帶和其他專業且難以管理的硬件也是如此。他們每個人都需要幾年時間才能馴服,這是一位優秀的大型機程序員的真正價值。微焦點有一個昂貴的編譯器/環境產品,能夠模擬這些功能中的一些,但我認爲現在它已經不在市場上了。
    無論如何,這些功能的靈活性通常是「在商店裏」購買,而從書本或課件中獲取非常困難(相信我)。

也就是說,在學習和馴服COBOL之後,不要期望得到一個大型機的工作(除了超級初級工程師之外)。這只是第一步。

HTH!

1

曾經有一家名爲「The Kompany」的公司的Cobol-to-C編譯器和Eclipse IDE。該產品被稱爲「Kobol」。它可以讓你使用一個基於eclipse的環境來編寫Cobol,這與你將用於大型機(Rational Developer for Z)的類似。他們有免費的演示版和廉價的學生版IIRC。

你會發現Cobol易於學習,易於編寫,並且很難在腳下自拍。這是它在金融機構非常受歡迎的原因之一。

我認爲您將Cobol添加到您的工具箱是非常棒的。

0

微焦點現在提供他們的個人版的Visual COBOL免費非商業用途。該COBOL可以與Microsoft Visual Studio一起作爲.Net語言或Eclipse使用。它甚至還帶有精簡版的Visual Studio,所以你不必購買它。您可以從https://www.microfocus.com/product-downloads/vcpe/vcpe22/index.aspx

下載www.opencobol.org/的開源OpenCOBOL現在已更改其名稱和位置。現在可以在sourceforge.net/projects/open-cobol/找到GNU Cobol。這是一個很好的COBOL,它實現了ANSI 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'.