在程序中获取控制流超出 Cobol 中的最后一行

Posted

技术标签:

【中文标题】在程序中获取控制流超出 Cobol 中的最后一行【英文标题】:Getting flow of control in program go beyond last line in Cobol 【发布时间】:2021-09-18 20:13:56 【问题描述】:

使用此 COBOL 代码:

  IDENTIFICATION DIVISION.                              
    PROGRAM-ID. DBNULLA.                                  
    DATA DIVISION.                                        
      WORKING-STORAGE SECTION.                            
        EXEC SQL                                          
          INCLUDE SQLCA                                   
        END-EXEC.                                         
        EXEC SQL                                          
          INCLUDE PATIENT                                 
        END-EXEC.                                         
    PROCEDURE DIVISION.                                   
    MAIN-PARA.                                            
         DISPLAY 'SAMPLE STRUCTURE OF COBOL DB2 PRORGRAM'.
         DISPLAY 'WE ARE CHECKING NULL HERE             '.
         MOVE 100 TO PAT-ID.                              
          EXEC SQL       
           SELECT PAT_ID,PAT_NAME,WARD_NAME INTO :PAT-ID,:PAT-NAME,
           :WARD-NAME FROM PATIENT WHERE PAT_ID = :PAT-ID          
          END-EXEC.                                                
         IF SQLCODE = 0                                            
          DISPLAY 'HI'                                             
         ELSE                                                      
          DISPLAY 'EMBEDDED SQL SQLCODE:' SQLCODE                  
         END-IF.                                                   
    STOP-RUN.    
   

执行时得到如下输出:

SAMPLE STRUCTURE OF COBOL DB2 PRORGRAM                                          
WE ARE CHECKING NULL HERE                                                       
HI                                                                              
IGZ0037S The flow of control in program DBNULLA proceeded beyond the last line of the program.
         From compile unit DBNULLA at entry point DBNULLA at compile unit offset  +000006E4 at entry offset +000006E4
         at address 1E5016E4.    

我不明白为什么控制流超出了最后一行。我已经添加了STOP RUN。 请帮助解决这个问题。

【问题讨论】:

您的 STOP-RUN 是一个段落名称。正如@cschneid 提到的,该语句是 STOP RUN 并从第 12 列开始。 【参考方案1】:

您的STOP-RUN 编码错误。而是编写 STOP RUN 语句。

【讨论】:

...并且必须放在Area-B(第12-72栏)

以上是关于在程序中获取控制流超出 Cobol 中的最后一行的主要内容,如果未能解决你的问题,请参考以下文章

将参数传递给 TWS 作业的 Cobol 程序

服务的高可用 —— 智能流控设计

服务的高可用 —— 智能流控设计

如何在大型机ispf中列出项目中的所有cobol程序

在 Mainframe COBOL 中,如何向控制台操作员发送消息,等待响应,然后继续?

Sentinel.02.Sentinel之流量控制