当我想从cobol程序中显示ispf面板时出现错误rc = 20

Hig*_*tes 0 cobol jcl ispf

我想显示带有cobol程序的ispf面板。使用REXX很容易,没有问题,但是使用cobol不会显示面板。当我提交jcl时,编译和链接步骤没有给出任何错误,但是当它尝试运行时收到错误:MAXCC = 0020。在jesysmsg中,我发现

...
IEF236I ALLOC. FOR CBLMINE STEP2                                               
IGD103I SMS ALLOCATED TO DDNAME STEPLIB                                        
IEF237I JES2 ALLOCATED TO SYSOUT                                               
IEF237I DMY  ALLOCATED TO CEEDUMP                                              
IEF237I DMY  ALLOCATED TO SYSUDUMP                                             
IEF142I CBLMINE STEP2 - STEP WAS EXECUTED - COND CODE 0020                     
IGD104I Z30952.PATO RETAINED,DDNAME=STEPLIB 
IEF285I   Z30952.CBLMINE.JOB04408.D0000103.?           SYSOUT                  
...
Run Code Online (Sandbox Code Playgroud)

根据IBM手册,错误为:ERROR。由于文件属性不一致,写入更新文件的I / O错误,缺少FILEDEF或APNDUPD处理选项被取消。有实际帮助(请举个例子)?

使用ispf面板:

)ATTR DEFAULT(+_%)                                                      
% TYPE(TEXT) COLOR(PINK) INTENS(HIGH)                                 
$ TYPE(INPUT) INTENS(HIGH) PAD(_)                                     
! TYPE(INPUT) INTENS(LOW) PAD(' ') 
)BODY                                                                   
%-------------------- *TITLE FOR ENTRY PANEL* --------------------------
%COMMAND ===>_ZCMD                                                      
%                                                                       
&ZUSER    &ZTIME             &ZSCREEN    &ZWIDTH  &ZUS4S7               
+   THIS DIRECTION LINE TELLS THE USER HOW TO USE THE PANEL:            
%XXXXX:_X     %YYY:$YYY          %ZZZ:$ZZ%AAAAAAAA:$AAAAAAAA  +         
)END
Run Code Online (Sandbox Code Playgroud)

使用cobol程序:

   IDENTIFICATION DIVISION.                             
   PROGRAM-ID.    CBLEX003                              
   ENVIRONMENT DIVISION.                                
   DATA DIVISION.                                       
   WORKING-STORAGE SECTION.                             
   77 PST1 PIC X(6) VALUE 'LIBDEF'.                     
   77 PST2 PIC X(7) VALUE 'ISPPLIB'.                    
   77 PST3 PIC X(7) VALUE 'DATASET'.                    
   77 PST4 PIC X(15) VALUE 'Z30952.MINE.GML'.           
   77 PST5 PIC X(16) VALUE 'DISPLAY PANEL01'.           
   77 ISPLINK PIC X(7) VALUE 'ISPLINK'.                 
   PROCEDURE DIVISION.                                  
       CALL ISPLINK USING PST1 PST2 PST3 PST4.          
       CALL ISPLINK USING PST5.                         
       STOP RUN.                                        
Run Code Online (Sandbox Code Playgroud)

使用jcl:

//CBLMINE  JOB 1,NOTIFY=&SYSUID,MSGLEVEL=(1,1)                       
//SETVAR   SET THEPGM=CBLEX003                                       
//SETVAR   SET WHERES=&SYSUID..MINE.GML                              
//SETVAR   SET LINKRU=&SYSUID..PATO                                  
//COBRUN   EXEC IGYWCL                                               
//COBOL.SYSIN  DD DSN=&WHERES(&THEPGM),DISP=SHR                      
//LKED.SYSLMOD DD DSN=&LINKRU(&THEPGM),DISP=SHR                      
// IF RC = 0 THEN                                                    
//STEP2    EXEC PGM=&THEPGM                                          
//STEPLIB   DD DSN=&LINKRU,DISP=SHR                                  
//SYSOUT    DD SYSOUT=*,OUTLIM=15000                                 
//CEEDUMP   DD DUMMY                                                 
//SYSUDUMP  DD DUMMY                                                 
// ELSE                                                              
// ENDIF        
Run Code Online (Sandbox Code Playgroud)

csc*_*eid 5

如果要使用ISPLINK之类的ISPF服务,则必须在ISPF环境中执行。IBM的文档在此处提供了一个示例,如下所示。

//USERAA JOB (AA04,BIN1,000000),'I. M. USERAA',
// CLASS=L,MSGCLASS=A,NOTIFY=USERAA,MSGLEVEL=(1,1)
//*-------------------------------------------------------*/
//*  EXECUTE ISPF COMMAND IN THE BACKGROUND               */
//*-------------------------------------------------------*/
//*
//ISPFBACK EXEC PGM=IKJEFT01,DYNAMNBR=25,REGION=1024K
//*- - ALLOCATE PROFILE, PANELS, MSGS, PROCS, AND TABLES -*/
//ISPPROF  DD DSN=USERAA.ISPF.PROFILE,DISP=OLD
//ISPPLIB  DD DSN=ISP.SISPPENU,DISP=SHR
//ISPMLIB  DD DSN=ISP.SISPMENU,DISP=SHR
//ISPSLIB  DD DSN=ISP.SISPSENU,DISP=SHR
//         DD DSN=ISP.SISPSLIB,DISP=SHR
//ISPTLIB  DD DSN=USERAA.ISPF.TABLES,DISP=SHR
//         DD DSN=ISP.SISPTENU,DISP=SHR
//         DD DSN=ISP.SISPTLIB,DISP=SHR
//ISPTABL  DD DSN=USERAA.ISPF.TABLES,DISP=SHR
//*
//*- - ALLOCATE ISPF LOG DATA SET  - - - - - - - - - - - -*/
//ISPLOG   DD DSN=USERAA.ISPF.LOG,DISP=SHR
//*
//*- - ALLOCATE DIALOG PROGRAM AND TSO COMMAND LIBRARIES -*/
//ISPLLIB  DD DSN=USERAA.ISPF.LOAD,DISP=SHR
//SYSEXEC  DD DSN=ISP.SISPEXEC,DISP=SHR
//SYSPROC  DD DSN=ISP.SISPCLIB,DISP=SHR
//*
//*- - ALLOCATE TSO BACKGROUND OUTPUT AND INPUT DS - - - -*/
//SYSTSPRT DD DSNAME=USERAA.ISPF.ISPFPRNT,DISP=SHR
//SYSTSIN  DD *
  PROFILE PREFIX(USERAA)         /* ESTABLISH PREFIX      */
  ISPSTART CMD(%TBUPDATE)        /* INVOKE CLIST DIALOG   */
/*
Run Code Online (Sandbox Code Playgroud)

您必须为商店提供有效的工作卡和正确的ISPF库串联。另外,我相信您将使用ISPSTART PGM(CBLEX003)IBM样本代替启动CLIST的样本。

如果您不知道商店的ISPF库串联,则可以从任何ISPF命令行的ISRDDN命令显示的内容中确定它们。

通常,在ISPF主菜单上也有一个ISPF对话框测试工具。您可以使用它来测试您的面板。