Curso de Cobol y PowerCobol

¿Cómo funcionan las variables de COBOL?

Capítulo 12: Las variables

Hasta ahora has visto diferentes variables en los capítulos anteriores. Llega el momento de explicar cada una de sus partes.

Las variables de COBOL

En COBOL, las variables son llamadas "elementary item", dato elemental en español. Es una de las formas de describir una variable, así que seguiré llamándolas variables para no crear confusión.

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo12.

       ENVIRONMENT DIVISION.

       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
           01 SitioWeb PIC X(25) VALUE "www.programacionfacil.org".
       PROCEDURE DIVISION.
       MuestraSitioWeb.
           DISPLAY SitioWeb.

       STOP RUN.

       END PROGRAM Capitulo12.
www.programacionfacil.org

Podemos distinguir de esta variable tres partes obligatorias en la declaración y una cuarta opcional. Sí, en COBOL todas las partes del lenguaje se descomponen en más partes.

El PICTURE de las variables COBOL

El PICTURE se utiliza para especificar el tipo de dato que es la variable y su longitud en caracteres. En este caso, la variable es de tipo string, especificado con la X y de 25 bytes de longitud. ¿Qué quiere decir esto? Pues que normalmente representa 25 caracteres, es decir, puedo almacenar hasta 25 letras, números y/o símbolos. Pero ten en cuenta, que caracteres especiales como un acento, ocupa 1 byte extra.

"www.programacionfacil.org" es un nombre exactamente de 25 caracteres de largo, pero si le pongo un acento en la o y otro en la a (no tiene sentido en una URL, pero aquí es solo texto), tendremos 25 bytes de texto + 2 por los acentos, por lo que el PICTURE necesitaría una longitud de 27 bytes.

01 SitioWeb PIC X(25) VALUE "www.programaciónfácil.org".
www.programaciónfácil.o

Cambia el PICTURE y dale un valor de 27:

01 SitioWeb PIC X(27) VALUE "www.programaciónfácil.org".
www.programaciónfácil.org

Entonces, con esto, estamos creando unos contenedores con un tamaño determinado. Imagina que vendes tazas. Te han realizado un pedido de 25. Pues bien, lo que haces, es utilizar una caja lo más justa posible para enviar esas 25 tazas a un precio menor. Utilizas una caja en la que caben justo 25 tazas. Puedes meter menos, pero no más, eso es físicamente imposible. Antes de enviar el paquete, el cliente te pide dos tazas más. Necesitas una caja en la que quepan mínimo 27 tazas.
Así es como funcionan las variables. En los lenguajes modernos también tenemos contenedores con tamaños diferentes, pero no tenemos la posibilidad de precisar al byte como en COBOL. Esto es a menudo una ventaja y una desventaja. La desventaja es porque tenemos que estar vigilando el tamaño de las variables muy de cerca, para evitar pérdidas de datos, sobre todo en operaciones matemáticas. La ventaja es que podemos ajustar al byte el tamaño en memoria de los programas que hagamos.

Cajas de envío

Tipo de PICTURE en una variable COBOL

Tenemos 5 símbolos para definir el tipo de dato en el PICTURE.

El PICTURE A

El PICTURE A admite tipos de datos alfabéticos, letras sin números. A esto no le podemos llamar realmente string.

Un uso correcto sería por ejemplo este:

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo12.

       ENVIRONMENT DIVISION.

       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
           01 Saludo PIC A(4) VALUE "Hola".
       PROCEDURE DIVISION.
       MuestraSaludo.
           DISPLAY Saludo.

       STOP RUN.

       END PROGRAM Capitulo12.
Hola

Si añadimos un número a este string nos va a advertir que está mal.

01 Saludo PIC A(4) VALUE "Hol7".

Se ejecuta sin problemas, pero OpenCobolIDE nos da un warning indicando que el valor no se ajusta al PICTURE (value does not fit the picture string).

El PICTURE X

El símbolo A no se suele utilizar tanto como el símbolo X, ya que este admite caracteres alfanuméricos, es decir, símbolos, letras y números. Lo que sería un string realmente.

El siguiente ejemplo con el PICTURE X es totalmente correcto.

01 Saludo PIC X(4) VALUE "H*l7".

PICTURE 9

Para los números tenemos el símbolo 9.

01 Numero PIC 9(4) VALUE 1000.

Los números deben ir sin comillas, ya que si las llevan se convierten en strings:

01 Numero PIC 9(4) VALUE "1000".

Con esto, OpenCobolIDE suelta el warning "numeric value is expected" (se espera un valor numérico). Lo que nos revela que así, no se trata como número en COBOL (y en casi cualquier lenguaje de programación).

Aún queda bastante por explicar sobre las variables, así que seguimos con ellas en el siguiente capítulo.


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.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.