@jorgeamedina2020, hablando de estilo de programación si me lo permites....
esto:
Código COBOL:
MesAct 01 TOT-CANT PIC S9(06)V999. 01 TOT-IMPO PIC S9(10)V99 .
01 TOT-COST PIC S9(10)V99 .
01 TOT-ICOM PIC S9(10)V99 .
01 TOT-COST-SF PIC S9(10)V99 .
MesAnt 01 TOT-CANTT PIC S9(06)V999. 01 TOT-IMPOO PIC S9(10)V99 .
01 TOT-COSTT PIC S9(10)V99 .
01 TOT-ICOMM PIC S9(10)V99 .
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:
IF OPC = 02 MOVE "Vendedores " TO MENS2.
IF OPC = 03 MOVE "Condiciones " TO MENS2.
IF OPC = 04 MOVE "Localidades " TO MENS2.
IF OPC = 05 MOVE "Provincias " TO MENS2.
IF OPC = 06 MOVE "Zonas " TO MENS2.
IF OPC = 07 MOVE "Clientes " TO MENS2.
IF OPC = 08 MOVE "Proveedores " TO MENS2.
IF OPC = 09 MOVE "Marcas " TO MENS2.
IF OPC = 10 MOVE "Rubros " TO MENS2.
un evaluate.
esto que lo tienes repetido 20 veces con etiquetas diferentes:
Código COBOL:
INA7.
MOVE ZEROS TO TEC. DISPLAY P-MODO. ACCEPT P-MODO.
ACCEPT TEC FROM ESCAPE KEY. IF T-ESC OR T-F4 GO INA6.
IF NOT T-RET GO INA7. IF MODO > 1 GO INA7.
DISPLAY P-MODO.
se hace un perform general con condiciones.
esto:
Código COBOL:
Fech INA4.
MOVE ZEROS TO TEC. DISPLAY P-FECH . ACCEPT P-FECH .
ACCEPT TEC FROM ESCAPE KEY. IF T-ESC OR T-F4 GO INA2.
IF NOT T-RET GO INA4.
MOVE D-FECH TO A-FECHA.
IF A-DIA > 31 OR = ZEROS GO INA4.
IF A-MES > 12 OR = ZEROS GO INA4.
IF A-ANO < 1980 OR = ZEROS GO INA4.
MOVE H-FECH TO A-FECHA.
IF A-DIA > 31 OR = ZEROS GO INA4.
IF A-MES > 12 OR = ZEROS GO INA4.
IF A-ANO < 1980 OR = ZEROS GO INA4.
DISPLAY P-FECH .
IF OPC NOT = 01
PERFORM 1S
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.