Ver Mensaje Individual
  #4
Antiguo 3 de febrero de 2023, 06:10
Marengo97
Forero Junior
Última Actividad 22.11.2023 00:42
Posts Posts: 26
Likes enviados Enviados: 5
Likes recibidos Recibidos: 0

.......

- - - Updated - - -

Citación del post de JCantero Ver Mensaje
Te modifico la fd de las tabla cobros. Lo hago asi porque a mi me gusta trabajar con la FD directamente.

Tambien el segundo perform para que pida y guarde los cobros solicitados.


Código COBOL:
  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              PIC 9(14).
  19.  
  20.        FD REG-VENTAS.
  21.        01 COB-VENTAS.
  22.            03 cobros PIC 9(5) occurs 100 times.
  23.  
  24.  
  25.        WORKING-STORAGE SECTION.
  26.        01 WS-VENDEDORES.
  27.            05 WS-EMPLEADO            PIC 999.
  28.            05 WS-SUELDO-BASE         PIC 9(5).
  29.            05 WS-CANTIDAD-VENTAS     PIC 999.
  30.        01 esto-deberia-estar-fuera.    
  31.            05 WS-TOTAL-EMPLEADOS     PIC 999.
  32.            05 WS-COBRO-VENTAS        PIC 9(5).
  33.        01 WS-TABLAS.
  34.            05 WS-REGISTRO-COBROS     PIC 9(5)
  35.                                      OCCURS 100 TIMES.
  36.        77 CONTADOR                   PIC 99 VALUE ZEROS.
  37.        77 indice                  PIC 999.
  38.  
  39.        PROCEDURE DIVISION.
  40.        BEGIN-OUTPUT.
  41.            OPEN OUTPUT REG-VENDEDORES.
  42.            open output reg-ventas.
  43.            DISPLAY "INGRESE DATOS SOLICITADOS".
  44.            DISPLAY "INGRESE CANTIDAD TOTAL DE EMPLEADOS:".
  45.            ACCEPT WS-TOTAL-EMPLEADOS.
  46.            PERFORM VARYING CONTADOR FROM 1 BY 1
  47.                            UNTIL CONTADOR > WS-TOTAL-EMPLEADOS
  48.              PERFORM INGRESO-DATOS-EMPLEADOS
  49.              WRITE VENDEDORES FROM WS-VENDEDORES
  50.              write cob-ventas end-write
  51.            END-PERFORM.
  52.            CLOSE  REG-VENDEDORES reg-ventas.
  53.            STOP RUN.
  54.  
  55.        INGRESO-DATOS-EMPLEADOS.
  56.          
  57.            DISPLAY "INGRESE NUMERO DE EMPLEADO:".
  58.            ACCEPT WS-EMPLEADO.
  59.            DISPLAY "INGRESE SUELDO BASE:".
  60.            ACCEPT WS-SUELDO-BASE.
  61.            DISPLAY "INGRESE CANTIDAD DE VENTAS REALIZADAS:".
  62.            ACCEPT WS-CANTIDAD-VENTAS.
  63.            initialize cob-ventas.
  64.            PERFORM VARYING indice FROM 1 BY 1
  65.                            UNTIL indice > WS-CANTIDAD-VENTAS
  66.                                  or indice = 100
  67.               DISPLAY "INGRESE COBRO DE CADA VENTA:"
  68.               ACCEPT WS-COBRO-VENTAS
  69.               MOVE WS-COBRO-VENTAS TO cobros(indice)
  70.            END-PERFORM.

Mira a ver y si no entiendes algo me lo dices.

Mejora--> en vez de guardar los 100 cobros, que ocupan mas espacio, lo mejor es guardar un registro con cada cobro de esta forma VVVNNNCCCCC siendo VVV el numero de vendedor, NNN el numero de cobro, CCCCC importe de cobro.

