.......
- - - Updated - - -
Citación del post de
JCantero
|
❞
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:
IDENTIFICATION DIVISION. PROGRAM-ID. PROG-PAGOS-F. AUTHOR. LUCAS GALEANO. DATE-WRITTEN. 1/2/2023. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT REG-VENDEDORES ASSIGN TO "REG-MAESTRO.DAT" ORGANIZATION IS LINE SEQUENTIAL. SELECT REG-VENTAS ASSIGN TO "REG-VENTAS-MAESTRO.DAT" ORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD REG-VENDEDORES. 01 VENDEDORES PIC 9(14). FD REG-VENTAS. 01 COB-VENTAS. 03 cobros PIC 9(5) occurs 100 times. WORKING-STORAGE SECTION. 01 WS-VENDEDORES. 05 WS-EMPLEADO PIC 999. 05 WS-SUELDO-BASE PIC 9(5). 05 WS-CANTIDAD-VENTAS PIC 999. 01 esto-deberia-estar-fuera. 05 WS-TOTAL-EMPLEADOS PIC 999. 05 WS-COBRO-VENTAS PIC 9(5). 01 WS-TABLAS. 05 WS-REGISTRO-COBROS PIC 9(5) OCCURS 100 TIMES. 77 CONTADOR PIC 99 VALUE ZEROS. 77 indice PIC 999. PROCEDURE DIVISION. BEGIN-OUTPUT. OPEN OUTPUT REG-VENDEDORES. open output reg-ventas. DISPLAY "INGRESE DATOS SOLICITADOS". DISPLAY "INGRESE CANTIDAD TOTAL DE EMPLEADOS:". ACCEPT WS-TOTAL-EMPLEADOS. PERFORM VARYING CONTADOR FROM 1 BY 1 UNTIL CONTADOR > WS-TOTAL-EMPLEADOS PERFORM INGRESO-DATOS-EMPLEADOS WRITE VENDEDORES FROM WS-VENDEDORES write cob-ventas end-write END-PERFORM. CLOSE REG-VENDEDORES reg-ventas. STOP RUN. INGRESO-DATOS-EMPLEADOS. DISPLAY "INGRESE NUMERO DE EMPLEADO:". ACCEPT WS-EMPLEADO. DISPLAY "INGRESE SUELDO BASE:". ACCEPT WS-SUELDO-BASE. DISPLAY "INGRESE CANTIDAD DE VENTAS REALIZADAS:". ACCEPT WS-CANTIDAD-VENTAS. initialize cob-ventas. PERFORM VARYING indice FROM 1 BY 1 UNTIL indice > WS-CANTIDAD-VENTAS or indice = 100 DISPLAY "INGRESE COBRO DE CADA VENTA:" ACCEPT WS-COBRO-VENTAS MOVE WS-COBRO-VENTAS TO cobros(indice) 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:
IDENTIFICATION DIVISION.
PROGRAM-ID. PROG-PAGOS-F.
AUTHOR. LUCAS GALEANO.
DATE-WRITTEN. 1/2/2023.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT REG-VENDEDORES ASSIGN TO "REG-MAESTRO.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT REG-VENTAS ASSIGN TO "REG-VENTAS-MAESTRO.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD REG-VENDEDORES.
01 VENDEDORES.
05 EMPLEADOS PIC 999.
05 SUELDO-BASE PIC 9(5).
05 CANTIDAD-VENTAS PIC 9.
FD REG-VENTAS.
01 COBRO-VENTAS PIC 9(5).
WORKING-STORAGE SECTION.
01 WS-VENDEDORES.
05 WS-EMPLEADO PIC 999.
05 WS-SUELDO-BASE PIC 9(5).
05 WS-CANTIDAD-VENTAS PIC 9.
01 WS-COBROS.
05 WS-COBRO-VENTA PIC 9(5).
05 WS-NUM-EMPLEADO PIC 99.
01 WS-TABLAS.
05 WS-TABLA-VENTAS OCCURS 3 TIMES.
10 WS-TABLA-EMPLEADO PIC 99.
10 WS-TABLA-COBRO PIC 9(5).
77 WS-SUM-VENTAS PIC 99.
77 WS-CONTADOR PIC 99 VALUE ZEROS.
77 WS-RECAUDACION PIC 9(6).
PROCEDURE DIVISION.
BEGIN-OUTPUT.
OPEN OUTPUT REG-VENDEDORES.
DISPLAY "INGRESE DATOS SOLICITADOS".
PERFORM INGRESO-DATOS-EMPLEADOS.
PERFORM UNTIL WS-VENDEDORES EQUALS SPACES
WRITE VENDEDORES FROM WS-VENDEDORES
PERFORM INGRESO-DATOS-EMPLEADOS
END-PERFORM.
DISPLAY "INGRESE N DE EMPLEADO Y COBROS DE CADA VENTA:"
PERFORM INGRESO-VENTAS WITH TEST AFTER
UNTIL WS-CONTADOR EQUALS WS-SUM-VENTAS
MOVE WS-COBROS TO WS-TABLA-VENTAS(1)
CLOSE REG-VENDEDORES.
BEGIN-REPORT.
OPEN INPUT REG-VENDEDORES.
READ REG-VENDEDORES AT END MOVE HIGH-VALUE TO VENDEDORES
END-READ.
PERFORM VARYING WS-TABLAS FROM 01 BY 1
UNTIL WS-TABLAS GREATER THAN 3
IF WS-TABLA-EMPLEADO(1) = EMPLEADOS
ADD WS-TABLA-COBRO(1) TO WS-RECAUDACION
DISPLAY "RECAUDACION DEL EMPLEADO ",EMPLEADOS
"ES IGUAL A:"WS-RECAUDACION
END-IF
READ REG-VENDEDORES AT END MOVE HIGH-VALUE TO VENDEDORES
END-READ
END-PERFORM.
CLOSE REG-VENDEDORES.
STOP RUN.
INGRESO-DATOS-EMPLEADOS.
DISPLAY "EEE$$$$$V".
ACCEPT WS-VENDEDORES.
IF WS-VENDEDORES NOT EQUAL SPACES
ADD WS-CANTIDAD-VENTAS TO WS-SUM-VENTAS
END-IF.
INGRESO-VENTAS.
ADD 1 TO WS-CONTADOR.
DISPLAY "VV$$$$$".
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.