
La división de entorno de COBOL
Capítulo 7: ENVIRONMENT DIVISION
La ENVIRONMENT DIVISION
(división de entorno) es la que contiene información sobre el entorno.
Esta división es opcional y contiene dos secciones opcionales dentro de ella. La CONFIGURATION SECTION
y la INPUT-OUTPUT SECTION
.
Al ser opcional no aparece en la plantilla básica "Program" de OpenCobolIDE. La tenemos que escribir. La colocaremos antes de la DATA DIVISION
.
IDENTIFICATION DIVISION.
PROGRAM-ID. CAPITULO-7.
ENVIRONMENT DIVISION.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
DISPLAY "Curso de COBOL en Programación Fácil"
STOP RUN.
END PROGRAM CAPITULO-7.
CONFIGURATION SECTION
Empecemos con la primera sección, CONFIGURATION SECTION
. En ella podemos escribir el párrafo SPECIAL-NAMES
que permite especificar detalles del entorno de desarrollo como por ejemplo que alfabeto utilizar, si utilizar punto o coma para los decimales, etc.
IDENTIFICATION DIVISION.
PROGRAM-ID. CAPITULO-7.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
DISPLAY "Curso de COBOL en Programación Fácil"
STOP RUN.
END PROGRAM CAPITULO-7.
Esto lo que hace es decirle al programa que cuando vayamos a poner un decimal, lo queremos hacer con una coma en lugar de con un punto. Si no especificas este párrafo, se queda por defecto con el punto en los decimales.
SYMBOLIC CHARACTERS
El párrafo SYMBOLIC CHARACTERS
sirve para nombrar a caracteres y poder imprimirlos, además de utilizarlos en el programa. Veamos algún ejemplo.
IDENTIFICATION DIVISION.
PROGRAM-ID. CAPITULO-7.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
SYMBOLIC CHARACTERS ESPACIO IS 33.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
DISPLAY "Curso de COBOL en Programación Fácil"
STOP RUN.
END PROGRAM CAPITULO-7.
¿Qué hace esto?
Con SYMBOLIC CHARACTERS
, estoy asignando a ESPACIO
(nombre que le he dado yo) el valor 33
. ¿De donde sale este valor?
Los valores especificados para este párrafo, serán en código ASCII. Si quieres crear entidades de forma similar como las de HTML para utilizar símbolos, lo puedes hacer declarándolos de esta forma.
American Standard Code for Information Interchange en inglés o Código Estándar Estadounidense para el Intercambio de Información en español), es un código de caracteres basado en el alfabeto latino.
Probemos esto en un DISPLAY
. Para utilizar el símbolo, solo tienes que llamar a la constante ESPACIO
que he creado.
IDENTIFICATION DIVISION.
PROGRAM-ID. CAPITULO-7.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
SYMBOLIC CHARACTERS ESPACIO IS 33.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
DISPLAY ESPACIO ESPACIO ESPACIO ESPACIO.
STOP RUN.
END PROGRAM CAPITULO-7.
Llamamos cuatro veces a ESPACIO
y nos lo muestra cuatro veces:
Si estás en el tema oscuro, verás los espacios así. Puedes seleccionar esa parte blanca y contar que hay cuatro espacios.