Pero bueno, para empezar no los llevabas mal. Animo ¡¡
Hola! muchas gracias pude avanzar mas en el programa gracias a la ayuda, aunque ahora me cruze con otro problema, presiento que es algo complejo para mi nivel realizar este programa ya me marea demasiado
Código COBOL:
  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.            05 EMPLEADOS              PIC 999.
  20.            05 SUELDO-BASE            PIC 9(5).
  21.            05 CANTIDAD-VENTAS        PIC 9.
  22.  
  23.        FD REG-VENTAS.
  24.        01 COBRO-VENTAS               PIC 9(5).
  25.  
  26.  
  27.        WORKING-STORAGE SECTION.
  28.        01 WS-VENDEDORES.
  29.            05 WS-EMPLEADO            PIC 999.
  30.            05 WS-SUELDO-BASE         PIC 9(5).
  31.            05 WS-CANTIDAD-VENTAS     PIC 9.
  32.  
  33.        01 WS-COBROS.
  34.            05 WS-COBRO-VENTA         PIC 9(5).
  35.            05 WS-NUM-EMPLEADO        PIC 99.
  36.  
  37.  
  38.  
  39.        01 WS-TABLAS.
  40.            05 WS-TABLA-VENTAS OCCURS 3 TIMES.
  41.                10 WS-TABLA-EMPLEADO   PIC 99.
  42.                10 WS-TABLA-COBRO      PIC 9(5).
  43.  
  44.        77 WS-SUM-VENTAS              PIC 99.
  45.        77 WS-CONTADOR                PIC 99 VALUE ZEROS.
  46.        77 WS-RECAUDACION             PIC 9(6).
  47.  
  48.  
  49.        PROCEDURE DIVISION.
  50.        BEGIN-OUTPUT.
  51.            OPEN OUTPUT REG-VENDEDORES.
  52.            DISPLAY "INGRESE DATOS SOLICITADOS".
  53.            PERFORM INGRESO-DATOS-EMPLEADOS.
  54.            PERFORM UNTIL WS-VENDEDORES EQUALS SPACES
  55.                WRITE VENDEDORES FROM WS-VENDEDORES
  56.                PERFORM INGRESO-DATOS-EMPLEADOS
  57.            END-PERFORM.
  58.  
  59.            DISPLAY "INGRESE N DE EMPLEADO Y COBROS DE CADA VENTA:"
  60.            PERFORM INGRESO-VENTAS WITH TEST AFTER
  61.                             UNTIL WS-CONTADOR EQUALS WS-SUM-VENTAS
  62.                MOVE WS-COBROS TO WS-TABLA-VENTAS(1)
  63.            CLOSE  REG-VENDEDORES.
  64.  
  65.  
  66.        BEGIN-REPORT.
  67.            OPEN INPUT REG-VENDEDORES.
  68.            READ REG-VENDEDORES AT END MOVE HIGH-VALUE TO VENDEDORES
  69.            END-READ.
  70.            PERFORM VARYING WS-TABLAS FROM 01 BY 1
  71.                            UNTIL WS-TABLAS GREATER THAN 3
  72.            IF WS-TABLA-EMPLEADO(1) = EMPLEADOS
  73.                ADD WS-TABLA-COBRO(1) TO WS-RECAUDACION
  74.                DISPLAY "RECAUDACION DEL EMPLEADO ",EMPLEADOS
  75.                         "ES IGUAL A:"WS-RECAUDACION
  76.            END-IF
  77.            READ REG-VENDEDORES AT END MOVE HIGH-VALUE TO VENDEDORES
  78.            END-READ
  79.            END-PERFORM.
  80.            CLOSE REG-VENDEDORES.
  81.            STOP RUN.
  82.  
  83.        INGRESO-DATOS-EMPLEADOS.
  84.            DISPLAY "EEE$$$$$V".
  85.            ACCEPT WS-VENDEDORES.
  86.            IF WS-VENDEDORES NOT EQUAL SPACES
  87.                ADD WS-CANTIDAD-VENTAS TO WS-SUM-VENTAS
  88.            END-IF.
  89.  
  90.        INGRESO-VENTAS.
  91.            ADD 1 TO WS-CONTADOR.
  92.            DISPLAY "VV$$$$$".
  93.            ACCEPT WS-COBROS.

Asi es como voy pero al realizar la ejecucion al llegar a la linea 73 el compilador me tira este error

Cita:
libcob: PROG-PAGOS-F.cbl: 73: 'WS-TABLA-COBRO' not numeric: ' '
WARNING - Implicit CLOSE of REG-VENDEDORES ('REG-MAESTRO.DAT')
Ya la verdad me marea mucho
Creo que deberia plantear esto en otro posteo pero me aclaraste varias cosas que recurro a tu ayuda, gracias.
Marengo97 is offline   Responder Con Cita