IDENTIFICATION DIVISION.
PROGRAM-ID. Mantenimiento-Clientes.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Clientes-Temporales.
05 Codigo PIC 9(4).
05 Nombre PIC X(30).
05 Direccion PIC X(50).
05 Telefono PIC X(15).
05 Limite PIC 9(9)V99.
05 Saldo PIC 9(9)V99.
01 Opcion PIC X.
01 Salir PIC X VALUE 'N'.
01 Registro-Encontrado PIC X VALUE 'N'.
01 Respuesta PIC X.
01 Cliente-Buscado.
05 Codigo-Buscar PIC 9(4).
01 Menu.
05 Lin1 PIC X(30) VALUE '1. Insertar cliente'.
05 Lin2 PIC X(30) VALUE '2. Consultar cliente'.
05 Lin3 PIC X(30) VALUE '3. Modificar cliente'.
05 Lin4 PIC X(30) VALUE '4. Eliminar cliente'.
05 Lin5 PIC X(30) VALUE '5. Salir'.
05 Lin6 PIC X(30) VALUE 'Seleccione una opcion:'.
PROCEDURE DIVISION.
Iniciar-Programa.
DISPLAY '*** Mantenimiento de Clientes ***'.
PERFORM Mostrar-Menu UNTIL Salir = 'S'.
Mostrar-Menu.
DISPLAY Menu.
ACCEPT Opcion.
PERFORM Elegir-Opcion.
Elegir-Opcion.
EVALUATE Opcion
WHEN '1'
PERFORM Insertar-Cliente
WHEN '2'
PERFORM Consultar-Cliente
WHEN '3'
PERFORM Modificar-Cliente
WHEN '4'
PERFORM Eliminar-Cliente
WHEN '5'
MOVE 'S' TO Salir
WHEN OTHER
DISPLAY 'Opcion invalida. Seleccione nuevamente.'.
Insertar-Cliente.
DISPLAY 'Ingrese los datos del cliente:'.
ACCEPT Codigo, Nombre, Direccion, Telefono, Limite, Saldo.
DISPLAY 'Cliente ingresado correctamente.'.
Consultar-Cliente.
DISPLAY 'Ingrese el codigo del cliente a consultar:'.
ACCEPT Codigo-Buscar.
PERFORM Buscar-Cliente.
IF Registro-Encontrado = 'S'
DISPLAY 'Cliente encontrado:' Codigo, Nombre, Direccion, Telefono, Limite, Saldo
ELSE
DISPLAY 'Cliente no encontrado.'.
Buscar-Cliente.
PERFORM Buscar-Registro
IF Registro-Encontrado = 'S'
MOVE 'S' TO Registro-Encontrado
ELSE
MOVE 'N' TO Registro-Encontrado.
Buscar-Registro.
READ Clientes-Temporales
AT END
MOVE 'N' TO Registro-Encontrado
NOT AT END
IF Codigo = Codigo-Buscar
MOVE 'S' TO Registro-Encontrado
END-IF.
Modificar-Cliente.
DISPLAY 'Ingrese el codigo del cliente a modificar:'.
ACCEPT Codigo-Buscar.
PERFORM Buscar-Cliente.
IF Registro-Encontrado = 'S'
DISPLAY 'Cliente encontrado. Ingrese los nuevos datos:'.
ACCEPT Nombre, Direccion, Telefono, Limite, Saldo.
DISPLAY 'Cliente modificado correctamente.'
ELSE
DISPLAY 'Cliente no encontrado.'.
Eliminar-Cliente.
DISPLAY 'Ingrese el codigo del cliente a eliminar:'.
ACCEPT Codigo-Buscar.
PERFORM Buscar-Cliente.
IF Registro-Encontrado = 'S'
DISPLAY '¿Esta seguro que desea eliminar este cliente? (S/N):'.
ACCEPT Respuesta.
IF Respuesta = 'S'
DELETE Clientes-Temporales
DISPLAY 'Cliente eliminado correctamente.'
ELSE
DISPLAY 'Operacion de eliminacion cancelada.'
END-IF
ELSE
DISPLAY 'Cliente no encontrado.'.
STOP RUN.