Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol GnuCOBOL (OpenCOBOL)
GnuCOBOL (OpenCOBOL) El compilador gratuito y Open Source cada vez más popular.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Duda] Buscar un Registro dariodr COBOL - General 1 8 de mayo de 2024 23:08
No puedo crear un archivo indexado CHITOBLA GnuCOBOL (OpenCOBOL) 42 7 de diciembre de 2022 10:34
[Sintaxis] Buscar un dato usando Control ctList Ciro PowerCOBOL (ActiveX, v4 - v11) 3 17 de agosto de 2017 19:47
[Sintaxis] Leer indexado hacía atrás por clave alterna Hrmcobol PowerCOBOL (ActiveX, v4 - v11) 1 10 de noviembre de 2016 13:35
[PowerCOBOL] Numero de Registos en un Ficheiro indexado Rapinto Cocina PowerCOBOL 0 27 de febrero de 2015 01:04

Respuesta
 
Herramientas

  #1
Antiguo 3 de agosto de 2023, 21:09
Marengo97
Forero Junior
Última Actividad 22.11.2023 00:42
Posts Posts: 26
Likes enviados Enviados: 5
Likes recibidos Recibidos: 0
Predeterminado Como buscar por nombre en un registro indexado?
0 Inactivo Inactivo

Quiero implementar la funcion de buscar por nombre en un archivo indexado, no tengo claro como hacerlo

