如何让Cobol显示在JCL中工作,以便我可以看到输出消息并将其用作调试?

如何让Cobol显示在JCL中工作,以便我可以看到输出消息并将其用作调试?,cobol,Cobol,我正在开发一个Cobol程序,需要显示器来打印消息,以便在运行该程序时可以看到它们。我认为是SYSOUC用来编写这种类型的Cobol消息,但我无法让它显示,它应该是这样的,以便我可以查看它并只查看显示,或者至少我是这么想的 问题:如何使Cobol中的显示器显示消息 //STEP2 EXEC PGM=MyProgram,REGION=32M,COND=(0,NE) //STEPLIB DD DSN=MyPrgram,DISP=SHR

我正在开发一个Cobol程序,需要显示器来打印消息,以便在运行该程序时可以看到它们。我认为是SYSOUC用来编写这种类型的Cobol消息,但我无法让它显示,它应该是这样的,以便我可以查看它并只查看显示,或者至少我是这么想的

问题:如何使Cobol中的显示器显示消息

//STEP2      EXEC PGM=MyProgram,REGION=32M,COND=(0,NE)          
//STEPLIB     DD DSN=MyPrgram,DISP=SHR              
//SYSOUT      DD SYSOUT=1   --system messages                  
//SYSDBOUT    DD SYSOUT=1                                      
//SYSOUC      DD SYSOUT=3   --display                          
//SYSPRINT    DD SYSOUT=1                                      
//SYSUDUMP    DD SYSOUT=1                                      
//INPUT1      DD DSN=MyFile,DISP=SHR,BUFNO=30            
//INPUT2      DD DSN=CDP.PARMLIB(SomeParmCard),DISP=SHR            
//OUTPUT1     DD DSN=&&Temp,DISP=(,PASS),UNIT=SYSDA,            
//            DCB=aaaa.bbbb.MODEL,MGMTCLAS=TMM               
//PRTOUTA     DD SYSOUT=2,DCB=(BLKSIZE=0,LRECL=133,RECFM=FBM)  

默认情况下,从IBM的Enterprise COBOL,您的显示消息将显示在您的站点上

您已将其标记为用于系统消息,但应在此处进行检查。一些实用程序(SORT是一个很好的例子)将包含产品的消息输出,但COBOL默认情况下不是这样

可以通过编译选项:OUTDD(YOURDD)更改显示输出的位置。如果您的输出不在SYSOUT上,请检查编译列表开头的选项,并查看是否正在使用OUTDD

逻辑错误可能会确保未执行显示语句

我建议在你的执行卡或工作卡上写上时间=(,2)。如果您碰巧得到一个循环,这将节省您的时间。我今天仍然这样做(虽然得到的循环比我刚开始时少了很多,但如果发生这种情况,它将节省大量CPU)。您可能可以不受时间=(,1)的影响,但有时这会使转储处理在最佳状态下停止

当想知道你放在程序中的显示器在哪里时,另一件要检查的事情是你正在执行程序的正确版本。我发现有一件事很有帮助:

01  W-WHEN-COMPILED             PIC X(8)BX(8).

MOVE WHEN-COMPILED              TO W-WHEN-COMPILED
DISPLAY "yourprogramname " W-WHEN-COMPILED
您在工作存储器中执行01,并移动和显示“仅一次”。然后在任何运行之后,查看sysout,可以判断您正在运行编译的程序(也可以判断您没有运行)。如果您正在运行的是最新的编译列表,则日期/时间应与该列表中的日期/时间相同。这些年来为我节省了很多时间


有一个内在函数,它给出类似的输出,包括一个4位数的年份。这是两者之间唯一的区别。这两个问题都在编译时得到完全解决,因此只要您只在程序的“仅一次”部分执行它们,它们都不会影响性能。有关何时编译和内部函数的文档,请参阅《企业COBOL语言参考》,有关编译选项的文档,请参阅《编程指南》。

看起来您正在运行一个批处理作业,您希望消息显示在哪里?我需要它显示在SYSOUC=2中(在本商店可以是1、2、3)4是纸上的,我现在正在测试。所以你必须使用编译选项
OUTDD(SYSOUC)
。您应该有一个标准的方式在您的站点上提供编译选项。要使其运行,您可以在源程序的开始处放置
cbloutdd(SYSOUC)
或处理
OUTDD(SYSOUC)
。我总是把它们放在第12列,所以我会把它们放在工作存储器中,或者放在所有主代码所在的过程之后?