IDENTIFICATION DIVISION.
PROGRAM-ID. ZUN01.
AUTHOR. *** Roger Morales ***.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. RMC.
OBJECT-COMPUTER. RMC.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
COPY "TABLA.SL".
DATA DIVISION.
FILE SECTION.
COPY "TABLA.FD".
WORKING-STORAGE SECTION.
01 PT1.
03 FILLER PIC X(06) VALUE "Grupo".
03 FILLER PIC X(3) VALUE SPACES.
03 FILLER PIC X(45) VALUE "Identificacion".
03 FILLER PIC XX VALUE SPACES.
03 FILLER PIC X(15) VALUE "Abreviatura".
03 FILLER PIC X(6) VALUE "Cant. ".
77 A1 PIC 99 VALUE 0.
77 TIPO PIC X.
77 TIP PIC 9(3).
77 T-P PIC ZZZ.
77 CANT PIC 9(6)V99 VALUE 0.
77 CANT-I PIC ZZ,ZZZ.
77 COND PIC 9(3).
77 OPCION PIC X.
77 KK PIC X.
77 SI PIC X.
77 II PIC X.
77 Z PIC 99 VALUE 0.
77 ZZ PIC 99 VALUE 0.
77 X PIC 9 VALUE 0.
77 H PIC X.
77 V PIC X.
77 SD1 PIC X.
77 L PIC 99 VALUE 0.
77 ID1 PIC X.
77 LS PIC 99.
77 LI PIC 99.
77 LSL PIC 99.
77 LIL PIC 99.
77 CS PIC 99.
77 CI PIC 99.
77 CS1 PIC 99.
77 XX PIC 99 VALUE 0.
77 VEZ PIC 99 VALUE 0.
77 LN PIC 99 VALUE 0.
77 LNN PIC 99 VALUE 0.
77 CLNI PIC 99.
77 CLNS PIC 99.
77 CDISP PIC 99.
77 CN PIC 99.
77 CIN PIC 99.
77 CIC PIC 99.
77 EXC PIC 999.
77 CTROL PIC 99.
77 NOD1 PIC 99.
77 RLN PIC 99.
77 BLN PIC 99.
77 RDI PIC 99.
77 FA PIC X.
77 CR PIC 99 VALUE 0.
77 RC PIC 99 VALUE 0.
77 LR PIC 99 VALUE 0.
77 LD PIC 99 VALUE 0.
77 SW PIC X.
77 SW1 PIC X.
77 SW2 PIC 99.
77 DD PIC X(30) VALUE SPACES.
77 CIA PIC X(20) VALUE SPACES.
77 C1 PIC ZZZZZZZZZZ.ZZ.
77 C2 PIC ZZ.ZZZ.
77 CONT PIC 99.
77 AA PIC 99.
77 BB PIC 99.
77 YEAR PIC 999.
77 YEAR1 PIC 999.
77 CARA PIC X.
77 CADENA PIC X(8).
77 MDES PIC 9(12).99.
77 RAYA PIC X(80) VALUE ALL H"CD".
77 GYB PIC X(55) VALUE
"FCOLOR=WHITE,BCOLOR=BLUE,BORDER=WHITE".
77 WWW PIC X(55) VALUE
"FCOLOR=WHITE,BCOLOR=RED,BORDER=WHITE".
77 ZZZ PIC X(55) VALUE
"FCOLOR=BLACK,BCOLOR=WHITE,BORDER=WHITE".
77 XXX PIC X(55) VALUE
"FCOLOR=WHITE,BCOLOR=BLUE,BORDER=CYAN".
01 MENU.
03 MENUS OCCURS 8 TIMES PIC X(25).
01 MENU1.
03 MENUX OCCURS 8 TIMES PIC X(25).
PROCEDURE DIVISION.
INI. OPEN I-O TABLA.
MOVE 99 TO TIPO-T. MOVE 01 TO COND-T.
READ TABLA INVALID KEY MOVE SPACES TO CIA
CLOSE TABLA GO INICIO.
MOVE NOMBRE-T TO CIA.
CLOSE TABLA.
OPEN I-O TABLA.
INICIO.
MOVE " Creacion de Tipos " TO MENUS(1).
MOVE " Consultas " TO MENUS(2).
MOVE " Reporte de Tablas " TO MENUS(3).
MOVE " Salida al menu " TO MENUS(4).
CRT1.
DISPLAY CIA LINE 1 POSITION 1 ERASE CONTROL XXX.
DISPLAY ALL H"C4" LINE 2 POSITION 1 SIZE 80.
DISPLAY "OPCIONES" LINE 7 POSITION 17 REVERSE.
MOVE 8 TO LS. MOVE 07 TO CS.
MOVE 18 TO LI. MOVE 33 TO CI. MOVE "D" TO TIPO.
MOVE 8 TO LNN.
PERFORM LIMPIA1 10 TIMES.
PERFORM MARCO.
MOVE 1 TO Z ZZ. MOVE 10 TO LN LNN.
PERFORM DISPLA 4 TIMES.
R-PAN.
MOVE 16 TO LN MOVE 4 TO CTROL Z.
IF SW = 1 MOVE LR TO LN MOVE CR TO Z.
DISPLAY MENUS(Z) LINE LN POSITION 8 REVERSE.
IF SW = 1 MOVE 13 TO XX GO CNT.
AC1.
ACCEPT X LINE LN POSITION 8 NO BEEP OFF
ON EXCEPTION XX PERFORM CNT GO AC1.
CNT.
IF XX = 58 GO INICIO.
IF XX = 53 ADD 2 TO LN ADD 1 TO Z
PERFORM BARRA.
IF XX = 53 COMPUTE LN = LN - 2
SUBTRACT 1 FROM Z
PERFORM BARR ADD 2 TO LN ADD 1 TO Z.
IF XX = 52 SUBTRACT 2 FROM LN SUBTRACT 1 FROM Z
PERFORM BARRA.
IF XX = 52 ADD 2 TO LN ADD 1 TO Z PERFORM BARR
SUBTRACT 1 FROM Z
COMPUTE LN = LN - 2.
IF XX = 27 GO SUB-CUADRO.
IF XX = 13 GO SUB-CUADRO.
IF LN = 18 MOVE 1 TO Z MOVE 10 TO LN.
IF Z = 0 MOVE 4 TO Z MOVE 16 TO LN.
BARR.
IF Z > 4 MOVE 1 TO Z MOVE 10 TO LN.
IF LN < 10 MOVE 4 TO Z MOVE 16 TO LN.
DISPLAY MENUS(Z) LINE LN POSITION 8.
BARRA.
IF LN < 10 MOVE 4 TO Z MOVE 16 TO LN.
IF Z > 4 MOVE 1 TO Z MOVE 10 TO LN.
DISPLAY MENUS(Z) LINE LN POSITION 8 REVERSE.
SUB-CUADRO.
MOVE LN TO LR. MOVE Z TO CR.
IF LN = 16 CLOSE TABLA GO EXIT-P.
IF LN = 10 GO CREA.
IF LN = 12 GO CONSULTA.
IF LN = 14 DISPLAY " " CONTROL GYB CLOSE TABLA
CALL "zun01a.cob" CANCEL "zun01a.cob"
GO INI.
GO INICIO.
CREA.
DISPLAY "TIPO:" LINE 2 POSITION 1 ERASE.
DISPLAY ALL H"C4" LINE 3 POSITION 1 SIZE 80.
DISPLAY ALL H"C4" LINE 22 POSITION 1 SIZE 80.
ACCEPT TIP LINE 2 POSITION 7 PROMPT H"B0" ECHO NO BEEP.
IF TIP = 0 GO INICIO.
MOVE TIP TO TIPO-T.
MOVE 0 TO COND-T SW1.
MOVE 6 TO L.
READ TABLA INVALID KEY MOVE 1 TO SW1 GO NUEVO.
DISPLAY NOMBRE-T LINE 2 POSITION 15.
NUEVO.
DISPLAY PT1 LINE 4 POSITION 1
DISPLAY ALL H"C4" LINE 5 POSITION 1 SIZE 80.
IF SW1 = 1 GO A-NOMBRE.
A-COND.
ACCEPT COND LINE L POSITION 1 PROMPT H"B1" LOW ECHO NO BEEP.
*****IF COND = 0 GO CREA.
MOVE COND TO COND-T.
READ TABLA INVALID KEY GO A-NOMBRE.
DISPLAY NOMBRE-T LINE L POSITION 10.
DISPLAY ABRE-T LINE L POSITION 55.
MOVE CANT-T TO CANT-I.
DISPLAY CANT-I LINE L POSITION 70.
DISPLAY SIT-T LINE L POSITION 80.
MOD.
DISPLAY "MDFCN=(M) ELIMINAR =(B) CONTINUA=(ENTER)"
LINE 23 POSITION 1 REVERSE.
ACCEPT OPCION LINE 23 POSITION 50 CONTROL "UPPER"
PROMPT H"B1" ECHO NO BEEP.
IF OPCION = "B"
DELETE TABLA INVALID KEY STOP "NO BORRA".
IF OPCION = "B"
DISPLAY "Eliminado" LINE L POSITION 70 REVERSE.
IF OPCION = "M" MOVE 2 TO SW1 GO A-NOMBRE.
ADD 1 TO L.
IF L > 21 PERFORM LIMP 16 TIMES.
GO CREA.
A-NOMBRE.
IF SW1 NOT = 2
ACCEPT NOMBRE-T LINE L CONTROL "UPPER"
POSITION 10 PROMPT "_" ECHO NO BEEP LOW.
IF SW1 = 2
ACCEPT NOMBRE-T LINE L POSITION 10 UPDATE NO BEEP LOW.
IF NOMBRE-T = " " AND SW1 = 0 GO NUEVO.
IF NOMBRE-T = " " AND SW1 = 1 GO CREA.
IF SW1 NOT = 2
ACCEPT ABRE-T LINE L POSITION 55 PROMPT "_"
CONTROL "UPPER" ECHO NO BEEP LOW.
IF SW1 = 2
ACCEPT ABRE-T LINE L POSITION 55 UPDATE NO BEEP LOW.
ACCEPT CANT LINE L POSITION 70 PROMPT "-".
MOVE CANT TO CANT-I CANT-T.
DISPLAY CANT-I LINE L POSITION 70.
ACCEPT SIT-T LINE L POSITION 80 CONVERT PROMPT H"B2" ECHO.
IF SW1 = 2 MOVE 0 TO SW1 REWRITE TABLA-REC
INVALID KEY STOP "NO REGRABA"
ELSE
WRITE TABLA-REC INVALID KEY STOP "NO GRABA".
IF SW1 = 1 GO CREA.
ADD 1 TO L.
IF L > 21 PERFORM LIMP 16 TIMES.
GO A-COND.
CONSULTA.
DISPLAY "-- C O N S U L T A --" LINE 3 POSITION 20 BLINK
ERASE.
DISPLAY ALL H"C4" LINE 4 POSITION 1 SIZE 80
ALL H"C4" LINE 6 POSITION 1 SIZE 80
ALL H"C4" LINE 23 POSITION 1 SIZE 80.
DISPLAY PT1 LINE 5 POSITION 1.
MOVE 7 TO L.
CLOSE TABLA.
OPEN I-O TABLA.
LEE.
READ TABLA NEXT AT END ACCEPT KK LINE 24 POSITION
79 GO INICIO.
MOVE TIPO-T TO T-P.
DISPLAY T-P LINE L POSITION 1 LOW.
DISPLAY "." LINE L POSITION 4 LOW.
DISPLAY COND-T LINE L POSITION 5 CONVERT LOW.
DISPLAY NOMBRE-T LINE L POSITION 10 LOW.
DISPLAY ABRE-T LINE L POSITION 55 LOW.
MOVE CANT-T TO CANT-I.
DISPLAY CANT-I LINE L POSITION 70 LOW.
IF COND-T = 0
DISPLAY T-P LINE L POSITION 1
"." LINE L POSITION 4
COND-T LINE L POSITION 5 CONVERT
NOMBRE-T LINE L POSITION 10
ABRE-T LINE L POSITION 55.
ADD 1 TO L.
IF L > 22 DISPLAY "Continua (Enter) No (N)"
LINE 24 POSITION 50
ACCEPT KK LINE 24 POSITION 79 CONTROL "UPPER".
IF L > 22 AND KK = "N" GO INICIO.
IF L > 22 PERFORM LIMP 16 TIMES MOVE 7 TO L.
GO LEE.
LIMP.
SUBTRACT 1 FROM L.
DISPLAY SPACES LINE L POSITION 1 SIZE 80.
MARCO.
IF TIPO = "S" OR TIPO = "s"
MOVE H"DA" TO SI MOVE H"C4" TO H MOVE H"BF" TO SD1
MOVE H"C0" TO II MOVE H"B3" TO V MOVE H"D9" TO ID1.
IF TIPO = "D" OR TIPO = "d"
MOVE H"C9" TO SI MOVE H"CD" TO H MOVE H"BB" TO SD1
MOVE H"C8" TO II MOVE H"BA" TO V MOVE H"BC" TO ID1.
COMPUTE A1 = CS - CI.
PERFORM RAYAS.
IF LS < 1 OR LS > 24 GO ERROR-RANGO.
IF LI < 1 OR LS > 24 GO ERROR-RANGO.
IF CS < 1 OR CS > 80 GO ERROR-RANGO.
IF CI < 1 OR CI > 80 GO ERROR-RANGO.
DISPLAY SI LINE LS POSITION CS.
DISPLAY SD1 LINE LS POSITION CI.
DISPLAY II LINE LI POSITION CS.
DISPLAY ID1 LINE LI POSITION CI.
MOVE CS TO CS1.
*****PERFORM RAYAS UNTIL CS = ( CI - 1 ).
MOVE CS1 TO CS.
PERFORM LINEAS UNTIL LS = ( LI - 1 ).
RAYAS.
DISPLAY RAYA LINE LS POSITION CS SIZE A1.
DISPLAY RAYA LINE LI POSITION CS SIZE A1.
LINEAS.
ADD 1 TO LS.
DISPLAY V LINE LS POSITION CS.
DISPLAY V LINE LS POSITION CI.
ERROR-RANGO.
DISPLAY "ERROR EN RANGO DEL MARCO" LINE 10 POSITION 20
REVERSE BLINK.
DISPLA.
DISPLAY MENUS(Z) LINE LN POSITION 8.
ADD 1 TO Z. ADD 2 TO LN.
DISPLA1.
DISPLAY MENUX(ZZ) LINE LNN POSITION 46.
ADD 1 TO ZZ. ADD 2 TO LNN.
DISP1.
DISPLAY H"C4C4" LINE LN POSITION 34.
IF LN = LNN DISPLAY H"C4" LINE LN POSITION 36.
IF LN < LNN DISPLAY H"BF" LINE LN POSITION 36.
IF LN > LNN DISPLAY H"D9" LINE LN POSITION 36.
DISP2.
IF LN < LNN ADD 1 TO RLN.
IF LN > LNN SUBTRACT 1 FROM RLN.
DISPLAY H"B3" LINE RLN POSITION 36.
DISP22.
ADD 1 TO RDI.
COMPUTE RLN = RLN - 1.
DISPLAY H"B3" LINE RLN POSITION 36.
DISP3.
IF LN = LNN DISPLAY H"C4" LINE LNN POSITION 36.
IF LN > LNN DISPLAY H"DA" LINE LNN POSITION 36.
IF LN < LNN DISPLAY H"C0" LINE LNN POSITION 36.
DISPLAY H"C4C4C4C4C4C43E" LINE LNN POSITION 37.
LIMPIA.
DISPLAY SPACES LINE LNN POSITION 36 SIZE 08.
SUBTRACT 1 FROM LNN.
LIMPIA1.
DISPLAY SPACES LINE LNN POSITION CS SIZE 27.
ADD 1 TO LNN.
LIMPIA2.
DISPLAY SPACES LINE LNN POSITION 34 SIZE 45.
ADD 1 TO LNN.
EXIT-P.
DISPLAY " " LINE 1 POSITION 1 ERASE CONTROL GYB.
EXIT PROGRAM.
Marcadores