Codigo completo:
Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.  
  3.        PROGRAM-ID.                 LIBRERIA.
  4.        AUTHOR.                     LUCAS GALEANO.
  5.        DATE-WRITTEN                9/7/2023.
  6.  
  7.        ENVIRONMENT DIVISION.
  8.        INPUT-OUTPUT SECTION.
  9.        FILE-CONTROL.
  10.            SELECT REG-LIBROS ASSIGN TO "REGISTRO-LIBROS.DAT"
  11.                                ORGANIZATION IS INDEXED
  12.                                RECORD KEY IS LIBRO-ID
  13.                                ALTERNATE RECORD KEY IS NOMBRE
  14.                                ALTERNATE RECORD KEY IS EDITORIAL
  15.                                ACCESS MODE IS DYNAMIC
  16.                                FILE STATUS FS-REGISTRO-LIBROS.
  17.  
  18.  
  19.        DATA DIVISION.
  20.        FILE SECTION.
  21.  
  22.        FD REG-LIBROS.
  23.  
  24.        01 DATOS-LIBRO.
  25.            05 LIBRO-ID PIC 999     VALUE ZEROS.
  26.            05 NOMBRE   PIC X(20)   VALUE SPACES.
  27.            05 EDITORIAL PIC X(20)  VALUE SPACES.
  28.            05 ESTADO   PIC X(12)   VALUE SPACES.
  29.      *05 FECHA-INGRESO.
  30.      *     10 DIA  PIC 99 VALUE ZEROS.
  31.      *     10 MES  PIC X(10) VALUE SPACES.
  32.      *     10 AÑO  PIC 9999 VALUE ZEROS.
  33.      * 05 FECHA-ALQUILER.
  34.      *     10 DDIA PIC 99 VALUE ZEROS.
  35.      *     10 MMES PIC X(10) VALUE SPACES.
  36.      *     10 AAÑO PIC 9999 VALUE ZEROS.
  37.  
  38.        WORKING-STORAGE SECTION.
  39.      *Codigos de error del archivo.
  40.        01 FS-REGISTRO-LIBROS PIC XX.
  41.            88 ESTA-REG         VALUE "00" "02".
  42.            88 N-ESTA-REG       VALUE "23".
  43.            88 F-NOEXISTE-REG   VALUE "35".
  44.            88 FIN-REG          VALUE "10".
  45.            88 F-ABIERTO        VALUE "12".
  46.      *Variables del programa.
  47.        77 CONTINUAR PIC X.
  48.        77 CONTINUAR-REG PIC X.
  49.        77 ELIMINAR-OPC  PIC X.
  50.        77 BUSCAR-OPC    PIC X.    
  51.        77 OPC       PIC X.
  52.        77 LIMPIAR   PIC X(80) VALUE SPACES.
  53.        77 LIMPIAR-LINEA PIC X(80) VALUE SPACES.
  54.        77 N         PIC 99.
  55.        77 AUX-ID    PIC 999.
  56.        77 AUX-NOMBRE PIC X(20).
  57.  
  58.        PROCEDURE DIVISION.
  59.        DECLARATIVES.
  60.      *Estados de error del archivo
  61.        FILE-ERROR SECTION.
  62.            USE AFTER STANDARD ERROR PROCEDURE ON REG-LIBROS.
  63.            IF FS-REGISTRO-LIBROS EQUALS "35" THEN
  64.                SET F-NOEXISTE-REG TO TRUE
  65.            END-IF.
  66.        END DECLARATIVES.
  67.      *LOGICA PRINCIPAL
  68.        MENU.
  69.            PERFORM UNTIL CONTINUAR = "N"
  70.            PERFORM LIMPIAR-PANTALLA
  71.            DISPLAY "ADMINISTRADOR DE CATALOGO" AT LINE 1 COL 1 WITH
  72.                                                            REVERSE-VIDEO
  73.            DISPLAY " "                         AT LINE 3 COL 1
  74.            DISPLAY "1.Registrar, Editar, Remplazar libro" AT LINE 4
  75.                                                            COL 1
  76.            DISPLAY "2.Eliminar libro"          AT LINE 5 COL 1
  77.            DISPLAY "3.Ver catalogo"            AT LINE 6 COL 1
  78.            DISPLAY "4.Crear nuevo registro"    AT LINE 7 COL 1
  79.            DISPLAY "5.Buscar libro"            AT LINE 8  
  80.            DISPLAY "0.Salir"                   AT LINE 9 COL 1
  81.            DISPLAY " "                         AT LINE 10 COL 1
  82.            DISPLAY "Ingrese tecla ( )"         AT LINE 11 COL 1 WITH
  83.                                                            REVERSE-VIDEO
  84.            ACCEPT OPC                          AT LINE 11 COL 16 WITH
  85.                                                PROMPT UNDERLINE
  86.            EVALUATE OPC
  87.            WHEN 1 PERFORM REGISTRAR-LIBRO
  88.            WHEN 2 PERFORM ELIMINAR-LIBRO
  89.            WHEN 3 PERFORM VER-LIBROS
  90.            WHEN 4 PERFORM CREAR-ARCHIVO
  91.            WHEN 5 PERFORM BUSCAR-LIBRO
  92.            WHEN 0 MOVE "N" TO CONTINUAR
  93.            END-EVALUATE
  94.            END-PERFORM.
  95.            CLOSE REG-LIBROS.
  96.            STOP RUN.
  97.  
  98.  
  99.        REGISTRAR-LIBRO.
  100.            MOVE SPACES TO DATOS-LIBRO.
  101.            PERFORM LIMPIAR-PANTALLA.
  102.            MOVE "S" TO CONTINUAR-REG.
  103.      *************************************************************************    
  104.      *INTERFAZ MENU DE INGRESO DE DATOS
  105.      *************************************************************************
  106.            DISPLAY "Numero de serie:" AT LINE 1 COL 1.
  107.            DISPLAY "Nombre:"       AT LINE 2 COL 1.
  108.            DISPLAY "Editorial:"    AT LINE 3 COL 1.
  109.            DISPLAY "Estado:"       AT LINE 4 COL 1.
  110.            DISPLAY
  111.            "presione ENTER sin ingresar datos para salir al menu"
  112.                                                AT LINE 7 COL 12
  113.                                                      WITH REVERSE-VIDEO.
  114.  
  115.  
  116.            DISPLAY "Numero de serie    :" AT LINE 1 COL 1 WITH
  117.                                                           REVERSE-VIDEO.
  118.            ACCEPT LIBRO-ID WITH PROMPT UNDERLINE UPDATE AT LINE 1
  119.                                                        COL 25.
  120.  
  121.            IF LIBRO-ID EQUALS 000 MOVE "N" TO CONTINUAR-REG END-IF.
  122.  
  123.  
  124.            IF CONTINUAR-REG EQUALS "S"
  125.            DISPLAY "Numero de serie    :" AT LINE 1 COL 1
  126.            DISPLAY LIBRO-ID            AT LINE 1 COL 25
  127.  
  128.            DISPLAY "Nombre    :"     AT LINE 2 COL 1 WITH REVERSE-VIDEO
  129.            ACCEPT NOMBRE               AT LINE 2 COL 25
  130.            DISPLAY "Nombre:    "       AT LINE 2 COL 1
  131.            DISPLAY NOMBRE              AT LINE 2 COL 25
  132.  
  133.            DISPLAY "Editorial    :"  AT LINE 3 COL 1 WITH REVERSE-VIDEO
  134.            ACCEPT EDITORIAL            AT LINE 3 COL 25
  135.            DISPLAY "Editorial    :"    AT LINE 3 COL 1
  136.            DISPLAY EDITORIAL           AT LINE 3 COL 25
  137.  
  138.            DISPLAY "Estado    :"     AT LINE 4 COL 1 WITH REVERSE-VIDEO
  139.            ACCEPT ESTADO               AT LINE 4 COL 25
  140.            DISPLAY "Estado    :"       AT LINE 4 COL 1
  141.            DISPLAY ESTADO              AT LINE 4 COL 25
  142.      *************************************************************************
  143.            PERFORM ABRIR-IO-ARCHIVO
  144.            WRITE DATOS-LIBRO INVALID KEY
  145.                REWRITE DATOS-LIBRO INVALID KEY
  146.                    PERFORM LIMPIAR-PANTALLA
  147.                    DISPLAY "ERROR AL REGISTRAR DATOS" AT LINE 1 COL 1
  148.                                            WITH BACKGROUND-COLOR 4
  149.            END-WRITE
  150.            PERFORM CERRAR-ARCHIVO
  151.            END-IF.
  152.  
  153.  
  154.        VER-LIBROS.
  155.            PERFORM ABRIR-ARCHIVO-INPUT.
  156.            IF F-NOEXISTE-REG THEN
  157.                PERFORM LIMPIAR-PANTALLA
  158.                DISPLAY "ERROR, NO EXISTE UN ARCHIVO DE REGISTROS"
  159.                        WITH BACKGROUND-COLOR 4 AT LINE 1 COL 1
  160.  
  161.  
  162.  
  163.                DISPLAY "Presione ENTER para salir al menu"
  164.                                                AT LINE 7 COL 12 WITH
  165.                                                REVERSE-VIDEO
  166.                ACCEPT OPC AT LINE  10 COL 34
  167.            ELSE
  168.                PERFORM LIMPIAR-PANTALLA
  169.                INITIALIZE LIBRO-ID
  170.                START REG-LIBROS KEY IS >= LIBRO-ID END-START
  171.                READ REG-LIBROS NEXT RECORD END-READ
  172.                DISPLAY
  173.                "ID |TITULO            |EDITORIAL          |ESTADO     "
  174.                WITH REVERSE-VIDEO AT LINE 1 COL 1
  175.                PERFORM VARYING N FROM 02 BY 1 UNTIL FIN-REG
  176.                    DISPLAY DATOS-LIBRO AT LINE N COL 1
  177.                    READ REG-LIBROS NEXT RECORD END-READ
  178.                END-PERFORM
  179.                ADD 1 TO N
  180.                DISPLAY "Presione ENTER para salir al menu"
  181.                                                AT LINE N COL 1 WITH
  182.                                                REVERSE-VIDEO
  183.                ACCEPT OPC AT LINE N COL 34
  184.                PERFORM CERRAR-ARCHIVO
  185.            END-IF.
  186.  
  187.  
  188.        ELIMINAR-LIBRO.
  189.            PERFORM ABRIR-IO-ARCHIVO.
  190.            PERFORM LIMPIAR-PANTALLA.
  191.            MOVE SPACES TO DATOS-LIBRO
  192.  
  193.            DISPLAY "Indique por id el libro que desea eliminar:"
  194.            WITH REVERSE-VIDEO AT LINE 1 COL 1.
  195.            DISPLAY "Presione ENTER para salir al menu"
  196.            WITH REVERSE-VIDEO AT LINE 7 COL 12.
  197.                      
  198.            ACCEPT LIBRO-ID AT LINE 1 COL 46 WITH PROMPT UNDERLINE UPDATE.
  199.            
  200.            IF LIBRO-ID NOT EQUALS 000    
  201.            
  202.            PERFORM LIMPIAR-PANTALLA
  203.  
  204.            START REG-LIBROS KEY IS = LIBRO-ID
  205.            READ REG-LIBROS END-READ
  206.            IF ESTA-REG
  207.                DISPLAY
  208.                "ID |TITULO            |EDITORIAL         |ESTADO     "
  209.                                    WITH REVERSE-VIDEO AT LINE 1 COL 1
  210.                DISPLAY DATOS-LIBRO AT LINE 2 COL 1
  211.                DISPLAY "ELIMINAR(1)|VOLVER(0) :" AT LINE 5 COL 1
  212.                                                    WITH REVERSE-VIDEO
  213.                
  214.                ACCEPT ELIMINAR-OPC AT LINE 5 COL 25
  215.                EVALUATE ELIMINAR-OPC
  216.                    WHEN 1
  217.                    DISPLAY LIMPIAR-LINEA AT LINE 10 COL 1
  218.                    DELETE REG-LIBROS INVALID KEY
  219.                        DISPLAY "ERROR AL ELIMINAR" AT LINE 5 COL 1
  220.                    END-DELETE
  221.                    DISPLAY "REGISTRO ELIMINADO CON EXITO" AT LINE 5
  222.                                                 COL 1
  223.                                                 WITH BACKGROUND-COLOR 2
  224.                            ACCEPT OPC AT LINE 5 COL 29
  225.                    WHEN 0 PERFORM ELIMINAR-LIBRO
  226.            ELSE
  227.                DISPLAY "EL REGISTRO NO EXISTE" AT LINE 1 COL 1
  228.                                            WITH BACKGROUND-COLOR 4
  229.                            ACCEPT OPC AT LINE 1 COL 22
  230.            END-IF
  231.            
  232.            END-IF.
  233.            PERFORM CERRAR-ARCHIVO.
  234.            
  235.  
  236.        CREAR-ARCHIVO.
  237.            PERFORM ABRIR-IO-ARCHIVO
  238.            IF NOT F-NOEXISTE-REG THEN
  239.                PERFORM LIMPIAR-PANTALLA
  240.                DISPLAY "SE DETECTO UN ARCHIVO EXISTENTE, DE PROCEDER EL"
  241.                AT LINE 1 COL 1 WITH BACKGROUND-COLOR 6
  242.                " ARCHIVO ACTUAL SERA ELIMINADO" AT LINE 1 COL 48
  243.                                WITH BACKGROUND-COLOR 6
  244.                DISPLAY "ELIMINAR(1)|SALIR AL MENU(0) :" AT LINE 10 COL 1
  245.                                                    WITH REVERSE-VIDEO
  246.                ACCEPT ELIMINAR-OPC AT LINE 10 COL 31
  247.                EVALUATE ELIMINAR-OPC
  248.                    WHEN 1
  249.                    PERFORM CERRAR-ARCHIVO
  250.                    OPEN OUTPUT REG-LIBROS
  251.                    PERFORM CERRAR-ARCHIVO
  252.                    PERFORM LIMPIAR-PANTALLA
  253.                    DISPLAY "ARCHIVO CREADO CON EXITO."
  254.                                                WITH BACKGROUND-COLOR 2
  255.                    ACCEPT OPC AT LINE 1 COL 27
  256.                    WHEN 0 PERFORM CERRAR-ARCHIVO EXIT
  257.            ELSE
  258.                OPEN OUTPUT REG-LIBROS
  259.                CLOSE REG-LIBROS
  260.                PERFORM LIMPIAR-PANTALLA
  261.                DISPLAY "ARCHIVO CREADO CON EXITO."
  262.                                                WITH BACKGROUND-COLOR 2
  263.                ACCEPT OPC AT LINE 1 COL 27
  264.            END-IF.
  265.  
  266.        BUSCAR-LIBRO.
  267.            PERFORM LIMPIAR-PANTALLA.
  268.            PERFORM ABRIR-ARCHIVO-INPUT.
  269.            MOVE SPACES TO DATOS-LIBRO.
  270.            
  271.            IF ESTA-REG
  272.                DISPLAY "MENU DE BUSQUEDA" AT LINE 1 COL 1
  273.                                        WITH REVERSE-VIDEO
  274.                DISPLAY "(I)Busqueda por id" AT LINE 3 COL 1
  275.                DISPLAY "(N)Busqueda por nombre" AT LINE 4 COL 1
  276.                DISPLAY "(E)Busqueda por editorial" AT LINE 5 COL 1
  277.                DISPLAY "Ingrese opcion( )" AT LINE 7 COL 1
  278.                                        WITH REVERSE-VIDEO
  279.                ACCEPT BUSCAR-OPC AT LINE 7 COL 16
  280.                IF BUSCAR-OPC EQUALS "i" MOVE "I" TO BUSCAR-OPC END-IF
  281.                IF BUSCAR-OPC EQUALS "n" MOVE "N" TO BUSCAR-OPC END-IF
  282.                IF BUSCAR-OPC EQUALS "e" MOVE "E" TO BUSCAR-OPC END-IF
  283.                
  284.                EVALUATE BUSCAR-OPC
  285.                WHEN "I"
  286.                
  287.                WHEN "N"
  288.                
  289.                WHEN "E"
  290.                PERFORM BUSCAR-NOMBRE
  291.                END-EVALUATE
  292.                
  293.                
  294.                
  295.                
  296.                
  297.            ELSE
  298.                DISPLAY "ERROR, NO EXISTE UN ARCHIVO DE REGISTROS"
  299.                                  AT LINE 1 COL 1 WITH BACKGROUND-COLOR 4
  300.                ACCEPT OPC AT LINE 1 COL 43
  301.            END-IF.
  302.      *************************************************************************        
  303.      *BLOQUE DE CODIGO DE BUSQUEDAS
  304.      *************************************************************************        
  305.        BUSCAR-NOMBRE.
  306.            PERFORM LIMPIAR-PANTALLA.
  307.            PERFORM ABRIR-ARCHIVO-INPUT.
  308.            MOVE SPACES TO DATOS-LIBRO.
  309.            DISPLAY "Titulo:   " AT LINE 2 COL 1 WITH REVERSE-VIDEO
  310.            DISPLAY "---------------------------------------------------"
  311.                                                AT LINE 3 COL 1.
  312.            
  313.            DISPLAY
  314.                "ID |TITULO            |EDITORIAL         |ESTADO     "
  315.                                    WITH REVERSE-VIDEO AT LINE 3 COL 1.
  316.            ACCEPT NOMBRE AT LINE 2 COL 14.
  317.            
  318.            
  319.            START REG-LIBROS KEY IS = NOMBRE.
  320.            READ REG-LIBROS END-READ
  321.            DISPLAY DATOS-LIBRO AT LINE 4 COL 1
  322.            ACCEPT OPC AT LINE 5  COL 1.
  323.          
  324.            
  325.       *************************************************************************
  326.        LIMPIAR-PANTALLA.
  327.            PERFORM VARYING N FROM 01 BY 1 UNTIL N>24
  328.                DISPLAY LIMPIAR AT LINE N COLUMN 1
  329.            END-PERFORM.
  330.                
  331.        ABRIR-ARCHIVO-INPUT.
  332.            OPEN INPUT REG-LIBROS.
  333.  
  334.        ABRIR-IO-ARCHIVO.
  335.            OPEN I-O REG-LIBROS.
  336.  
  337.        CERRAR-ARCHIVO.
  338.            CLOSE REG-LIBROS.

