OpenCobol文件状态35

OpenCobol文件状态35,cobol,gnucobol,Cobol,Gnucobol,我正在学习Cobol,但我在读取文件时遇到问题,Cobol将文件的状态返回为35。。。 我在互联网上查看了这个状态,据我所知,系统没有找到该文件,但我在与可执行文件相同的目录中创建了该文件,其中包含系统应该识别的列 我怎样才能解决这个问题 IDENTIFICATION DIVISION. PROGRAM-ID. EXCLI. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. D

我正在学习Cobol,但我在读取文件时遇到问题,Cobol将文件的状态返回为35。。。 我在互联网上查看了这个状态,据我所知,系统没有找到该文件,但我在与可执行文件相同的目录中创建了该文件,其中包含系统应该识别的列

我怎样才能解决这个问题

   IDENTIFICATION DIVISION.
   PROGRAM-ID.    EXCLI.

   ENVIRONMENT DIVISION.
   CONFIGURATION SECTION.
   SPECIAL-NAMES.
      DECIMAL-POINT IS COMMA.

   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
        SELECT ARQCLI ASSIGN TO DISK
        ORGANIZATION            INDEXED
        ACCESS MODE             DYNAMIC
        RECORD KEY              FD-CODIGO
        FILE STATUS             FS.

   DATA DIVISION.
   FILE SECTION.
   FD ARQCLI LABEL RECORD STANDARD
         VALUE OF FILE-ID IS "ARQCLI.DAT".

   01 REG-ARQCLI.
      02 FD-CODIGO.
          03 CODIGO       PIC 9(04).
      02 FD-NOME          PIC X(30).
      02 FD-END           PIC X(30).
      02 FD-BAIRRO        PIC X(20).
      02 FD-CIDADE        PIC X(20).
      02 FD-CEP           PIC 9(05).

   WORKING-STORAGE SECTION.
   77 WS-SPACE            PIC X(40) VALUE SPACES.
   77 FS                  PIC X(02) VALUE SPACES.
   77 WS-FUNC             PIC 9     VALUE ZERO.
   77 MSG                 PIC X(09) VALUE SPACES.
   77 WS-CONF             PIC X     VALUE SPACE.
   01 WS-DATA-SIS.
      02 AA               PIC 9(02) VALUE ZEROS.
      02 MM               PIC 9(02) VALUE ZEROS.
      02 DD               PIC 9(02) VALUE ZEROS.
   01 WS-MENSAGENS.
      02 MENSA1           PIC X(30) VALUE "FUNÇÃO ERRADA - REDIGITE".
      02 MENSA2           PIC X(30) VALUE "CAMPO INVALIDO".
      02 MENSA3           PIC X(30) VALUE "CLIENTE JÁ CADASTRADO".
      02 MENSA4           PIC X(30) VALUE "CLIENTE NÃO CADASTRADO".

   SCREEN SECTION.
   01 TELA1.
      02 BLANK SCREEN.
      02 LINE 01 COLUMN 01 VALUE "EM:".
      02 LINE 01 COLUMN 26 VALUE "CADASTRO DE CLIENTES" REVERSE-VIDEO.
      02 LINE 03 COLUMN 19 VALUE "AUTOR: ALEXANDRE SAVELLI BENCZ".
      02 LINE 06 COLUMN 29 VALUE "FUNÇÃO DESEJADA: < >".
      02 LINE 08 COLUMN 29 VALUE "< 1 > INCLUSÃO".
      02 LINE 10 COLUMN 29 VALUE "< 2 > ALTERAÇÃO".
      02 LINE 12 COLUMN 29 VALUE "< 3 > EXCLUSÃO".
      02 LINE 14 COLUMN 29 VALUE "< 4 > CONSULTA".
      02 LINE 16 COLUMN 29 VALUE "< 5 > FIM".
      05 LINE 21 COLUMN 29 VALUE "MENSAGEM:".

   01 TELA-OPCAO.
      02 LINE 06 COLUMN 39 PIC X(09) USING MSG REVERSE-VIDEO.

   PROCEDURE DIVISION.
   INICIO.          
      OPEN I-O ARQCLI.
      IF FS NOT = "00"
         IF FS = "30"
            CLOSE ARQCLI OPEN OUTPUT ARQCLI CLOSE ARQCLI
            GO TO INICIO
         ELSE
            DISPLAY "FILE STATUS --->" LINE 24 COLUMN 35
            DISPLAY FS LINE 24 COLUMN 52
            STOP RUN
         ELSE
            NEXT SENTENCE.
            ACCEPT WS-DATA-SIS FROM DATE.

   TELA.
      DISPLAY TELA1.

   FIM.   
      STOP RUN.
