COBOL en The Terminator

Estamos cerca del estreno de Terminator Genesys, y esta expectativa me hizo ir a Netflix y volver a ver The Terminator.

No recuerdo haber visto la primera película de la serie de forma completa alguna vez. La que he visto varias veces fue la segunda parte. Entonces me he encontrado con algunas sorpresas que espero hagan más entretenido el visionado del próximo estreno. Por ejemplo el “¡Sube si quieres vivir!” de Sarah es un gag a la misma frase dicha en la primera película.

Estaba viendo la película y entonces comenzaron a aparecer imágenes de unos lentes de visión nocturna acompañados con ciertos códigos assembler.  Entonces recordé que alguna vez leí que aparecía código COBOL en dicha película. Casi a mitad de la misma, pude ver el dichoso momento: Se descubre finalmente que el misterioso personaje es un robot, y vemos por primera vez desde su punto de vista, y observamos unos códigos extraños que parecen hacer cálculos complejos, que acompañan la visión del exterminador (sí, le tomé foto a mi TV):

Captura The Therminator
I’ll be back!

¿No se ve bien no? Bueno, lo escribo aquí:

IDENTIFICACION DIVISION.
PROGRAM-ID. ADD.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORDKING STORAGE SECTION.
77 IDX PICTURE 9999.
77 SUM PICTURE 999999.
77 X PICTURE X.
PROCEDURE DIVISION.
BEGIN.
ACCEPT X.
MOVE ZERO TO IDX.
MOVE ZERO TO SUM.
PERFORM ADD-PAR UNTIL IDX = 1441.

Y esto, señores, es COBOL. ¡En la visión del exterminador! ¡El exterminador está escrito en COBOL!

En reddit algunos comentarios al respecto son muy graciosos:

I’m in. – Oh, no, wait, I know COBOL. THIS GUY MUST BE STOPPED!!!

The terminator was supposed to be near unstoppable, highly reliable by socially inept. Sound like COBOL to me!

They don’t call it Big Iron for nothing.

Pero ¿qué hace ese código? ¿Hasta donde se ve, realmente está calculando la forma más letal de matar a Sarah? ¿habrá una función KillNow() o algo así?

A pesar de que el código está incompleto, en realidad, aparece el nombre del programa, el programa se llama ADD. ¿Qué creen que hace? El programa realmente comienza en el BEGIN, lo anterior es parte declarativa, aquí van los archivos a los que se accede, estructuras y variables que se van a usar a lo largo del programa y comúnmente estructucturas de SQL embebido para acceso a BD. Y no esperes objetos. Programación estructurada pura y dura.

Desde le BEGIN vemos un ACCEPT (sí, para recibir desde “afuera” un valor), dos inicializaciones y luego una estructura de bucle infinita que termina con la bandera IDX = 1441. ¿Qué podemos suponer que hacer este código? Puede ser como mínimo que sume los primeros 1441 números, con lo que el código se completaría así:

IDENTIFICATION DIVISION.
PROGRAM-ID. ADD.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 IDX PICTURE 9999.
01 SUMA PICTURE 999999.
01 X PICTURE X.
PROCEDURE DIVISION.
BEGIN.
ACCEPT X.
MOVE ZERO TO IDX.
MOVE ZERO TO SUMA.
PERFORM ADD-PAR UNTIL IDX = 1441.
PERFORM TERMINAR.
ADD-PAR.
ADD 1 TO IDX
ADD IDX TO SUMA.
TERMINAR.
DISPLAY X ” : LA SUMA DE LOS ” IDX ” NUMEROS ES ” SUMA “.”.
STOP RUN.

Por el DISPLAY obtendremos la salida del programa, la que se enviará hacia quien esté invocando a dicho programa ADD.

Es posible que esto no sea lo que haga este programa, y que luego de la línea de lo que se ve, venga mucho código, pero un programa que se llame ADD y que tenga solo tres variables (es un hecho que no hay más variables ni más llamadas a otros programas, tampoco ha acceso a base de datos ni acceso a archivos, esto se escribe en la parte declarativa), difícilmente está haciendo cálculos complejos de la cantidad de dolor que debe infligir a alguien o el nivel de daño que debe recibir un cuerpo humano para morir o la trayectoria de la bala para que alguien muera de una sola a la distancia máxima.

¿En serio?
¿En serio?

Es en serio. No obstante, vale como dato friki. La pregunta es, ¿en Terminator Genesys veremos código nuevamente? ¿Habrán actualizado esto o veremos más COBOL?

Nos vemos en la red.

[Actualización 20/07/2017]: Habían unos errores en el código fuente. Ya están corregidos. En este link está el .cob. Lo acabo de compilar y ejecutar con un compilador Microfocus Cobol para UNIX sin problemas.

Anuncios

2 comentarios sobre “COBOL en The Terminator

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s