BLOQUE DE CODIGO ESPECIFICO:

Código COBOL:
  1.   BUSCAR-NOMBRE.
  2.            PERFORM LIMPIAR-PANTALLA.
  3.            PERFORM ABRIR-ARCHIVO-INPUT.
  4.            MOVE SPACES TO DATOS-LIBRO.
  5.            DISPLAY "Titulo:   " AT LINE 2 COL 1 WITH REVERSE-VIDEO
  6.            DISPLAY "---------------------------------------------------"
  7.                                                AT LINE 3 COL 1.
  8.            
  9.            DISPLAY
  10.                "ID |TITULO            |EDITORIAL         |ESTADO     "
  11.                                    WITH REVERSE-VIDEO AT LINE 3 COL 1.
  12.            ACCEPT NOMBRE AT LINE 2 COL 14.
  13.            
  14.            
  15.            START REG-LIBROS KEY IS = NOMBRE.
  16.            READ REG-LIBROS END-READ
  17.            DISPLAY DATOS-LIBRO AT LINE 4 COL 1
  18.            ACCEPT OPC AT LINE 5  COL 1.

Utilizé la misma logica para buscar por una key numerica, que funciona perfecto pero no con la secondary key NOMBRE
Marengo97 is offline   Responder Con Cita
  #2