识别部门。
PROGRAM-ID.exci。
环境司。
配置部分。
特殊名称。
小数点是逗号。
输入输出部分。
文件控制。
选择ARQCLI分配给磁盘
组织索引
访问模式动态
记录键FD-CODIGO
文件状态为FS。
数据司。
文件部分。
FD ARQCLI标签记录标准
FILE-ID的值为“ARQCLI.DAT”。
01 REG-ARQCLI。
02 FD-CODIGO。
03 CODIGO图9(04)。
02 FD-NOME图X(30)。
02 FD-END图X(30)。
02 FD-BAIRRO图X(20)。
02 FD-CIDADE图X(20)。
02 FD-CEP图9(05)。
工作和储存科。
77 WS-SPACE PIC X(40)值空间。
77 FS PIC X(02)值空间。
77 WS-FUNC PIC 9值为零。
77 MSG PIC X(09)值空间。
77 WS-CONF PIC X值空间。
01 WS-DATA-SIS。
02 AA PIC 9(02)值为零。
02毫米PIC 9(02)值为零。
02 DD PIC 9(02)值为零。
01 WS-MENSAGENS。
02男士A1图片X(30)值“FUNÃO ERRADA-REDIGITE”。
02男子2 PIC X(30)值“残疾营地”。
02男士A3图片X(30)值“客户JÁCADASTRADO”。
02男士A4图片X(30)值“客户NÃO CADASTRADO”。
屏幕部分。
01 TELA1。
02空白屏幕。
02第01行第01列值“EM:”。
02第01行第26列值“客户地籍”反向视频。
02第03行第19列值“自动:ALEXANDRE SAVELLI BENCZ”。
02第06行第29列值“FUNÃO DESEJADA:<>”。
02第08行第29列值“<1>包括”。
02第10行第29列值“<2>ALTERAÃO”。
02第12行第29列值“<3>不包括”。
02第14行第29列值“<4>参考”。
02第16行第29列值“<5>职能指令手册”。
05第21行第29列值“mensage:”。
01 TELA-OPCAO。
02第06行第39列PIC X(09)使用MSG反向视频。
程序司。
伊尼西奥。
打开I-O ARQCLI。
如果FS NOT=“00”
如果FS=“30”
关闭ARQCLI打开输出ARQCLI关闭ARQCLI
去伊尼西奥
其他的
显示“文件状态--->”第24行第35列
显示FS第24行第52列
停跑
其他的
下一句。
从日期开始接受WS-DATA-SIS。
影视处。
显示TELA1。
职能指令手册。
停,跑。

您可能需要检查您的
IF
语句。格式不对。 如果。。。END-IF格式使其清晰,而不是使用句号

我想这就是你想要做的:

  OPEN I-O ARQCLI.
  IF FS NOT = "00"
     IF FS = "30"
        CLOSE ARQCLI OPEN OUTPUT ARQCLI CLOSE ARQCLI
        GO TO INICIO
     ELSE
        DISPLAY "FILE STATUS --->" LINE 24 COLUMN 35
        DISPLAY FS LINE 24 COLUMN 52
        STOP RUN
     END-IF
  ELSE
        ACCEPT WS-DATA-SIS FROM DATE
  END-IF.

您可能需要检查
IF
语句。格式不对。 如果。。。END-IF格式使其清晰,而不是使用句号

我想这就是你想要做的:

  OPEN I-O ARQCLI.
  IF FS NOT = "00"
     IF FS = "30"
        CLOSE ARQCLI OPEN OUTPUT ARQCLI CLOSE ARQCLI
        GO TO INICIO
     ELSE
        DISPLAY "FILE STATUS --->" LINE 24 COLUMN 35
        DISPLAY FS LINE 24 COLUMN 52
        STOP RUN
     END-IF
  ELSE
        ACCEPT WS-DATA-SIS FROM DATE
  END-IF.

虽然有点晚了,但这里有一个OpenCOBOL文件状态代码列表,它是一个副本文件,比数字更容易记忆。根据口味编辑


虽然有点晚了,但这里有一个OpenCOBOL文件状态代码列表,它是一个副本文件,比数字更容易记忆。根据口味编辑


修正很简单。。。我刚刚通过了IF

         IF FS = "35"
            CLOSE ARQCLI OPEN OUTPUT ARQCLI CLOSE ARQCLI
            GO TO INICIO
         ELSE

修正很简单。。。我刚刚通过了IF

         IF FS = "35"
            CLOSE ARQCLI OPEN OUTPUT ARQCLI CLOSE ARQCLI
            GO TO INICIO
         ELSE

我发现一个方便的技巧(至少在GNU/Linux上)是
strace
。strace将向您精确显示用于文件访问的搜索路径。不是很容易浏览,但是当系统(不管是什么)告诉你一些事情时,我相信它会查找类似于
access(“ARQCLI.DAT”,F_OK)=-1 enoint(没有这样的文件或目录)
的行。大写/小写,1代替I。更改当前目录/路径的脚本。所有的关闭/打开是关于什么的?如果你在那之后又得了30分,你会得到一个很大的脂肪圈。用CONTINUE代替下一句。还有什么别的原因呢?我一直认为当你完成一个文件时关闭它是件好事。在实际使用文件状态方面做得很好的工作并不经常发生。在运行程序之前,最好确保文件处于可用状态。你有什么“看起来不清楚”,所以任何人都不清楚。如果你坚持这样做,记录它,包括在程序中的注释。我发现一个有用的技巧(至少在GNU/Linux上)是
strace
。strace将向您精确显示用于文件访问的搜索路径。不是很容易浏览,但是当系统(不管是什么)告诉你一些事情时,我相信它会查找类似于
access(“ARQCLI.DAT”,F_OK)=-1 enoint(没有这样的文件或目录)
的行。大写/小写,1代替I。更改当前目录/路径的脚本。所有的关闭/打开是关于什么的?如果你在那之后又得了30分,你会得到一个很大的脂肪圈。用CONTINUE代替下一句。还有什么别的原因呢?我一直认为当你完成一个文件时关闭它是件好事。在实际使用文件状态方面做得很好的工作并不经常发生。在运行程序之前,最好确保文件处于可用状态。你有什么“看起来不清楚”,所以任何人都不清楚。如果你坚持这样做,把它记录下来,包括在程序中的评论