1. 程式人生 > >COBOL學習之一:HELLO WORLD 的編譯與執行

COBOL學習之一:HELLO WORLD 的編譯與執行

一、第一個HELLO WORLD

程式寫好了,很簡單,問題就在如何用JCL去提交編譯COBOL程式。出現了N多錯誤。。

1

又寫了個JCL,提交了下:

2

這次比上次好多了,至少,JCL沒有錯誤。找了下,問題在這裡:

3

意思應該是條件句導致部分JCL沒有執行。看看程式碼

4

CON註釋掉,試試,還有錯誤:

5

問了老師,大悟,原來意思是,處理COBOLLKED時出現錯誤,?分類檢視(給忘了。。。)

6

錯誤就在這兩個裡面了,進去揪出來!

7

這裡,COBOL的分列到底是如何規定的?(這個問題一定要搞清楚)

經過幾番修改,語法錯誤終於沒有了。一個小小的HELLO WORLD竟然出現這麼多錯誤,真暈。 DISPLAY

寫成 DISPLSY。。。看來,寫程式還要認真。

8

到此,成功編譯!下面,探討如何執行COBOL生成的LOAD

CN0003.COBOL.LOAD下面,看看HELLO 生成的LOAD

9

OK!和老師看到的結果一樣。

總結下前面的程式碼:

DATALIST如下:

10

編譯COBOLJCL

//CN0003E JOB (CBLCL),'B.C.L',CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

//NOTIFY=&SYSUID

//*****************************************************************

//*JOB TO COMPILE AND LINK-EDIT COBOL PROGRAM

//*****************************************************************

//COBOLEXECPGM=IGYCRCTL,REGION=2048K

//STEPLIBDDDSNAME=COBOL.V3R1.SIGYCOMP,

//DISP=SHR

//SYSPRINT DDSYSOUT=*

//SYSLINDDDSNAME=&&LOADSET,UNIT=SYSDA,

//DISP=(MOD,PASS),SPACE=(TRK,(3,3)),

//DCB=(BLKSIZE=3200)

//SYSINDDDSN=CN0003.COBOL.SOURCE(HELLO),DISP=SHR

//SYSUT1DDUNIT=SYSDA,SPACE=(CYL,(1,1))

//SYSUT2DDUNIT=SYSDA,SPACE=(CYL,(1,1))

//SYSUT3DDUNIT=SYSDA,SPACE=(CYL,(1,1))

//SYSUT4DDUNIT=SYSDA,SPACE=(CYL,(1,1))

//SYSUT5DDUNIT=SYSDA,SPACE=(CYL,(1,1))

//SYSUT6DDUNIT=SYSDA,SPACE=(CYL,(1,1))

//SYSUT7DDUNIT=SYSDA,SPACE=(CYL,(1,1))

//*LKEDEXEC PGM=HEWL,COND=(8,LT,COBOL),REGION=1024K

//LKEDEXEC PGM=HEWL,REGION=1024K

//SYSLIBDDDSNAME=CEE.SCEELKED,

//DISP=SHR

//SYSPRINT DDSYSOUT=*

//SYSLINDDDSNAME=&&LOADSET,DISP=(OLD,DELETE)

//DDDDNAME=SYSIN

//SYSLMODDDDSNAME=CN0003.COBOL.LOAD,

//SPACE=(TRK,(10,10,1)),

//UNIT=SYSDA,DISP=(MOD,PASS)

//SYSUT1DDUNIT=SYSDA,SPACE=(TRK,(10,10))

//LKED.SYSINDD *

NAME HELLO(R)

/*

//

//GOCOBOLEXEC PGM=HELLO

//STEPLIBDD DSN=CN0003.COBOL.LOAD,DISP=SHR

//

老師提供的JCL,修改了多次。。。

老師一看到我的COBOL程式就說,寫錯了。。。汗。。修改了下,格式貼上來

11

PROCEDURE DIVISION的語句,好像是不可以頂齊PROCEDURE 寫,會出錯。。。

二、執行編譯好的COBOL程式

執行編譯好的COBOL程式,需要寫一個JCL來呼叫生成的LOAD檔案:

12

SUB,提交:

13

程式執行結果自然在SYSOUT中,S進去,看到了期待已久的結果:

 

14

到此,結束!

Oh Yeah