Antiguo 3 de agosto de 2023, 22:20
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

@Marengo97, más o menos te lo dije en otro post.


Metidos en el tema, suponte que deseas seleccionar un intevalo de libros:

accept nombre-desde
accept nombre-hasta

Código COBOL:
  1. VER-LIBROS.
  2.            PERFORM LIMPIAR-PANTALLA
  3.            PERFORM ABRIR-Input-ARCHIVO
  4.            IF F-NOEXISTE-REG THEN
  5.              PERFORM LIMPIAR-PANTALLA
  6.              DISPLAY "ERROR, NO EXISTE UN ARCHIVO DE REGISTROS" AT LINE 1
  7.                                                            COL 1
  8.                                                            
  9.              DISPLAY "PRESIONE ENTER PARA VOLVER AL MENU()" AT LINE 10
  10.                                                            COL 1
  11.              ACCEPT OPC AT LINE  11 COL 36
  12.            ELSE
  13.                PERFORM LIMPIAR-PANTALLA
  14.  
  15.                move nombre-desde to  nombre
  16.                if nombre-hasta = " " then move hight-values to nombre-hasta end-if
  17.  
  18.                start reg-libros key is >= nombre end-start
  19.                READ REG-LIBROS next record end-read
  20.  
  21.               PERFORM VARYING N FROM 1 BY 1 UNTIL fin-reg or nombre > nombre-hasta
  22.                     DISPLAY DATOS-LIBRO AT LINE N COL 1
  23.                     READ REG-LIBROS next record end-read
  24.              END-PERFORM
  25.              ADD 1 TO N
  26.              DISPLAY "PRESIONE ENTER PARA REGRESAR AL MENU" AT LINE N
  27.                                                           COL 1
  28.            ACCEPT OPC AT LINE 15
  29.            PERFORM CERRAR-ARCHIVO
  30.            END-IF.



Se pueden hacer cosas interesantes como buscar mayúsculas y minúsculas, e incluso que contengan una cadena, "luna", "árbol".

- - - Updated - - -

Otra cosa.
Código COBOL:
  1.  
  2.   SELECT REG-LIBROS ASSIGN TO "REGISTRO-LIBROS.DAT"
  3.                                ORGANIZATION IS INDEXED
  4.                                RECORD KEY IS LIBRO-ID
  5.                                ALTERNATE RECORD KEY IS NOMBRE with duplicates
  6.                                ALTERNATE RECORD KEY IS EDITORIAL With duplicates
  7.                                ACCESS MODE IS DYNAMIC
  8.                                FILE STATUS FS-REGISTRO-LIBROS.
  9.  
  10.  

Ya que la editorial se puede repetir

Última edición por Josber fecha: 4 de agosto de 2023 a las 10:29. Razón: Utiliza el resalte de lenguaje
JCantero is offline   Responder Con Cita
  #3
Antiguo 4 de agosto de 2023, 00:32
Marengo97
Forero Junior
Última Actividad 22.11.2023 00:42
Posts Posts: 26
Likes enviados Enviados: 5
Likes recibidos Recibidos: 0

No logro que funcione, no entiendo bien como funciona, debo de hacer un desde-nombre, hasta-nombre para recorrer ? Algo estoy pasando de alto, le dejo el bloque de codigo aunque lo modifique muchas veces sin exito
Código COBOL:
  1.   BUSCAR-NOMBRE.
  2.            PERFORM LIMPIAR-PANTALLA.
  3.            PERFORM ABRIR-ARCHIVO-INPUT.
  4.            MOVE SPACES TO DATOS-LIBRO.
  5.            DISPLAY "Titulo:   " AT LINE 2 COL 1 WITH REVERSE-VIDEO
  6.            DISPLAY "---------------------------------------------------"
  7.                                                AT LINE 3 COL 1.
  8.  
  9.            DISPLAY
  10.                "ID |TITULO            |EDITORIAL         |ESTADO     "
  11.                                    WITH REVERSE-VIDEO AT LINE 3 COL 1.
  12.            ACCEPT AUX-NOMBRE AT LINE 2 COL 14.
  13.            MOVE AUX-NOMBRE TO HASTA-NOMBRE
  14.            DISPLAY NOMBRE
  15.            START REG-LIBROS KEY IS >= NOMBRE
  16.            READ REG-LIBROS NEXT RECORD END-READ
  17.            PERFORM VARYING N FROM 01 BY 1 UNTIL FIN-REG
  18.                                           OR NOMBRE > HASTA-NOMBRE
  19.            READ REG-LIBROS NEXT RECORD END-READ
  20.            DISPLAY DATOS-LIBRO AT LINE N COL 1
  21.            END-PERFORM
  22.            ACCEPT OPC AT LINE 5  COL 1.