Si estás en el tema claro de OpenCobolIDE, no distinguirás los espacios, selecciona la misma zona para verlos o cambia al modo oscuro.
Sin embargo, esta especificación no es muy necesaria al menos en este programa, porque los espacios ya son imprimibles en un DISPLAY
sin necesidad de hacerlo con un símbolo, sencillamente pulsando la tecla SPACE .
Entonces, ya sabes que con la referencia del código ASCII en la mano (te he dejado el enlace arriba), puedes utilizar cualquiera de sus símbolos en tus programas COBOL.
Hagamos algo más útil, por ejemplo, imprimir la representación de unas comillas angulares » «
, las cuales, no están disponibles en el teclado (no son dos mayor o menor qué >> <<
).
IDENTIFICATION DIVISION.
PROGRAM-ID. CAPITULO-7.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
SYMBOLIC CHARACTERS ANGULAR-DERECHA IS 176.
SYMBOLIC CHARACTERS ANGULAR-IZQUIERDA IS 175.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
DISPLAY ANGULAR-DERECHA " Texto destacado " ANGULAR-IZQUIERDA.
STOP RUN.
END PROGRAM CAPITULO-7.
» Texto destacado «
¡Perfecto! Con esto, ya sabes establecer una especificación de constantes (Contenedores de datos que no varían) para los símbolos que necesiten tus programas. Después, será tan fácil como llamar a esas constantes para utilizar su valor.
No sé si te habrás dado cuenta que los valores ASCII varían en 1 en la referencia que te he dado. El espacio en ASCII es el número 32
, sin embargo, en COBOL utilizamos 33
. Lo mismo con las comillas angulares, estas son en realidad 174
y 175
.
¿Qué está ocurriendo?
El código ASCII tiene 256 posibles caracteres. Este habitualmente se cuenta desde el 0
hasta el 255
(256 en total). Sin embargo, en COBOL, se cuenta desde el 1
hasta el 256
, por eso esta variación de todo en 1.
Tanto si intentas utilizar el carácter 0
o el 257
o superior, te va a dar error, ya que no existen.
SYMBOLIC CHARACTERS SIMBOLO1 IS 0.
SYMBOLIC CHARACTERS SIMBOLO2 IS 257.
Nos dá el error número simbólico entero inválido.
invalid symbolic integer
COBOL utiliza código ASCII extendido. El normal, solo va desde el carácter 0 al 127 (128 caracteres) y el extendido del 128 al 255 (128 caracteres más), haciendo un total de 256 caracteres.
Especificar más de un símbolo en la misma frase
Para terminar con esto, debo decir que puedes especificar diferentes símbolos en un mismo párrafo para ir utilizándolos después y no tener que tener un montón de líneas repitiendo SYMBOLIC CHARACTERS
una y otra vez.
Puedes hacerlo con el verbo IS
(es en español) o bien con el verbo ARE
(son en español) que me parece más correcto en este caso (plural).
IDENTIFICATION DIVISION.
PROGRAM-ID. CAPITULO-7.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
SYMBOLIC CHARACTERS MEDIO ARE 172
CUARTO 173
TRES-CUARTOS 244.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
DISPLAY "Medio: " MEDIO.
DISPLAY "Un cuarto: " CUARTO.
DISPLAY "Tres cuartos:" TRES-CUARTOS.
STOP RUN.
END PROGRAM CAPITULO-7.
Por cierto, como puedes ver en el código, se pueden utilizar más de un DISPLAY
, tantos como quieras. Cada uno, ocupará una línea en la salida de la consola.
Medio: ½
Un cuarto: ¼
Tres cuartos:¾
La colocación de SYMBOLIC CHARACTERS
en varias líneas, es opcional, solo lo pongo así para que el código quede más ordenado y fácil de leer. Te recomiendo que sigas la forma de escribir para que todo quede correctamente ordenado.
Estas formas de escribir esto también son correctas, alguna es redundante pero válida:
SYMBOLIC CHARACTERS MEDIO ARE 172
CUARTO ARE 173
TRES-CUARTOS ARE 244.
SYMBOLIC CHARACTERS MEDIO ARE 172
CUARTO IS 173
TRES-CUARTOS ARE 244.
SYMBOLIC CHARACTERS MEDIO IS 172
CUARTO 173
TRES-CUARTOS 244.
Ten en cuenta que después de SYMBOLIC CHARACTERS
, se escribe primero el nombre de la constante (MEDIO
en el ejemplo) y luego viene el verbo IS
o ARE
. Si no respetas esto, recibirás un error como este:
Error de sintaxis. IS
Inesperado, se esperaba un identificador.
El identificador del que habla, es un nombre de constante como MEDIO
.
syntax error, unexpected IS, expecting Identifier
Un orden bonito pero complicado de escribir es este. Puesto que tenemos después de CHARACTERS
un identificador (al menos), no nos da error:
SYMBOLIC CHARACTERS LETRA-A LETRA-B LETRA-C LETRA-D
ARE 66 67 68 69.
Queda bien, si, pero no es práctico de escribir.
Al final del párrafo SYMBOLIC CHARACTERS
, no te olvides de poner el punto.
INPUT-OUTPUT SECTION
Continuemos con la segunda sección de la ENVIRONMENT DIVISION
. La INPUT-OUTPUT SECTION
(sección de entrada-salida).
Como su nombre nos revela, esta sección es para la entrada y salida de datos del programa.
En este párrafo select estoy especificando que se utilice un archivo llamado ARCHIVO-EMPLEADOS (lógico). El cuál, se va a asignar con ASSIGN
a un archivo físico en el disco, además del tipo de organización.
IDENTIFICATION DIVISION.
PROGRAM-ID. CAPITULO-7.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OPTIONAL ARCHIVO-EMPLEADOS
ASSIGN TO "empleados.dat"
ORGANIZATION IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
STOP RUN.
END PROGRAM CAPITULO-7.
Aún es pronto para explicar a fondo esto, pero lo que estamos haciendo, es indicarle que archivo queremos que abra el programa y de que forma.
Lo único que quiero que sepas por el momento, es que para utilizar archivos externos, lo haremos en la INPUT-OUTPUT SECTION
, con el párrafo FILE-CONTROL
.
Por el momento dejemos aquí esta división, la cuál tiene mucho por ofrecerte todavía, pero yo creo que por el momento, es suficiente.
Comentarios
Si te quedan dudas sobre el temario, sobre Cobol, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.