一、第一个HELLO WORLD
程序写好了,很简单,问题就在如何用JCL去提交编译COBOL程序。出现了N多错误。。
又写了个JCL,提交了下:
这次比上次好多了,至少,JCL没有错误。找了下,问题在这里:
意思应该是条件句导致部分JCL没有执行。看看代码
把CON注释掉,试试,还有错误:
问了老师,大悟,原来意思是,处理COBOL和LKED时出现错误,?分类查看(给忘了。。。)
错误就在这两个里面了,进去揪出来!
这里,COBOL的分列到底是如何规定的?(这个问题一定要搞清楚)
经过几番修改,语法错误终于没有了。一个小小的HELLO WORLD竟然出现这么多错误,真晕。 DISPLAY 写成 DISPLSY。。。看来,写程序还要认真。
到此,成功编译!下面,探讨如何执行COBOL生成的LOAD。
在CN0003.COBOL.LOAD下面,看看HELLO 生成的LOAD
OK!和老师看到的结果一样。
总结下前面的代码:
DATALIST如下:
编译COBOL的JCL:
//CN0003E JOB (CBLCL),'B.C.L',CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),
// NOTIFY=&SYSUID
//*****************************************************************
//* JOB TO COMPILE AND LINK-EDIT COBOL PROGRAM
//*****************************************************************
//COBOL EXEC PGM=IGYCRCTL,REGION=2048K
//STEPLIB DD DSNAME=COBOL.V3R1.SIGYCOMP,
// DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLIN DD DSNAME=&&LOADSET,UNIT=SYSDA,
// DISP=(MOD,PASS),SPACE=(TRK,(3,3)),
// DCB=(BLKSIZE=3200)
//SYSIN DD DSN=CN0003.COBOL.SOURCE(HELLO),DISP=SHR
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT4 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT5 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT6 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSUT7 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//*LKED EXEC PGM=HEWL,COND=(8,LT,COBOL),REGION=1024K
//LKED EXEC PGM=HEWL,REGION=1024K
//SYSLIB DD DSNAME=CEE.SCEELKED,
// DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLIN DD DSNAME=&&LOADSET,DISP=(OLD,DELETE)
// DD DDNAME=SYSIN
//SYSLMOD DD DSNAME=CN0003.COBOL.LOAD,
// SPACE=(TRK,(10,10,1)),
// UNIT=SYSDA,DISP=(MOD,PASS)
//SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,(10,10))
//LKED.SYSIN DD *
NAME HELLO(R)
/*
//
//GOCOBOL EXEC PGM=HELLO
//STEPLIB DD DSN=CN0003.COBOL.LOAD,DISP=SHR
//
老师提供的JCL,修改了多次。。。
老师一看到我的COBOL程序就说,写错了。。。汗。。修改了下,格式贴上来
PROCEDURE DIVISION的语句,好像是不可以顶齐PROCEDURE 写,会出错。。。
二、执行编译好的COBOL程序
执行编译好的COBOL程序,需要写一个JCL来调用生成的LOAD文件:
SUB,提交:
程序运行结果自然在SYSOUT中,S进去,看到了期待已久的结果:
到此,结束!
Oh Yeah!