Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol COBOL - General
COBOL - General Discusiones de temática general sobre el lenguaje COBOL y todo lo relacionado con él.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] Como buscar por nombre en un registro indexado? Marengo97 GnuCOBOL (OpenCOBOL) 10 4 de agosto de 2023 12:04
[Duda] Variar Tamaño de registro Gatomalo RM/COBOL 4 21 de noviembre de 2017 00:34
[Sintaxis] Buscar un dato usando Control ctList Ciro PowerCOBOL (ActiveX, v4 - v11) 3 17 de agosto de 2017 19:47
[Sintaxis] Uso de COMP-6 en registro jmeza Fujitsu COBOL 3 17 de junio de 2017 02:52
[Duda] Registro encontrado Dasije WinDev 0 7 de agosto de 2016 20:55

Respuesta

  #1
Antiguo 8 de mayo de 2024, 20:16
dariodr
Forero
Última Actividad 20.09.2026 10:04
Posts Posts: 57
Likes enviados Enviados: 17
Likes recibidos Recibidos: 11
Libro Buscar un Registro
0 Inactivo Inactivo

Buenas amigos coboleros, una pregunta: como hago para buscar un registro dentro de un archivo.
Tengo este codigo, a veces funciona a veces no, que le falta o que error ven en el codigo.
Saludos.
Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. prg002.
  3.  
  4.        ENVIRONMENT DIVISION.
  5.        INPUT-OUTPUT section.
  6.        FILE-CONTROL.
  7.            SELECT agenda ASSIGN to "agenda.txt"
  8.            ORGANIZATION LINE SEQUENTIAL.
  9.  
  10.        DATA DIVISION.
  11.        FILE SECTION.
  12.        FD  agenda.
  13.        01  agenda-rec.
  14.            03 codigo   PIC 9(5).
  15.            03 nombre   PIC x(10).
  16.            03 salario  pic 9(5)V99.
  17.        WORKING-STORAGE SECTION.
  18.        77  FIN-ARCHIVO   PIC x.
  19.        77  N-NOMBRE    PIC X(10).
  20.  
  21.        PROCEDURE DIVISION.
  22.        MAIN-PROCEDURE.
  23.            OPEN INPUT agenda.
  24.            PERFORM proceso UNTIL FIN-ARCHIVO = 'S'.
  25.            CLOSE agenda.
  26.            STOP RUN.
  27.  
  28.        proceso.
  29.            READ agenda
  30.               AT END MOVE 'S' TO FIN-ARCHIVO
  31.               NOT AT END PERFORM BUSCA-REGISTRO
  32.            END-READ.
  33.  
  34.       *Rutina para buscar un registro      
  35.        BUSCA-REGISTRO.
  36.            DISPLAY 'NOMBRE A BUSCAR: ' NO ADVANCING.
  37.            ACCEPT N-NOMBRE.
  38.            IF N-NOMBRE = nombre
  39.                DISPLAY codigo
  40.                DISPLAY salario
  41.            END-IF.
  42.  
  43.  
  44.  
  45.        END PROGRAM prg002.

El contenido es este:

00001Dario 0058421
00002Luis 0078436
00003Pedro 0058725
00004Jorge 0058766

Estoy buscando por nombre.
dariodr is offline   Responder Con Cita
  #2
Antiguo 8 de mayo de 2024, 23:08
JCantero
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros 
Última Actividad 02.09.2026 00:15
Posts Posts: 442
Likes enviados Enviados: 167
Likes recibidos Recibidos: 269

@dariodr, Es que pides el nombre con cada read.

Pide el nombre y después comprueba si está.

Así

Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. prg002.
  3.  
  4.        ENVIRONMENT DIVISION.
  5.        INPUT-OUTPUT section.
  6.        FILE-CONTROL.
  7.            SELECT agenda ASSIGN to "agenda.txt"
  8.            ORGANIZATION LINE SEQUENTIAL.
  9.  
  10.        DATA DIVISION.
  11.        FILE SECTION.
  12.        FD  agenda.
  13.        01  agenda-rec.
  14.            03 codigo   PIC 9(5).
  15.            03 nombre   PIC x(10).
  16.            03 salario  pic 9(5)V99.
  17.        WORKING-STORAGE SECTION.
  18.        77  FIN-ARCHIVO   PIC x.
  19.        77  N-NOMBRE    PIC X(10).
  20.  
  21.        PROCEDURE DIVISION.
  22.        MAIN-PROCEDURE.
  23.  
  24.            perform aceptar-nombre.
  25.  
  26.  
  27.            OPEN INPUT agenda.
  28.  
  29.            PERFORM proceso UNTIL FIN-ARCHIVO = 'S'.
  30.            CLOSE agenda.
  31.            STOP RUN.
  32.  
  33.        proceso.
  34.            READ agenda
  35.               AT END MOVE 'S' TO FIN-ARCHIVO
  36.               NOT AT END PERFORM BUSCA-REGISTRO
  37.            END-READ.
  38.  
  39.        Aceptar-nombre.
  40.            DISPLAY 'NOMBRE A BUSCAR: ' NO ADVANCING.
  41.            ACCEPT N-NOMBRE.
  42.  
  43.  
  44.  
  45.       *Rutina para buscar un registro      
  46.        BUSCA-REGISTRO.
  47.          
  48.            IF N-NOMBRE = nombre
  49.                DISPLAY codigo
  50.                DISPLAY salario
  51.            END-IF.
  52.  
  53.  
  54.  
  55.        END PROGRAM prg002.
JCantero is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:00.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.