En la entrada anterior, os aseguré que en esta de hoy hablaría de la irrupción de los PC’s, cual elefante en una cacharrería, en las empresas y en nuestras vidas, pero esa entrada será la siguiente en la serie. Tengo buenas razones para faltar a mi palabra, como veréis en seguida.
Porque esta entrada es en realidad una actualización de esta otra, en la que hablé del Cobol y el Virus del milenio, pero también de las dos o tres anteriores, en las que me referí al método de trabajo que seguíamos en el Desarrollo de Aplicaciones hace treinta años o más… En ellas os comenté cómo escribíamos el programa en Hojas de Codificación, que luego iban a Grabación, donde las perforistas lo pasaban a Tarjetas Perforadas, que luego iban al Ordenador, donde se compilaba… etc, etc, etc.
Y en todas estas entradas no pude poneros imágenes de un taco real de tarjetas perforadas con un programa; no encontré nada en la red, a pesar de buscar en español, inglés, francés, alemán, italiano…
Pero en este comentario, Jaume nos decía que él guardaba como oro en paño las tarjeta perforadas de un programa Cobol del año de la polka, y también algunos listados. Eso es, sencillamente, un incunable, ya que no hay modo de encontrar en la Web nada parecido, y Jaume ha tenido la enorme amabilidad de, en primer lugar, buscar las tarjetas del programa (entre el uniforme del Colegio y los cromos de Vida y Color, supongo), y después, de fotografiar o escanear las tarjetas y los listados, para poder, al fin, compartirlos aquí con todos vosotros.
Y aquí están esas maravillosas fotos. ¡Muchas gracias, Jaume, en nombre de todos los nostálgicos de aquella época! Y, me consta, también de otros muchos interesados en conocer algo más de la Historia de la Informática española.
Las tres primeras tarjetas de un programa Cobol: la Identification Division
Como podéis ver, las seis primeras posiciones son la página/línea, que podía usarse para reclasificar el programa en caso de caída (y consecuente descolocamiento) del taco de tarjetas; usualmente se numeraba cada página de la Hoja de Codificación donde se escribía el programa con un número de tres cifras: 001, 002…, y luego cada línea de la Hoja de Codificación, con números consecutivos, pero de diez en diez: 010, 020… para dejar espacio por si más adelante hubiera que insertar alguna otra tarjeta entre medias.
La columna 7 sólo se usa para comentarios, cuando lleva un asterisco, o para indicar la continuación de la línea anterior, si lleva un guión. A continuación viene el texto codificado en Cobol, desde la columna 8 a la 72, ambas inclusive. La columna 8 es del así llamado “margen A“, donde se escriben los nombres de párrafo, sección o división; las cláusulas e instrucciones se escriben a partir de la columna 12 (el “margen B“).
Por fin, en las ocho últimas posiciones, se perfora el nombre del programa, que en este caso es DFASEM17. El nombre del programa, en realidad, se toma siempre del PROGRAM-ID. Lo que ponga o deje de poner en las columnas 73 a 80, es tan sólo un comentario, y si se perforaba allí normalmente el nombre del programa era para poder identificar rápidamente un taco de tarjetas… o para saber a qué programa pertenecía una tarjeta suelta que te encontrabas revoloteando por los pasillos, cosa que, por increíble que parezca, pasaba de tanto en cuando.
.
Las tres siguientes tarjetas, también de la Identification Division.
Esta son las tres siguientes fichas del programa. La primera (“JAIME”) es en realidad el AUTHOR del programa; la ficha AUTHOR es la última de la foto anterior.
Observad la fecha de escritura del programa, en la cláusula “DATE-WRITTEN”: Febrero de 1975. Yo por aquella época estaba en Tercero de Carrera y no había comenzado aún a trabajar: Jaume es, por tanto, más experto todavía que yo…
Podéis ver también las perforaciones que corresponden a cada carácter; en este caso ha habido suerte: la tinta de la máquina de perforar estaba bien, y se han impreso, en la parte superior de la tarjeta, los caracteres que están perforados. En muchas ocasiones, la tinta estaba agotada, y no se imprimía nada, por lo que, si querías saber lo que estaba allá perforado, no te quedaba otra que mirar los agujeritos al trasluz, para traducir mentalmente las perforaciones a caracteres: todos éramos muy duchos en estos menesteres.
Por ejemplo, la “A” son dos perforaciones, una en la fila 12 (la primera de todas, que no lleva caracteres impresos) y otra en fila 1; la “B”, dos perforaciones en filas 12 y 2; la “T” son dos perforaciones en fila 0 y fila 3; los números son sólo una perforación en la fila correspondiente (el cero en la fila 0, el cinco en la 5, etc), los caracteres especiales solían tener tres perforaciones… Cada carácter tenía su representación, incluso los no representables: se trataba del Código Hollerith.
.
Parte de la Environment Division.
Esta es parte de la Environment Division, donde se especifican los ficheros que usa el programa, qué tipo de fichero es cada uno: una cinta magnética, un fichero en disco, una impresora, etc. Fijaos en la ficha ASSIGN TO ‘SYS008′: para el Sistema en que trabajaba Jaume, ese SYS008 identificaría a la impresora del Sistema (no es que lo sepa, lo deduzco porque el nombre del fichero es “IMPRESORA”), y seguro, seguro, que hacía impresión directa, sin pasar por Spool, es decir, cuando el programa ejecutaba un “WRITE LINEA”, la línea en concreto se imprimía en ese mismo momento en el papel pijama.
También se dice en la Environment Division cómo se llaman los ficheros de verdad, y otras definiciones generales; por ejemplo aquí es donde los europeos le avisamos al compilador de que “DECIMAL-POINT IS COMMA”, para que cambie el uso yanqui de puntos y comas en la representación de los números.
.
La Data Division: File Section y Working-Storage Section.
En este bloque de tarjetas tenéis parte de la Data Division, donde se definen los datos; en la File Section se definen los ficheros y sus registros, y en la Working-Storage Section se definen las variables y campos de trabajo que usará el programa. Estamos en el reino de la PICTURE (curiosamente, Jaume prefería usar PICTURE en lugar de PIC; debía ser de los pocos tipos raros que hacían esto, o quizá el compilador que tenía ese sistema no admitía la abreviatura PIC, que de todo había).
.
Parte de la Procedure Division.
Y aquí está, por fin, parte de la Procedure Division, donde se define el proceso que debe hacer el programa, es decir, lo que mayormente es el programa en sí. El reino de la “MOVE”, vaya (los programadores viejos nos referíamos coloquialmente a programar como “Darle a la MOVE“, por algo sería).
Observaréis el uso del GO TO sin el menor pudor; en aquellos años nadie programaba en España (ni casi en el mundo) usando el paradigma de la Programación Estructurada, así que era así como todo el mundo programábamos: no sabíamos otra manera… y tan felices, hasta que te tocaba modificar un programa de los que había hecho “El Rey del GOTO” (en cada instalación había al menos uno), y entonces te acordabas del inventor del GOTO… y no para felicitarle, precisamente.
.
Y, como seguramente sabéis, en los años setenta y ochenta del siglo pasado no se había inventado la internet, así que, cuando nos aburríamos (que a veces pasaba, aunque poco), en vez de mirar estupendos blogs de ciencia, como ahora hacemos, nos dedicábamos a hacer monerías…
Jaume dibujaba pitufos… nosotros éramos más de pintar escudos del Madrí y del Aleti… bueno, y había uno maño que los hacía del Zaragoza… Pero es que nosotros estábamos en Madrid; me imagino que en cada ciudad estaría más trabajado el escudo del equipo local, y otros motivos regionales alegóricos.
Sobre el listado podéis observar el taco del programa: quizás tenga quinientas o seiscientas tarjetas, y debe pesar alrededor del kilo y medio. Notaréis la marca que ha dejado la gomilla con la que todo taco de programa que se precie estaba sujeto para que no desparramen las tarjetas, gomilla que, con toda seguridad, he resultado destruida por el implacable paso del tiempo.
Sorprende lo bien conservado que se mantiene el listado: treinta y tantos años después, la tinta sigue perfectamente nítida, pero es el que el papel pijama de entonces era de excelente calidad (de alto gramaje), pues en otro caso no hubiera podido aguantar los brutales tirones que daban las impresoras de la época, que no eran precisamente muy suaves cuando funcionaban a todo trapo.
.
Y por fin, queridos amigos, aquí debajo podéis disfrutar del resultado final de tantos desvelos:
Como se ve claramente, lo que peor ha aguantado el paso del tiempo, aparte de la difunta gomilla es… ¡el papel celo!.
Espero que esta vaharada de nostalgia os hayan gustado tanto como me ha gustado a mí.
Y, otra vez: ¡gracias, Jaume! Los arqueólogos de la informática te estamos eternamente agradecidos.
.
En la próxima entrada volveremos a la normalidad histórica de la serie, hablando de cómo empezó todo para que acabáramos todos con un PC (¡o dos!) encima de nuestras mesas.
Disfrutad de la vida, mientras podáis.
The Historia de un Viejo Informático. Nostalgia: Un programa Cobol en tarjetas perforadas. by , unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 Spain License.