Marengo97 is offline   Responder Con Cita
  #4
Antiguo 4 de agosto de 2023, 00:57
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

@Marengo97, puedes hacer una consulta desde hasta o bien puedes hacer una consulta que contenga una palabra o un string.

Eso ya depende de de lo que tú quieras hacer

- - - Updated - - -

Yo para ciertas consultas o listados pido un intervalo desde hasta.

Para otro tipo de consulta pido que contenga una palabra o un conjunto de palabras.

Claro está , cada cosa hay que implementarla
JCantero is offline   Responder Con Cita
  #5
Antiguo 4 de agosto de 2023, 03:00
Marengo97
Forero Junior
Última Actividad 22.11.2023 00:42
Posts Posts: 26
Likes enviados Enviados: 5
Likes recibidos Recibidos: 0

Seria mucha molestia si lo hiciera por mi para poder verlo? Se me acabaron las opciones, no lo puedo hacer funcionar, me muestra todo en espacios o todo en espacios vacios excepto en el area de NOMBRE, hagalo a su gusto quiero ver como debe de hacerse correctamente. Gracias de todas formas.
Marengo97 is offline   Responder Con Cita
  #6
Antiguo 4 de agosto de 2023, 03:27
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

@Marengo97, la opción del post 2 debe funcionar con nombre desde nombre hasta.

Ponlo en tu código y si no te funciona ponlo aquí para que lo veamos y poder solucionarlo
JCantero is offline   Responder Con Cita
  #7
Antiguo 4 de agosto de 2023, 03:54
Marengo97
Forero Junior
Última Actividad 22.11.2023 00:42
Posts Posts: 26
Likes enviados Enviados: 5
Likes recibidos Recibidos: 0

Asi lo tengo ahora:
Código COBOL:
  1.  BUSCAR-NOMBRE.
  2.            PERFORM LIMPIAR-PANTALLA.
  3.            PERFORM ABRIR-ARCHIVO-INPUT.
  4.            MOVE SPACES TO DATOS-LIBRO
  5.            DISPLAY "Titulo:   " AT LINE 2 COL 1 WITH REVERSE-VIDEO
  6.            DISPLAY "---------------------------------------------------"
  7.                                                AT LINE 3 COL 1.
  8.  
  9.            DISPLAY
  10.                "ID |TITULO            |EDITORIAL         |ESTADO     "
  11.                                    WITH REVERSE-VIDEO AT LINE 3 COL 1.
  12.            ACCEPT DESDE-NOMBRE AT LINE 2 COL 14.
  13.            MOVE DESDE-NOMBRE TO NOMBRE.
  14.            MOVE NOMBRE TO HASTA-NOMBRE.
  15.            START REG-LIBROS KEY IS >= NOMBRE END-START.
  16.            READ REG-LIBROS NEXT RECORD END-READ.
  17.            PERFORM VARYING N FROM 01 BY 1 UNTIL FIN-REG OR
  18.                                           NOMBRE > HASTA-NOMBRE
  19.                DISPLAY DATOS-LIBRO AT LINE 4 COL 1
  20.  
  21.                READ REG-LIBROS NEXT RECORD END-READ
  22.            END-PERFORM.
  23.                
  24.                ACCEPT OPC AT LINE 10 COL 1.
  25.            PERFORM CERRAR-ARCHIVO.

Te adjunto 3 capturas de pantallas:
Estas dos primeras son con "READ REG-LIBROS END-READ" en la linea 16
[ATTACH=CONFIG]918[/ATTACH]
[ATTACH=CONFIG]919[/ATTACH]
Muestra registros erroneos o simplemente espacios vacios, creo que los campos estan en sus valores por default.
Esta tercera es con "READ REG-LIBROS NEXT RECORD END-READ" tambien en la linea 16[ATTACH=CONFIG]917[/ATTACH]
Aca, me muestra todo espacios vacios no importa cual registro sea.

Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  Sin título2.png
Vistas: 69
Tamaño:  200,4 KB   Pulsar la imagen para la versión amplia
Nombre:  Sin título3.png
Vistas: 58
Tamaño:  224,4 KB   Pulsar la imagen para la versión amplia
Nombre:  Sin titulo4.png
Vistas: 81
Tamaño:  191,6 KB  
Marengo97 is offline   Responder Con Cita
  #8
Antiguo 4 de agosto de 2023, 10:51
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

@Marengo97, he probado el código y funciona perfectamente.

Si te saca campos en blanco es porque no metiste nada.

Lo que hace este bucle es:

- pedir nombre
- hacer un start por ese nombre
- leer el primero y sacar siguientes que sean iguales a ese nombre.

Prueba a inicializar el fichero y meter todos los campos bien.
JCantero is offline   Responder Con Cita
  #9
Antiguo 4 de agosto de 2023, 12:00
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

@Marengo97, mira esto.

Te he cambiado el parrafo de registrar libro porque no funcionaba en el caso de que exista un libro.

Cuando se teclee un libro, hay que leerlo para sacar la informacion. De lo contrario si bajas con intro se reescribe el libro pero con datos en blanco.

