Ver Mensaje Individual
  #6
Antiguo 20 de marzo de 2023, 20:02
JCantero
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros 
Última Actividad 02.09.2026 00:15
Posts Posts: 442
Likes enviados Enviados: 167
Likes recibidos Recibidos: 269

@jorgeamedina2020, hablando de estilo de programación si me lo permites....

esto:
Código COBOL:
  1. MesAct 01 TOT-CANT   PIC S9(06)V999. 01 TOT-IMPO  PIC S9(10)V99 .
  2.                                      01 TOT-COST  PIC S9(10)V99 .
  3.                                      01 TOT-ICOM  PIC S9(10)V99 .
  4.                                      01 TOT-COST-SF  PIC S9(10)V99 .
  5. MesAnt 01 TOT-CANTT  PIC S9(06)V999. 01 TOT-IMPOO PIC S9(10)V99 .
  6.                                      01 TOT-COSTT PIC S9(10)V99 .
  7.                                      01 TOT-ICOMM PIC S9(10)V99 .
  8.                                      01 TOT-COSTT-SF PIC S9(10)V99 .

Son 5 grupos de 6 campos iguales (30 variables).
Eso yo lo meteria en una tabla. (occurs)

esto:

Código COBOL:
  1.   IF OPC = 02 MOVE "Vendedores  " TO MENS2.
  2.            IF OPC = 03 MOVE "Condiciones " TO MENS2.
  3.            IF OPC = 04 MOVE "Localidades " TO MENS2.
  4.            IF OPC = 05 MOVE "Provincias  " TO MENS2.
  5.            IF OPC = 06 MOVE "Zonas       " TO MENS2.
  6.            IF OPC = 07 MOVE "Clientes    " TO MENS2.
  7.            IF OPC = 08 MOVE "Proveedores " TO MENS2.
  8.            IF OPC = 09 MOVE "Marcas      " TO MENS2.
  9.            IF OPC = 10 MOVE "Rubros      " TO MENS2.

un evaluate.

esto que lo tienes repetido 20 veces con etiquetas diferentes:

Código COBOL:
  1. INA7.
  2.            MOVE ZEROS TO TEC. DISPLAY P-MODO. ACCEPT  P-MODO.
  3.            ACCEPT  TEC FROM ESCAPE KEY. IF T-ESC OR T-F4 GO INA6.
  4.            IF NOT T-RET GO INA7. IF MODO > 1 GO INA7.
  5.            DISPLAY P-MODO.

se hace un perform general con condiciones.

esto:
Código COBOL:
  1. Fech   INA4.
  2.            MOVE ZEROS TO TEC. DISPLAY P-FECH . ACCEPT  P-FECH .
  3.            ACCEPT  TEC FROM ESCAPE KEY. IF T-ESC OR T-F4 GO INA2.
  4.            IF NOT T-RET GO INA4.
  5.            MOVE D-FECH  TO A-FECHA.
  6.            IF A-DIA > 31 OR = ZEROS GO INA4.
  7.            IF A-MES > 12 OR = ZEROS GO INA4.
  8.            IF A-ANO < 1980 OR = ZEROS GO INA4.
  9.            MOVE H-FECH  TO A-FECHA.
  10.            IF A-DIA > 31 OR = ZEROS GO INA4.
  11.            IF A-MES > 12 OR = ZEROS GO INA4.
  12.            IF A-ANO < 1980 OR = ZEROS GO INA4.
  13.            DISPLAY P-FECH .
  14.            IF OPC NOT = 01
  15.               PERFORM 1S
  16.               GO INA6.

Lo tienes repetido un monton de veces. Pues lo mismo un perform a INA-GENERAL y quitas 100 lineas

O sea que hay que hacer cosas generales, con condiciones y no repetir siempre lo mismo.
JCantero is offline   Responder Con Cita