【问题标题】:Cobol open input file error messageCobol 打开输入文件错误信息
【发布时间】:2014-10-01 19:41:57
【问题描述】:

打开输入行顺序文件的错误处理命令是什么?

我试过了,

OPEN INPUT CUSTOMER-FILE
INVALID KEY/ON ERROR
DISPLAY "NO FILE FOUND".

但无法让它工作。

谢谢。

【问题讨论】:

  • 似乎就在昨天,我对此发表了评论 :-) 我个人更喜欢文件状态而不是声明式或命令式。 OPEN(或 CLOSE)上没有可用的命令。

标签: cobol microfocus


【解决方案1】:

我同意使用文件状态,它更加灵活,您可以在一个解决方案中处理所有错误。这是您需要的大部分代码:

FILE-CONTROL.                                                
    SELECT  FILENAME  ASSIGN  TO  FILENAME                 
                        FILE STATUS IS WS-FS-FILENAME.       
*I  used WS-FS-FILENAME so I know it's declared in Working Storage and connected to File *Section.

DATA DIVISION.                                               
FILE SECTION.                                                

FD  FILENAME            RECORDING  ....                         
                        BLOCK      ...                        
                        RECORD     ....                       
                        LABEL      RECORD    ....        
                        DATA       RECORD    ...
                        .....  

01  FILENAME-REC         PIC X(N).




WORKING-STORAGE SECTION.                                       
01  WS-FS-FILENAME   PIC XX.   

==================================================


OPEN OUTPUT FILENAME.                        
IF WS-FS-FILENAME NOT = '00' THEN            
   DISPLAY 'ERROR OPENING FILENAME'          
   DISPLAY 'ERROR CODE IS : ', WS-FS-FILENAME
   PERFORM EXIT-WITH-ERROR                        
END-IF.                                     

WRITE FILENAME-REC.                                   
IF WS-FS-FILENAME NOT = '00'                          
   DISPLAY 'WRITE ERROR ON FILENAME. ' 
   DISPLAY 'STATUS :' WS-FS-FILENAME                  
   PERFORM EXIT-WITH-ERROR                                
END-IF. 

等等,阅读它,关闭它。

您也可以在 Cobol 文档中找到具体的错误代码。

【讨论】:

    【解决方案2】:

    在 FILE-CONTROL 中,将 FILE STATUS 子句添加到文件的 SELECT 中,并在 PROCEDURE DIVISION 中,在每次文件交互后根据记录的值检查您指定的文件状态变量的值。

    【讨论】:

    • @BillWoodger 有什么例子吗?我真的不明白。
    • 您的程序中有一个 SELECT,它将您的内部文件与外部文件联系起来。 SELECT 的一部分是 FILE STATUS(它在 COBOL 中是可选的,但对我来说是强制性的)。这将命名您在 WORKING-STORAGE 中定义的一个两字节字段。在每个 IO 语句之后,该字段将设置为表示操作结果的值。 00不错。 10 读取输入文件是文件结尾,类似的东西。所有这些都记录在您的 Micro Focus 手册中。看看这里,例如:supportline.microfocus.com/documentation/books/sx20books/…
    • @BillWoodger - 你是对的,我现在删除了最后一句话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多