0
Hola soy nuevo en el foro como tambien un principiante en COBOL.
Estoy estudiando el lenguaje hace ya casi un mes y estoy intentando desarrollar este programita como forma de práctica y me he encontrado con varios problemas.
Lo que tiene que hacer el programa:
"Una compania de seguros tiene contratados a n vendedores. Cada vendedor realiza
multiples ventas a la semana. La politica de pagos de la compania es que cada vendedor
recibe un sueldo base más un 10% extra por comisiones de sus ventas. El gerente de la
compania desea saber, por un lado, cuanto dinero deber¡a pagar en la semana a cada
vendedor por concepto de comisiones de las ventas realizadas, y por otro lado, cua¡nto
deberia pagar a cada vendedor como sueldo total (sueldo base + comisiones). Para cada
vendedor ingresar cuanto es su sueldo base, cuantas ventas realizó y cuanto cobró por
cada venta."
Mi código (incompleto):El problema que es no saber como terminar el perform del parrafo BEGIN-OUTPUT en este caso especial ya que no me escribe los datos de cada empleado solo de uno, probe con contador, con "=Spaces" y el mismo comportamiento.COBOL Código:
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 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 999. 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. PROCEDURE DIVISION. BEGIN-OUTPUT. OPEN OUTPUT REG-VENDEDORES. DISPLAY "INGRESE DATOS SOLICITADOS". DISPLAY "INGRESE CANTIDAD TOTAL DE EMPLEADOS:". ACCEPT WS-TOTAL-EMPLEADOS. PERFORM INGRESO-DATOS-EMPLEADOS. PERFORM VARYING CONTADOR FROM 1 BY 1 UNTIL CONTADOR = WS-TOTAL-EMPLEADOS WRITE VENDEDORES FROM WS-VENDEDORES PERFORM INGRESO-DATOS-EMPLEADOS END-PERFORM. CLOSE REG-VENDEDORES. 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. PERFORM VARYING WS-CANTIDAD-VENTAS FROM 1 BY 1 UNTIL WS-CANTIDAD-VENTAS = 3 DISPLAY "INGRESE COBRO DE CADA VENTA:" ACCEPT WS-COBRO-VENTAS MOVE WS-COBRO-VENTAS TO WS-REGISTRO-COBROS(1) END-PERFORM.
Solo funciona si ingreso todos los datos de una tira "e.j nnnnMMMMEEEVV, y abajo un accept para ingresar tooodo el registro" y en perform lo condiciono con un "UNTIL...= SPACES", en ese caso si me registra cada empleado pero no tengo claro el por que esto sucede, no puedo entenderlo , capaz no entiendo los detalles de como escribe cobol en un archivo..
Y bueno ese es mi problema, tambien estaria muy agradecido si podrian darme algun consejo de como realizar el programa, Graciasss
Edit: Asi es como se lee el archivo .dat : 00120000003002 en vez de varios registros.
Marcadores