首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCobol文件状态35

OpenCobol文件状态35
EN

Stack Overflow用户
提问于 2013-08-05 14:50:24
回答 3查看 9.3K关注 0票数 0

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

我该如何解决这个问题呢?

代码语言:javascript
复制
   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.
EN

回答 3

Stack Overflow用户

发布于 2013-08-20 13:25:37

有点晚了,而且有点离题,但这里是一个拷贝本文件的OpenCOBOL文件状态代码列表,比数字的助记符稍微多一点。根据口味进行编辑。

http://opencobol.add1tocobol.com/#isam

代码语言:javascript
复制
   01  status-code           pic x(2) value spaces.
       88  SUCCESS                    value '00'.
       88  SUCCESS_DUPLICATE          value '02'.
       88  SUCCESS_INCOMPLETE         value '04'.
       88  SUCCESS_OPTIONAL           value '05'.
       88  SUCCESS_NO_UNIT            value '07'.
       88  END_OF_FILE                value '10'.
       88  OUT_OF_KEY_RANGE           value '14'.
       88  KEY_INVALID                value '21'.
       88  KEY_EXISTS                 value '22'.
       88  KEY_NOT_EXISTS             value '23'.
       88  PERMANENT_ERROR            value '30'.
       88  INCONSISTENT_FILENAME      value '31'.
       88  BOUNDARY_VIOLATION         value '34'.
       88  NOT_EXISTS                 value '35'.
       88  PERMISSION_DENIED          value '37'.
       88  CLOSED_WITH_LOCK           value '38'.
       88  CONFLICT_ATTRIBUTE         value '39'.
       88  ALREADY_OPEN               value '41'.
       88  NOT_OPEN                   value '42'.
       88  READ_NOT_DONE              value '43'.
       88  RECORD_OVERFLOW            value '44'.
       88  READ_ERROR                 value '46'.
       88  INPUT_DENIED               value '47'.
       88  OUTPUT_DENIED              value '48'.
       88  I_O_DENIED                 value '49'.
       88  RECORD_LOCKED              value '51'.
       88  END_OF_PAGE                value '52'.
       88  I_O_LINAGE                 value '57'.
       88  FILE_SHARING               value '61'.
       88  NOT_AVAILABLE              value '91'.
票数 4
EN

Stack Overflow用户

发布于 2013-08-07 23:44:22

您可能需要检查您的IF语句。它的格式错误。尝试使用IF ... END-IF格式来表达清楚,而不是使用句号。

我想这就是你想要做的:

代码语言:javascript
复制
  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.
票数 1
EN

Stack Overflow用户

发布于 2013-08-20 20:42:17

修正很简单..。我刚刚改变了如果...

代码语言:javascript
复制
         IF FS = "35"
            CLOSE ARQCLI OPEN OUTPUT ARQCLI CLOSE ARQCLI
            GO TO INICIO
         ELSE
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18052090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档