miércoles, octubre 03, 2007

La tarjeta de 80 columnas y el RPG (y otros...)

Jon Paris dedica dos líneas a la tarjeta perforada de 80 columnas en IBM Systems Magazine. Valga para la historia de la informática, y para quienes se pregunten qué es eso...

Last weekend at a COMMON planning meeting, the words "you'll have us using 80-column cards next" were uttered by one of the assembled throng. This brought the response, "What do you mean '80 column’? Punch cards were 96 columns!" Such a child! Some of us can not only remember 80-column cards but their forerunners the 36- and 40-column cards.
OK, even I am not old enough to have seen a working 36-column installation, but I was involved in converting one customer from a 40- to an 80-column tabulator system, and another from 40 column directly to a midrange computer system. It seems like a lifetime ago, and if it wasn't for that strange picture in the attic ...
Anyway it got me thinking about how little many of us know of our own history as it relates to the IT industry. Would you believe that there are people out there who actually believe that Bill Gates and Microsoft invented the concept of a windowing GUI! They probably believe they invented DOS too--poor misguided souls.

Jon explica las dependencias en RPG con respecto a la tarjeta de 80 columnas:
As you can see there are 80 vertical columns, which explains the 80-column limit in RPG II and RPG III. You might also have wondered why the first five columns of the spec are designated as the sequence number. Well, suppose you had a 600-line RPG program and it was on punch cards. Now suppose that you dropped the box and 600 cards hit the floor. How long do you think it would take you to put the program back in order? Now you understand the reason for the sequence number.
What about the term "zoned numeric"? Take a look at the card at around column 19 and you'll see holes in the top portion (i.e., above the numbers); they are in "the zone." The two rows in this area are referred to as the X and Y zones. In fact, the 0 (zero) position is also treated as a zone. These rows were sometimes also known as the 10, 11 and 0 zones, which made more sense to me since they were at least partly in sequence! The X zone, which was the middle of the three, was used to identify a negative number. So for instance the value -5 would be represented by a hole in the 5 position and one in the X position. That also happens to be the coding for the letter "N." This explains two features of RPG, first why we use the term zoned, and secondly why TESTN is a risky op-code to use if you want to be sure that numeric fields contain nothing but numbers. You see TESTN is quite happy to tell you that "123M" is a valid number because that represents 1234. It is also perfectly happy with "123D" or "123U" since they’re treated as positive numbers.
Some of you may have pondered why it is that when the hex values for A through I are C1 through C9, and J through R are D1 through D9, the letter “S” has a hex value of D2? The answer, as it was explained to me, was simply that having two holes close together weakened the card, so it wasn’t a good idea to use it for such a frequently used letter as S.
Estas dependencias, que continúan, se modificaron en parte aceptando tarjetas de 96 columnas, que permiten un formato "extendido" en los fuentes de RPG, COBOL o CL en el Iseries.
Sólo a partir del ILE RPG disminuyeron, al aceptar parcialmente un formato libre.
Lo que se dice del RPG es ampliable al formato de columnas del COBOL. (Otro artículo para archivar en la fugaz web)

3 comentarios:

ajut400 dijo...

Hola, para darle una visión más gráfica a tu post te envio una foto de unas tarjetas perforadas que aparecieron durante el traslado de un Centro de proceso de datos.

Jorge Ubeda dijo...

Gracias Alex...Qué curioso. Tuve que abrir la ventana de redacción de posts para ver el enlace a las fotos. Uso Firefox. Tendré que chequear si es una cuestión de compatibilidad.

Jorge Ubeda dijo...

Misterio resuelto:
Se produjo una inversión de tipeo. En lugar de escribir href... quedó herf en tu código del post. La dirección es esta. Te escribiré pronto.