
Pequeño Editor Texto
Muchos de los trucos que veamos, no tienen porque ser programas completos, pero si nos pueden
ayudar a comprender mejor la lógica de algunos de ellos y aprovechar
el código para otros casos.
Ahora vamos a hacer un pequeño editor de texto, el cual nos cuente las palabras que
vayamos introduciendo y además nos diga el número de carácteres que tiene.
Os muestro una captura de pantalla.

Empezamos definiendo el programa y las variables que vamos a utilizar.
IDENTIFICATION DIVISION.
PROGRAM-ID. EDITOR.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. COBOL.
OBJECT-COMPUTER. COBOL.
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
INPUT-OUTPUT SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
(donde se guardara la palabra introducida).
01 PALABRA PIC X(20).
01 PALABRI REDEFINES PALABRA.
02 ELE PIC X OCCURS 20 TIMES.
(li = contador de letras de la palabra).
01 LI PIC 99.
(linea = contador de lineas donde aparecen las palabras introducidas.
01 LINEA PIC 99.
(colum1 = contador de columna de palabra introducida).
01 COLUM1 PIC 99.
(colum2 = contador de columna de numero de letras de palabra introducida).
01 COLUM2 PIC 99.
(lin = linea por la que se va escribiendo).
01 LIN PIC 99.
(coli = columna por la que se va escribiendo).
01 COLI PIC 99.
(total = numero de palabras introducidas).
01 TOTAL PIC 999. 01 LTOTAL PIC ZZ9.
(x = letra que vamos introduciendo).
01 X PIC X.
01 RAYA.
02 FILLER PIC X(30) VALUE "------------------------------".
02 FILLER PIC X(25) VALUE "-------------------------".
01 ESCA PIC 9 COMP-1.
PROCEDURE DIVISION.
(en este primer parrafo vamos a diseñar un poco la pantalla).
INICIO. DISPLAY RAYA LINE 2 COL 2 ERASE.
DISPLAY RAYA LINE 15 COL 2.
DISPLAY RAYA LINE 17 COL 2.
DISPLAY "BORRA CARACTER" LINE 16 COL 20 LOW REVERSE.
DISPLAY " FINALIZAR" LINE 16 COL 42 LOW REVERSE.
DISPLAY ">> " LINE 16 COL 2.
DISPLAY " INTRODUCIR TEXTO " LINE 2 COL 5 LOW REVERSE.
DISPLAY "---------------------" LINE 2 COL 59.
DISPLAY " PALABRAS " LINE 2 COL 62 LOW REVERSE.
DISPLAY " PALABRAS " LINE 17 COL 5 LOW REVERSE.
(aqui inicializamos las variables con las que vamos a trabajar en la Working están explicadas).
MOVE 18 TO LINEA MOVE 3 TO COLUM1 MOVE 23 TO COLUM2.
MOVE 3 TO LIN MOVE 2 TO COLI MOVE 0 TO LI TOTAL.
UNO. (aceptamos un caracter cada vez, lo analizamos y
actuamos en consecuencia).
ACCEPT X LINE LIN COL COLI
ON
EXCEPTION ESCA NEXT SENTENCE.
IF ESCA = 27 GO SALIR.
IF ESCA = 56 IF LI > 0 GO MIRAR.
(esta linea es para que solo se pueda introducir un espacio).
IF X = " " IF LI > 0 PERFORM AHORA GO DOS ELSE GO UNO.
ADD 1 TO LI MOVE X TO ELE (LI).
DOS. (aqui comprobamos que no se nos salga de los limites la linea).
ADD 1 TO COLI IF COLI > 55 MOVE 2 TO COLI ADD 1 TO LIN.
IF LIN > 14 GO SALIR.
GO UNO.
AHORA.
(en este párrafo mostramos la palabra introducida
y el numero de letras que contiene. Ademas controlamos en que parte de la pantalla nos van
apareciendo.
DISPLAY PALABRA LINE LINEA COL COLUM1 LOW.
DISPLAY LI LINE LINEA COL COLUM2.
ADD 1 TO TOTAL MOVE TOTAL TO LTOTAL.
DISPLAY LTOTAL LINE 16 COL 6 LOW.
IF TOTAL = 36 GO SALIR.
INITIALIZE PALABRA MOVE 0 TO LI ADD 1 TO LINEA.
IF LINEA = 25 IF COLUM1 = 3 MOVE 18 TO LINEA
MOVE
30 TO COLUM1 MOVE 50 TO COLUM2 ELSE
MOVE
3 TO LINEA MOVE 59 TO COLUM1 MOVE 78 TO COLUM2.
SALIR. (este parrafo finaliza el
programa).
DISPLAY "COMPLETADO EL EDITOR" LINE 13 COL 20.
ACCEPT X LINE 13 COL 18 LOW.
STOP RUN.
MIRAR. (
este parrafo lo utilizamos cuando borramos un caracter dentro de una palabra).
SUBTRACT 1 FROM COLI.
IF COLI = 1 MOVE 55 TO COLI SUBTRACT 1 FROM LIN.
MOVE " " TO ELE (LI).
DISPLAY " " LINE LIN COL COLI.
SUBTRACT 1 FROM LI.
GO UNO.
Fijaros en que la idea de un editor parte del caracter y no de palabras, así es mas
fácil controlar lo que vamos introduciendo. Por supuesto se puede ir ampliando
hasta donde se quiera, se pueden controlar comas, puntos. Se puede justificar, todo es
cuestión de pensar un poco mas, pero eso os lo dejo a vosotros, para que
experimentéis.
Es evidente que nadie va a utilizar un editor realizado en cobol, porque el mercado está
saturado de ese tipo de programas que encima hacen maravillas. Pero todas estas cosas nos
sirven para coger mas confianza con el lenguaje y utilizar la lógica que nos
puede ayudar en otras circunstancias.
|
|