在UBUNTU 上玩 COBOL -使用備忘錄
UBUNTU 8.10 , Eclipse 3.4 , Cobol IDE , Open COBOL ,
注意事項:
以下的 COBOL範例(Hello.cob , Hello3.cob)是我參照
Teach Yourself COBOL in 21 days Second Edition
上面的 入門範例 , 所改寫出來的 , 僅供測試使用
(1)下載安裝 Cobol IDE
Download Cobol IDE
http://www.eclipse.org/downloads/download.php?file=/cobol/downloads/cobol_plugins_3.4.0_linux32.zip
解 壓縮 cobol_plugins_3.4.0_linux32.zip
然後把解開之後 features & plugins 複製到你的 Eclipse 目錄下
(2)安裝 OpenCobol
Synaptic套件安 裝程式 , 輸入 Open-Cobol 然後就可安裝
(3) fujitsu cobol 手動建立連結 (可忽略此步驟)
ln -s /usr/bin/cobc /opt/FJSVcbl/bin/cobol
cobc 是open-cobol 的執行檔 ,
cobol 是 fujitsu cobol (net cobol) 的執行檔
在這裡是為了欺騙 Cobol IDE 的自動建置(build.xml) - 詳情後述
(4)執行 Eclipse
(4.1) 建立cobol專案
File -> New -> Other -> COBOL -> COBOL Project(圖片 COBOL-001.jpg)
p1
UBUNTU 8.10 , Eclipse 3.4 , Cobol IDE , Open COBOL ,
注意事項:
以下的 COBOL範例(Hello.cob , Hello3.cob)是我參照
Teach Yourself COBOL in 21 days Second Edition
上面的 入門範例 , 所改寫出來的 , 僅供測試使用
(1)下載安裝 Cobol IDE
Download Cobol IDE
http://www.eclipse.org/downloads/download.php?file=/cobol/downloads/cobol_plugins_3.4.0_linux32.zip
解 壓縮 cobol_plugins_3.4.0_linux32.zip
然後把解開之後 features & plugins 複製到你的 Eclipse 目錄下
(2)安裝 OpenCobol
Synaptic套件安 裝程式 , 輸入 Open-Cobol 然後就可安裝
(3) fujitsu cobol 手動建立連結 (可忽略此步驟)
ln -s /usr/bin/cobc /opt/FJSVcbl/bin/cobol
cobc 是open-cobol 的執行檔 ,
cobol 是 fujitsu cobol (net cobol) 的執行檔
在這裡是為了欺騙 Cobol IDE 的自動建置(build.xml) - 詳情後述
(4)執行 Eclipse
(4.1) 建立cobol專案
File -> New -> Other -> COBOL -> COBOL Project(圖片 COBOL-001.jpg)
p1
Project name:輸入 MyLabCOBOL001(圖片 COBOL-002.jpg)按下Next
p2
Target name:輸入 MyLabCOBOL001(圖片 COBOL-003.jpg)按下Finish
p3
(4.2)建立cobol source - Hello.cob
在專案下的Source Files按下滑鼠右鍵 ,出現功能表
New -> COBOL Source(圖片 COBOL-004.jpg)
File name: 輸入 Hello
PROGRAM-ID: 會自動同上面的名稱也是 Hello
按下Finish
p4
(4.3)修改 Hello.cob 的內容
COBOL IDE 會自動建立 Hello.cob 預設內容如下(圖片 COBOL-005.jpg)
p5
修改Hello.cob 為以下內容(圖片 COBOL-006.jpg)
====Hello.cob START=====
*Hello.cob
IDENTIFICATION DIVISION.
PROGRAM-ID. Hello.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
PROGRAM-BEGIN.
DISPLAY "你說中文也會通".
PROGRAM-EXIT.
EXIT PROGRAM.
PROGRAM-DONE.
STOP RUN.
END PROGRAM Hello.
====Hello.cob END=====
p6
(4.4)手動編譯 Hello.cob 這隻COBOL
開啟終端機視窗(要切換到你的專案所在目錄) ,
輸入以下指令
cobc -o Hello -x Hello.cob
命令說明如下:
告訴它輸出的執行檔的名稱是 Hello(-o Hello) ,
要編譯 Hello.cob 為執行檔(-x Hello.cob)
編譯的時候如果有警告可以暫時不理會 , 只要它會過就可以
如果沒有問題 , 我們的第一隻 Cobol 程式已經完成編譯 , 可以執行
開啟終端機視窗 , 輸入以下指令
./Hello
程式執行結果顯示 "你說中文也會通"(圖片 COBOL-007.jpg)
p7
(5)解說為何要設定在 (3) fujitsu cobol 手動建立連結
回過頭來看專案目錄下有一個 build.xml (圖片 COBOL-008.jpg)
p8
其中的COBOL編譯器設定是 /opt/FJSVcbl/bin/cobol
但是 UBUNTU 上面並沒有 fujitsu cobol , 所以我們只好手動的建立連結去欺騙 COBOL IDE的動作
事實上 , (3)不做 , 也不會有問題,(只是會在IDE的CONSOLE出現編譯錯誤訊息)
因為我們是要手動編譯(4.4)
注意:
不要嘗試著 去修改build.xml , 因為COBOL IDE 會在你修改或是新增 COBOL SOURCE 之後
重新產生 build.xml , 等於你修改的統統無效 , 而且它會在你每次按下 Ctrl + S存檔之後
就去執行 build.xml
這個是沒有甚麼效用的 , 當然你可以去拿 COBOL IDE 的 SOURCE 重新修改跟調整之後變成你要的
但是在這邊 , 我只要要玩玩COBOL, 只是利用 COBOL IDE去顯示COBOL語法的標記
所以我只用最快速的方法 , 讓它可以執行
有興趣要改build.xml 請參閱附錄2 , 但是沒什麼效果
(6)新增 COBOL SOURCE - Hello3.cob
內 容如下
====Hello3.cob START====
*Hello3.cob
IDENTIFICATION DIVISION.
PROGRAM-ID. Hello3.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 FIRST-NUMBER PICTURE IS 99.
01 SECOND-NUMBER PICTURE IS 99.
01 THE-RESULT PICTURE IS 999.
01 THE-NAME PICTURE IS XXXXXXXXXX.
01 THE-MESSAGE PIC X(20).
01 THE-NUMBER PIC 99(2).
PROCEDURE DIVISION.
PROGRAM-BEGIN.
DISPLAY "Enter the first number:(0-99)".
ACCEPT FIRST-NUMBER.
DISPLAY "Enter the second number:(0-99)".
ACCEPT SECOND-NUMBER.
COMPUTE THE-RESULT = FIRST-NUMBER + SECOND-NUMBER.
DISPLAY "The result is:" THE-RESULT.
MOVE "HELLO " TO THE-MESSAGE.
DISPLAY "Enter someone's name.".
ACCEPT THE-NAME.
DISPLAY THE-MESSAGE THE-NAME.
MOVE 12 TO THE-NUMBER.
COMPUTE THE-RESULT = THE-NUMBER + 99.
DISPLAY THE-NUMBER "+ 99 = " THE-RESULT.
CALL "Hello".
PROGRAM-DONE.
STOP RUN.
END PROGRAM Hello3.
====Hello3.cob END====
(7)編譯及執行 Hello3.cob(圖片 COBOL-010.jpg)
開 啟終端機視窗(要切換到你的專案所在目錄) ,
輸入以下指令
cobc -o Hello3 -x Hello3.cob
如果沒有問題 , 我們的第2隻 Cobol 程式已經完成編譯 , 可以執行
開啟終 端機視窗 , 輸入以下指令
./Hello3
它要你輸入數字(first number): 請隨便輸入0~99的數字 , 按下Enter
它要你輸入數字(second number): 請隨便輸入0~99的數字 , 按下Enter
畫面會顯示兩個數字加總的結果
然後要你輸入命名(someone's name): 請隨便輸入 , 按下 Enter
畫面會顯示 HELLO %你輸入的姓名%
然後畫面最後一行會出現
libcob: Cannot find module 'Hello'
這個是我們的程式中有呼叫Hello的外部Module , 但是它找不到對應的 Hello.so
所以我們重新編譯 Hello
開啟 終端機視窗(要切換到你的專案所在目錄) ,
輸入以下指令: 注意這次不要加額外的參數
cobc Hello.cob
p9
然 後重新執行 Hello3 (Hello3不需要重新編譯)
./Hello3
最後你可以看到 Hello3成功的呼叫 Hello並且顯示 Hello的內容在畫面上
(圖片 COBOL-011.jpg)
p10
cobol 呼叫外部 MODULE的成功關鍵點在於 XXX.so是否可以存取的到
p11
如果你有按照我上面的步驟 進行
那麼 , 那麼你應該在 60 分鐘以內可以完成上面的動作
包 含建立 COBOL SOURCE , 編譯 , 執行
還包含了 CALL 外部的 MODULE ,
就是這麼簡單 ,
備忘錄 就是備忘 ,
附錄1:
Open-COBOL可以檢查語法的相容性 ,如果是要檢查是否符合IBM的COBOL
加上 -std=ibm ,
範例:
cobc -std=ibm -o Hello -x Hello.cob
附錄2: (如果你不會 Java就不要理會這段了 , 這段有玩Java的會知道在做什麼)
自 建立ANT build2.xml (為何不建立 build.xml , 因為會被COBOL IDE給蓋掉)
執行的時候
ant -f build2.xml
run-cobol.sh 內容如下
cobc -std=ibm -o $1 -x $2
也因此我才不建議直接去修改 build.xml>
附錄3:
COBOL範例程式電子書 , 這本內容夠淺顯(請自己上網路上找 , 有WEB版)
Teach Yourself COBOL in 21 days Second_Edition
在UBUNTU上玩COBOL到此結束
沒有留言:
張貼留言