0

私は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.
4

3 に答える 3

1

あなたの発言を確認したいかもしれません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.
于 2013-08-07T15:44:22.430 に答える
1

修正は非常に簡単です... IF を変更しただけです...

         IF FS = "35"
            CLOSE ARQCLI OPEN OUTPUT ARQCLI CLOSE ARQCLI
            GO TO INICIO
         ELSE
于 2013-08-20T12:42:17.160 に答える