al final he añadido una cosa mas elegante, hacias un write y si da error un rewrite. Para mi es mejor si existia rewrite y si no write.


Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.  
  3.        PROGRAM-ID.                 LIBRERIA.
  4.        AUTHOR.                     LUCAS GALEANO.
  5.        DATE-WRITTEN                9/7/2023.
  6.  
  7.        ENVIRONMENT DIVISION.
  8.        INPUT-OUTPUT SECTION.
  9.        FILE-CONTROL.
  10.            SELECT REG-LIBROS ASSIGN TO "REGISTRO-LIBROS.DAT"
  11.                                ORGANIZATION IS INDEXED
  12.                                RECORD KEY IS LIBRO-ID
  13.                                ALTERNATE RECORD KEY IS NOMBRE
  14.                                ALTERNATE RECORD KEY IS EDITORIAL
  15.                                ACCESS MODE IS DYNAMIC
  16.                                FILE STATUS FS-REGISTRO-LIBROS.
  17.  
  18.  
  19.        DATA DIVISION.
  20.        FILE SECTION.
  21.  
  22.        FD REG-LIBROS.
  23.  
  24.        01 DATOS-LIBRO.
  25.            05 LIBRO-ID PIC 999     VALUE ZEROS.
  26.            05 NOMBRE   PIC X(20)   VALUE SPACES.
  27.            05 EDITORIAL PIC X(20)  VALUE SPACES.
  28.            05 ESTADO   PIC X(12)   VALUE SPACES.
  29.      *05 FECHA-INGRESO.
  30.      *     10 DIA  PIC 99 VALUE ZEROS.
  31.      *     10 MES  PIC X(10) VALUE SPACES.
  32.      *     10 AÑO  PIC 9999 VALUE ZEROS.
  33.      * 05 FECHA-ALQUILER.
  34.      *     10 DDIA PIC 99 VALUE ZEROS.
  35.      *     10 MMES PIC X(10) VALUE SPACES.
  36.      *     10 AAÑO PIC 9999 VALUE ZEROS.
  37.  
  38.        WORKING-STORAGE SECTION.
  39.      *Codigos de error del archivo.
  40.        01 FS-REGISTRO-LIBROS PIC XX.
  41.            88 ESTA-REG         VALUE "00" "02".
  42.            88 N-ESTA-REG       VALUE "23".
  43.            88 F-NOEXISTE-REG   VALUE "35".
  44.            88 FIN-REG          VALUE "10".
  45.            88 F-ABIERTO        VALUE "12".
  46.      *Variables del programa.
  47.        77 CONTINUAR PIC X.
  48.        77 CONTINUAR-REG PIC X.
  49.        77 ELIMINAR-OPC  PIC X.
  50.        77 BUSCAR-OPC    PIC X.    
  51.        77 OPC       PIC X.
  52.        77 LIMPIAR   PIC X(80) VALUE SPACES.
  53.        77 LIMPIAR-LINEA PIC X(80) VALUE SPACES.
  54.        77 N         PIC 99.
  55.        77 AUX-ID    PIC 999.
  56.        77 AUX-NOMBRE PIC X(20).
  57.        01 DESDE-NOMBRE PIC X(20).
  58.        01 HASTA-NOMBRE PIC X(20).
  59.  
  60.        PROCEDURE DIVISION.
  61.        DECLARATIVES.
  62.      *Estados de error del archivo
  63.        FILE-ERROR SECTION.
  64.            USE AFTER STANDARD ERROR PROCEDURE ON REG-LIBROS.
  65.            IF FS-REGISTRO-LIBROS EQUALS "35" THEN
  66.                SET F-NOEXISTE-REG TO TRUE
  67.            END-IF.
  68.        END DECLARATIVES.
  69.      *LOGICA PRINCIPAL
  70.        MENU.
  71.            PERFORM UNTIL CONTINUAR = "N"
  72.            PERFORM LIMPIAR-PANTALLA
  73.            DISPLAY "ADMINISTRADOR DE CATALOGO" AT LINE 1 COL 1 WITH
  74.                                                            REVERSE-VIDEO
  75.            DISPLAY " "                         AT LINE 3 COL 1
  76.            DISPLAY "1.Registrar, Editar, Remplazar libro" AT LINE 4
  77.                                                            COL 1
  78.            DISPLAY "2.Eliminar libro"          AT LINE 5 COL 1
  79.            DISPLAY "3.Ver catalogo"            AT LINE 6 COL 1
  80.            DISPLAY "4.Crear nuevo registro"    AT LINE 7 COL 1
  81.            DISPLAY "5.Buscar libro"            AT LINE 8  
  82.            DISPLAY "0.Salir"                   AT LINE 9 COL 1
  83.            DISPLAY " "                         AT LINE 10 COL 1
  84.            DISPLAY "Ingrese tecla ( )"         AT LINE 11 COL 1 WITH
  85.                                                            REVERSE-VIDEO
  86.            ACCEPT OPC                          AT LINE 11 COL 16 WITH
  87.                                                PROMPT UNDERLINE
  88.            EVALUATE OPC
  89.            WHEN 1 PERFORM REGISTRAR-LIBRO
  90.            WHEN 2 PERFORM ELIMINAR-LIBRO
  91.            WHEN 3 PERFORM VER-LIBROS
  92.            WHEN 4 PERFORM CREAR-ARCHIVO
  93.            WHEN 5 PERFORM BUSCAR-LIBRO
  94.            WHEN 0 MOVE "N" TO CONTINUAR
  95.            END-EVALUATE
  96.            END-PERFORM.
  97.            CLOSE REG-LIBROS.
  98.            STOP RUN.
  99.  
  100.  
  101.        REGISTRAR-LIBRO.
  102.            MOVE SPACES TO DATOS-LIBRO.
  103.            PERFORM LIMPIAR-PANTALLA.
  104.            MOVE "S" TO CONTINUAR-REG.
  105.      *************************************************************************    
  106.      *INTERFAZ MENU DE INGRESO DE DATOS
  107.      *************************************************************************
  108.            DISPLAY "Numero de serie:" AT LINE 1 COL 1.
  109.            DISPLAY "Nombre:"       AT LINE 2 COL 1.
  110.            DISPLAY "Editorial:"    AT LINE 3 COL 1.
  111.            DISPLAY "Estado:"       AT LINE 4 COL 1.
  112.            DISPLAY
  113.            "presione ENTER sin ingresar datos para salir al menu"
  114.                                                AT LINE 7 COL 12
  115.                                                      WITH REVERSE-VIDEO.
  116.  
  117.  
  118.            DISPLAY "Numero de serie    :" AT LINE 1 COL 1 WITH
  119.                                                           REVERSE-VIDEO.
  120.            initialize DATOS-LIBRO                                                
  121.            ACCEPT LIBRO-ID WITH PROMPT UNDERLINE UPDATE AT LINE 1
  122.                                                        COL 25.
  123.            
  124.            IF LIBRO-ID EQUALS 000 MOVE "N" TO CONTINUAR-REG END-IF.
  125.  
  126.  
  127.            IF CONTINUAR-REG EQUALS "S"
  128.               PERFORM ABRIR-IO-ARCHIVO                                          
  129.               read REG-LIBROS end-read
  130.               if ESTA-REG THEN
  131.                   DISPLAY NOMBRE              AT LINE 2 COL 25
  132.                   DISPLAY EDITORIAL           AT LINE 3 COL 25
  133.                   DISPLAY ESTADO              AT LINE 4 COL 25      
  134.               end-if
  135.               DISPLAY "Numero de serie    :" AT LINE 1 COL 1
  136.               DISPLAY LIBRO-ID            AT LINE 1 COL 25
  137.  
  138.               DISPLAY "Nombre    :"     AT LINE 2 COL 1
  139.                                             WITH REVERSE-VIDEO
  140.               ACCEPT NOMBRE               AT LINE 2 COL 25
  141.               DISPLAY "Nombre:    "       AT LINE 2 COL 1
  142.               DISPLAY NOMBRE              AT LINE 2 COL 25
  143.  
  144.               DISPLAY "Editorial    :"  AT LINE 3 COL 1
  145.                                             WITH REVERSE-VIDEO
  146.               ACCEPT EDITORIAL            AT LINE 3 COL 25
  147.               DISPLAY "Editorial    :"    AT LINE 3 COL 1
  148.               DISPLAY EDITORIAL           AT LINE 3 COL 25
  149.  
  150.               DISPLAY "Estado    :"     AT LINE 4 COL 1
  151.                                             WITH REVERSE-VIDEO
  152.               ACCEPT ESTADO               AT LINE 4 COL 25
  153.               DISPLAY "Estado    :"       AT LINE 4 COL 1
  154.               DISPLAY ESTADO              AT LINE 4 COL 25
  155.      *************************************************************************
  156.    
  157.              if N-ESTA-REG then
  158.               WRITE DATOS-LIBRO end-write
  159.              else
  160.                REWRITE DATOS-LIBRO END-REWRITE
  161.              end-if    
  162.              if not ESTA-REG then
  163.                    PERFORM LIMPIAR-PANTALLA
  164.                    DISPLAY "ERROR AL REGISTRAR DATOS" AT LINE 1 COL 1
  165.                                            WITH BACKGROUND-COLOR 4
  166.              end-if
  167.             PERFORM CERRAR-ARCHIVO
  168.            END-IF.
  169.            
  170.  
  171.        VER-LIBROS.
  172.            PERFORM ABRIR-ARCHIVO-INPUT.
  173.            IF F-NOEXISTE-REG THEN
  174.                PERFORM LIMPIAR-PANTALLA
  175.                DISPLAY "ERROR, NO EXISTE UN ARCHIVO DE REGISTROS"
  176.                        WITH BACKGROUND-COLOR 4 AT LINE 1 COL 1
  177.  
  178.  
  179.  
  180.                DISPLAY "Presione ENTER para salir al menu"
  181.                                                AT LINE 7 COL 12 WITH
  182.                                                REVERSE-VIDEO
  183.                ACCEPT OPC AT LINE  10 COL 34
  184.            ELSE
  185.                PERFORM LIMPIAR-PANTALLA
  186.                INITIALIZE LIBRO-ID
  187.                START REG-LIBROS KEY IS >= LIBRO-ID END-START
  188.                READ REG-LIBROS NEXT RECORD END-READ
  189.                DISPLAY
  190.                "ID |TITULO            |EDITORIAL          |ESTADO     "
  191.                WITH REVERSE-VIDEO AT LINE 1 COL 1
  192.                PERFORM VARYING N FROM 02 BY 1 UNTIL FIN-REG
  193.                    DISPLAY DATOS-LIBRO AT LINE N COL 1
  194.                    READ REG-LIBROS NEXT RECORD END-READ
  195.                END-PERFORM
  196.                ADD 1 TO N
  197.                DISPLAY "Presione ENTER para salir al menu"
  198.                                                AT LINE N COL 1 WITH
  199.                                                REVERSE-VIDEO
  200.                ACCEPT OPC AT LINE N COL 34
  201.                PERFORM CERRAR-ARCHIVO
  202.            END-IF.
  203.  
  204.  
  205.        ELIMINAR-LIBRO.
  206.            PERFORM ABRIR-IO-ARCHIVO.
  207.            PERFORM LIMPIAR-PANTALLA.
  208.            MOVE SPACES TO DATOS-LIBRO
  209.  
  210.            DISPLAY "Indique por id el libro que desea eliminar:"
  211.            WITH REVERSE-VIDEO AT LINE 1 COL 1.
  212.            DISPLAY "Presione ENTER para salir al menu"
  213.            WITH REVERSE-VIDEO AT LINE 7 COL 12.
  214.                      
  215.            ACCEPT LIBRO-ID AT LINE 1 COL 46 WITH PROMPT UNDERLINE UPDATE.
  216.            
  217.            IF LIBRO-ID NOT EQUALS 000    
  218.            
  219.            PERFORM LIMPIAR-PANTALLA
  220.  
  221.            START REG-LIBROS KEY IS = LIBRO-ID
  222.            READ REG-LIBROS END-READ
  223.            IF ESTA-REG
  224.                DISPLAY
  225.                "ID |TITULO            |EDITORIAL         |ESTADO     "
  226.                                    WITH REVERSE-VIDEO AT LINE 1 COL 1
  227.                DISPLAY DATOS-LIBRO AT LINE 2 COL 1
  228.                DISPLAY "ELIMINAR(1)|VOLVER(0) :" AT LINE 5 COL 1
  229.                                                    WITH REVERSE-VIDEO
  230.                
  231.                ACCEPT ELIMINAR-OPC AT LINE 5 COL 25
  232.                EVALUATE ELIMINAR-OPC
  233.                    WHEN 1
  234.                    DISPLAY LIMPIAR-LINEA AT LINE 10 COL 1
  235.                    DELETE REG-LIBROS INVALID KEY
  236.                        DISPLAY "ERROR AL ELIMINAR" AT LINE 5 COL 1
  237.                    END-DELETE
  238.                    DISPLAY "REGISTRO ELIMINADO CON EXITO" AT LINE 5
  239.                                                 COL 1
  240.                                                 WITH BACKGROUND-COLOR 2
  241.                            ACCEPT OPC AT LINE 5 COL 29
  242.                    WHEN 0 PERFORM ELIMINAR-LIBRO
  243.            ELSE
  244.                DISPLAY "EL REGISTRO NO EXISTE" AT LINE 1 COL 1
  245.                                            WITH BACKGROUND-COLOR 4
  246.                            ACCEPT OPC AT LINE 1 COL 22
  247.            END-IF
  248.            
  249.            END-IF.
  250.            PERFORM CERRAR-ARCHIVO.
  251.            
  252.  
  253.        CREAR-ARCHIVO.
  254.            PERFORM ABRIR-IO-ARCHIVO
  255.            IF NOT F-NOEXISTE-REG THEN
  256.                PERFORM LIMPIAR-PANTALLA
  257.                DISPLAY "SE DETECTO UN ARCHIVO EXISTENTE, DE PROCEDER EL"
  258.                AT LINE 1 COL 1 WITH BACKGROUND-COLOR 6
  259.                " ARCHIVO ACTUAL SERA ELIMINADO" AT LINE 1 COL 48
  260.                                WITH BACKGROUND-COLOR 6
  261.                DISPLAY "ELIMINAR(1)|SALIR AL MENU(0) :" AT LINE 10 COL 1
  262.                                                    WITH REVERSE-VIDEO
  263.                ACCEPT ELIMINAR-OPC AT LINE 10 COL 31
  264.                EVALUATE ELIMINAR-OPC
  265.                    WHEN 1
  266.                    PERFORM CERRAR-ARCHIVO
  267.                    OPEN OUTPUT REG-LIBROS
  268.                    PERFORM CERRAR-ARCHIVO
  269.                    PERFORM LIMPIAR-PANTALLA
  270.                    DISPLAY "ARCHIVO CREADO CON EXITO."
  271.                                                WITH BACKGROUND-COLOR 2
  272.                    ACCEPT OPC AT LINE 1 COL 27
  273.                    WHEN 0 PERFORM CERRAR-ARCHIVO EXIT
  274.            ELSE
  275.                OPEN OUTPUT REG-LIBROS
  276.                CLOSE REG-LIBROS
  277.                PERFORM LIMPIAR-PANTALLA
  278.                DISPLAY "ARCHIVO CREADO CON EXITO."
  279.                                                WITH BACKGROUND-COLOR 2
  280.                ACCEPT OPC AT LINE 1 COL 27
  281.            END-IF.
  282.  
  283.        BUSCAR-LIBRO.
  284.            PERFORM LIMPIAR-PANTALLA.
  285.            PERFORM ABRIR-ARCHIVO-INPUT.
  286.            MOVE SPACES TO DATOS-LIBRO.
  287.            
  288.            IF ESTA-REG
  289.                DISPLAY "MENU DE BUSQUEDA" AT LINE 1 COL 1
  290.                                        WITH REVERSE-VIDEO
  291.                DISPLAY "(I)Busqueda por id" AT LINE 3 COL 1
  292.                DISPLAY "(N)Busqueda por nombre" AT LINE 4 COL 1
  293.                DISPLAY "(E)Busqueda por editorial" AT LINE 5 COL 1
  294.                DISPLAY "Ingrese opcion( )" AT LINE 7 COL 1
  295.                                        WITH REVERSE-VIDEO
  296.                ACCEPT BUSCAR-OPC AT LINE 7 COL 16
  297.                IF BUSCAR-OPC EQUALS "i" MOVE "I" TO BUSCAR-OPC END-IF
  298.                IF BUSCAR-OPC EQUALS "n" MOVE "N" TO BUSCAR-OPC END-IF
  299.                IF BUSCAR-OPC EQUALS "e" MOVE "E" TO BUSCAR-OPC END-IF
  300.                
  301.                EVALUATE BUSCAR-OPC
  302.                WHEN "I"
  303.                
  304.                WHEN "N"
  305.                
  306.                WHEN "E"
  307.                PERFORM BUSCAR-NOMBRE
  308.                END-EVALUATE
  309.                
  310.                
  311.                
  312.                
  313.                
  314.            ELSE
  315.                DISPLAY "ERROR, NO EXISTE UN ARCHIVO DE REGISTROS"
  316.                                  AT LINE 1 COL 1 WITH BACKGROUND-COLOR 4
  317.                ACCEPT OPC AT LINE 1 COL 43
  318.            END-IF.
  319.      *************************************************************************        
  320.      *BLOQUE DE CODIGO DE BUSQUEDAS
  321.      *************************************************************************        
  322.        BUSCAR-NOMBRE.
  323.              PERFORM LIMPIAR-PANTALLA.
  324.            PERFORM ABRIR-ARCHIVO-INPUT.
  325.            MOVE SPACES TO DATOS-LIBRO
  326.            DISPLAY "Titulo:   " AT LINE 2 COL 1 WITH REVERSE-VIDEO
  327.            DISPLAY "---------------------------------------------------"
  328.                                                AT LINE 3 COL 1.
  329.  
  330.            DISPLAY
  331.                "ID |TITULO            |EDITORIAL         |ESTADO     "
  332.                                    WITH REVERSE-VIDEO AT LINE 3 COL 1.
  333.            ACCEPT DESDE-NOMBRE AT LINE 2 COL 14.
  334.            MOVE DESDE-NOMBRE TO NOMBRE.
  335.            MOVE NOMBRE TO HASTA-NOMBRE.
  336.            START REG-LIBROS KEY IS >= NOMBRE END-START.
  337.            READ REG-LIBROS NEXT RECORD END-READ.
  338.            PERFORM VARYING N FROM 01 BY 1 UNTIL FIN-REG OR
  339.                                           NOMBRE > HASTA-NOMBRE
  340.                DISPLAY DATOS-LIBRO AT LINE 4 COL 1
  341.  
  342.                READ REG-LIBROS NEXT RECORD END-READ
  343.            END-PERFORM.
  344.                
  345.                ACCEPT OPC AT LINE 10 COL 1.
  346.            PERFORM CERRAR-ARCHIVO.
  347.      *************************************************************************
  348.        LIMPIAR-PANTALLA.
  349.            PERFORM VARYING N FROM 01 BY 1 UNTIL N>24
  350.                DISPLAY LIMPIAR AT LINE N COLUMN 1
  351.            END-PERFORM.
  352.                
  353.        ABRIR-ARCHIVO-INPUT.
  354.            OPEN INPUT REG-LIBROS.
  355.  
  356.        ABRIR-IO-ARCHIVO.
  357.            OPEN I-O REG-LIBROS.
  358.  
  359.        CERRAR-ARCHIVO.
  360.            CLOSE REG-LIBROS.
  361.            
JCantero is offline   Responder Con Cita
  #10
Antiguo 4 de agosto de 2023, 12:01
Marengo97
Forero Junior
Última Actividad 22.11.2023 00:42
Posts Posts: 26
Likes enviados Enviados: 5
Likes recibidos Recibidos: 0

Buenos dias Cantero, o buenas noches que aca esta por amanecer, si recien se me ocurrio la posibilidad de que el problema era el archivo...te explico, yo implemente las claves secundarias con un archivo YA PREVIAMENTE creado cuando solo utilizaba una MAIN KEY, o sea,LIBRO-ID, y jamas se me ocurrio que ese archivo previo entraria en conflicto si lo indexo con claves secundarias que previamente no declare en codigo, es decir los campos estaban pero no las llaves en el FILE CONTROL.....ahora funciona perfecto, no me la puedo creer.

Gracias por la paciencia
Marengo97 is offline   Responder Con Cita
Respuesta



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:03.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.