Resultados 1 al 7 de 7

Tema: COBOL problema con READ, status = 46

  1. #1
      Acabo de llegar...
    M

    Registrado
    febrero de 2023
    Ubicación
    Buenos Aires
    Edad
    26
    Mensajes
    26
    Última visita
    22.11.2023

    Agradecimientos
     
    Recibidos
    0
    Enviados
    5

    Citaciones y menciones
     
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Predeterminado COBOL problema con READ, status = 46

    Hola comunidad, necesito ayuda.
    Recibo un error que luce así en consola:
    Sin título.png
    Mi pregunta es por que sucede esto y como solucionarlo, claramente hay un error que estoy cometiendo pero no puedo verlo , y cada que vez que ejecuto el programa no importa que haga siempre me repite una linea con valor de " " (espacios) en RECAUDACION DE EMPLEADO..., capaz esta relacionado al error que estoy teniendo.
    Y el IMPLICIT CLOSE tambien me tiene atascado.
    Ojala puedan ayudarme

    Codigo:
    COBOL Código:
    1. IDENTIFICATION DIVISION.
    2.        PROGRAM-ID.                PROG-PAGOS-F.
    3.        AUTHOR.                    LUCAS GALEANO.
    4.        DATE-WRITTEN.              1/2/2023.
    5.  
    6.        ENVIRONMENT DIVISION.
    7.        INPUT-OUTPUT SECTION.
    8.        FILE-CONTROL.
    9.            SELECT REG-VENDEDORES ASSIGN TO "REG-MAESTRO.DAT"
    10.                ORGANIZATION IS LINE SEQUENTIAL.
    11.  
    12.            SELECT REG-VENTAS     ASSIGN TO "REG-VENTAS-MAESTRO.DAT"
    13.                ORGANIZATION IS LINE SEQUENTIAL.
    14.  
    15.        DATA DIVISION.
    16.        FILE SECTION.
    17.        FD REG-VENDEDORES.
    18.        01 VENDEDORES.
    19.            88 FIN-DEL-ARCHIVO        VALUE HIGH-VALUE.
    20.            05 EMPLEADO               PIC 9(2).
    21.            05 SUELDO-BASE            PIC 9(5).
    22.            05 CANTIDAD-VENTAS        PIC 9.
    23.            05 TOTAL-RECAUDACION      PIC 9(5) VALUE ZEROS.
    24.            
    25.  
    26.        FD REG-VENTAS.
    27.        01 COBRO-VENTAS.
    28.            05 VENDEDOR              PIC 9(2) OCCURS 100 TIMES.
    29.  
    30.        WORKING-STORAGE SECTION.
    31.        01 WS-VENDEDORES.
    32.            05 WS-EMPLEADO            PIC 9(2).
    33.            05 WS-SUELDO-BASE         PIC 9(5).
    34.            05 WS-CANTIDAD-VENTAS     PIC 9.
    35.            05 WS-TOTAL-RECAUDACION   PIC 9(5).
    36.  
    37.  
    38.        77 WS-PRECIO-PRODUCTO         PIC 9(5).
    39.        77 WS-TOTAL-EMPLEADOS         PIC 99.
    40.        77 WS-CONTADOR                PIC 99 VALUE ZEROS.
    41.        77 WS-INDICE                  PIC 99.
    42.  
    43.  
    44.  
    45.        PROCEDURE DIVISION.
    46.        GO TO BEGIN-INPUT.
    47.        BEGIN-OUTPUT.
    48.            OPEN OUTPUT REG-VENDEDORES.
    49.            OPEN OUTPUT REG-VENTAS.
    50.            DISPLAY "INGRESE DATOS SOLICITADOS".
    51.            DISPLAY " ".
    52.            DISPLAY "INGRESE TOTAL DE EMPLEADOS DE LA COMPANIA".
    53.            ACCEPT WS-TOTAL-EMPLEADOS.
    54.            PERFORM VARYING WS-CONTADOR FROM 01 BY 1
    55.                                  UNTIL WS-CONTADOR > WS-TOTAL-EMPLEADOS
    56.                PERFORM INGRESO-DATOS
    57.                WRITE VENDEDORES FROM WS-VENDEDORES
    58.                WRITE COBRO-VENTAS
    59.                END-WRITE
    60.                MOVE ZEROS TO WS-TOTAL-RECAUDACION
    61.            END-PERFORM.
    62.            DISPLAY COBRO-VENTAS
    63.            DISPLAY VENDEDORES
    64.            CLOSE REG-VENDEDORES.
    65.            CLOSE REG-VENTAS.
    66.          
    67.            
    68.        BEGIN-INPUT.
    69.            OPEN INPUT REG-VENDEDORES.
    70.            OPEN INPUT REG-VENTAS.
    71.            READ REG-VENDEDORES AT END SET FIN-DEL-ARCHIVO TO TRUE
    72.            END-READ
    73.            PERFORM VARYING WS-INDICE FROM 01 BY 1
    74.                              UNTIL VENDEDOR(WS-INDICE) > EMPLEADO
    75.                            
    76.            DISPLAY "RECAUDACION DE LA SEMANA DE EMPLEADO ",EMPLEADO
    77.                                   "ES: ",TOTAL-RECAUDACION
    78.            READ REG-VENDEDORES AT END SET FIN-DEL-ARCHIVO TO TRUE
    79.            END-READ
    80.            END-PERFORM.
    81.            CLOSE REG-VENDEDORES REG-VENTAS.
    82.            STOP RUN.
    83.  
    84.        INGRESO-DATOS.
    85.            DISPLAY "INGRESE NUMERO DE EMPLEADO:".
    86.            ACCEPT WS-EMPLEADO.
    87.            DISPLAY "INGRESE SUELDO BASE:".
    88.            ACCEPT WS-SUELDO-BASE.
    89.            DISPLAY "INGRESE CANTIDAD DE VENTAS REALIZADAS:".
    90.            ACCEPT WS-CANTIDAD-VENTAS.
    91.            INITIALIZE COBRO-VENTAS
    92.               PERFORM VARYING WS-INDICE FROM 01 BY 1 UNTIL
    93.                            WS-INDICE > WS-CANTIDAD-VENTAS
    94.            DISPLAY "PRECIO DEL PRODUCTO:"
    95.            ACCEPT WS-PRECIO-PRODUCTO
    96.            ADD WS-PRECIO-PRODUCTO    TO WS-TOTAL-RECAUDACION
    97.            END-PERFORM.
    98.            MOVE WS-EMPLEADO          TO VENDEDOR(WS-INDICE).
    99.  
    100.  
    101.  
    102.      *Una compañía de seguros tiene contratados a n vendedores. Cada vendedor realiza
    103.      *múltiples ventas a la semana. La política de pagos de la compañía es que cada vendedor
    104.      *recibe un sueldo base más un 10% extra por comisiones de sus ventas. El gerente de la
    105.      *compañía desea saber, por un lado, cuánto dinero deberá pagar en la semana a cada
    106.      *vendedor por concepto de comisiones de las ventas realizadas, y por otro lado, cuánto
    107.      *deberá pagar a cada vendedor como sueldo total (sueldo base + comisiones). Para cada
    108.      *vendedor ingresar cuanto es su sueldo base, cuantas ventas realizó y cuanto cobró por
    109.      *cada venta.

    0 Not allowed!

  2. #2
      Acabo de llegar...
    M

    Registrado
    febrero de 2023
    Ubicación
    Buenos Aires
    Edad
    26
    Mensajes
    26
    Última visita
    22.11.2023

    Agradecimientos
     
    Recibidos
    0
    Enviados
    5

    Citaciones y menciones
     
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Predeterminado

    EDIT = Ignoren el "Go to begin-imput" eso solo lo utiilizo para testear el parrafo "BEGIN-IMPUT" ignorando el primer parrafo.

    0 Not allowed!

  3. #3
      Junior
    A

    Registrado
    febrero de 2015
    Ubicación
    Montevideo
    Edad
    65
    Mensajes
    31
    Última visita
    29.04.2024

    Agradecimientos
     
    Recibidos
    18
    Enviados
    4

    Citaciones y menciones
     
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Predeterminado

    Hola, como están?

    Por lo que veo estás leyendo 2 veces (2 registros), y poniendo una llave si llega al fin.
    Pero no preguntás si llega al fin (FIN-DEL-ARCHIVO)
    El error 46 en si es que estás intentando leer más allá del fin del archivo,

    espero que te sea útil.
    saludos
    Armando

    0 Not allowed!

  4. #4
      Acabo de llegar...
    M

    Registrado
    febrero de 2023
    Ubicación
    Buenos Aires
    Edad
    26
    Mensajes
    26
    Última visita
    22.11.2023

    Agradecimientos
     
    Recibidos
    0
    Enviados
    5

    Citaciones y menciones
     
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Predeterminado

    Honestamente no se como resolverlo, probe quitando el read fuera del Perform Varying...y genera un loop infinito, si saco el de dentro, me repite el status = 46...tambien probe con Set vendedores to high-values y tampoco funciona.

    0 Not allowed!

  5. #5
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,290
    Última visita
    Hoy a las 15:46

    Agradecimientos
     
    Recibidos
    1,038
    Enviados
    888

    Citaciones y menciones
     
    Mentioned
    104 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    31 Post(s)
    Poder de Reputación
    10

    Predeterminado
    ¡Solución!1 usuarios han marcado el post como Solución

    @Marengo97,

    COBOL Código:
    1.           PERFORM VARYING WS-INDICE FROM 01 BY 1
    2.                              UNTIL VENDEDOR(WS-INDICE) > EMPLEADO
    3.                              OR FIN-DEL-ARCHIVO

    0 Not allowed!
    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

  6. #6
      Acabo de llegar...
    M

    Registrado
    febrero de 2023
    Ubicación
    Buenos Aires
    Edad
    26
    Mensajes
    26
    Última visita
    22.11.2023

    Agradecimientos
     
    Recibidos
    0
    Enviados
    5

    Citaciones y menciones
     
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Predeterminado

    Eres un genio, muchisimas gracias me funciono!!
    Por que funciono? soy principiante en cobol y cosas basicas aun no las entiendo al 100%

    0 Not allowed!

  7. #7
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,290
    Última visita
    Hoy a las 15:46

    Agradecimientos
     
    Recibidos
    1,038
    Enviados
    888

    Citaciones y menciones
     
    Mentioned
    104 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    31 Post(s)
    Poder de Reputación
    10

    Predeterminado

    @Marengo97, no te preocupes, ya irás cogiéndole el truco

    En el bucle te basabas sólo en el contador, como te ha dicho @Armando, el File-Status 46 significa lectura después de haber llegado ya al último registro del fichero.
    Con lo cual, si te fijas en la condición, la única manera de que se diera el caso de FS=46 era que la condición VENDEDOR(WS-INDICE) > EMPLEADO no se haya cumplido aún pero que ya hayas llegado al último registro del fichero que estás leyendo.

    Controlar siempre el fin del fichero es algo que tienes que tatuarte en la mente para cada programa que crees y/o modifiques.

    0 Not allowed!
    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

Información de Tema

Usuarios Viendo este Tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Temas Similares

  1. [Compilador] PowerCobol Status 30 - Problema
    Por Joseg en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 7
    Último Mensaje: 01.04.2022, 19:17
  2. [Duda] Problema con caracteres especiales al postear
    Por DestinedBroken en el foro CobolForo.es
    Respuestas: 2
    Último Mensaje: 09.02.2022, 10:04
  3. [Sintaxis] Problema con scalable
    Por drvedia1981 en el foro Fujitsu COBOL
    Respuestas: 3
    Último Mensaje: 21.07.2021, 00:01
  4. [Herramienta] Urgente: Status 98,9 RM-COBOL
    Por joaoalpande en el foro RM/COBOL
    Respuestas: 25
    Último Mensaje: 09.01.2021, 05:38
  5. [Componente] Problema con ComboBox
    Por Josber en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 3
    Último Mensaje: 03.03.2015, 21:18

Etiquetas para este Tema

Marcadores

Marcadores

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •