Outils pour utilisateurs

Outils du site


issue105:tutoriel1

1

In the early days of computers, a company called Digital Equipment Corporation (DEC, first bought by Compaq, today part of Hewlett-Packard) created their 32-bit VAX (Virtual Address eXtention) computer as an upgrade from the 16-bit PDP/11 (Programmable Data Processor) computer. It uses openVMS as its operating system. In the steel-making company where I work, a large number of these computers were used to control the manufacturing process. We use (VAX-) Pascal as the standard programming language, and a home-brew computer interconnection program called HDN. We are not the only manufacturing company that used these computers. There are thousands of VAX's sold all over the world. Because a VAX/VMS computer is so reliable, there are today, after more than 25 years, still a large number of them in use, including some in the company where I work. But after more than 25 years, the number of people knowing their way around in VMS is quickly diminishing, and it is getting harder to find replacement parts for failing hardware. The hardware could be replaced with emulators like Charon-VAX (although, I have bad experiences with frequent, but random, errors on Charon-VAX, I will explain these in one of the following articles), but expert programmers cannot be emulated. So, in the end, even these reliable computers will have to be replaced. But replacing these computers will take a lot of time and money, as the functionality must be migrated to another operating system.

Au tout début de l'informatique, une société appelée Digital Equipment Corporation (DEC, d'abord achetée par Compaq, aujourd'hui faisant partie de Hewlett-Packard), a créé son ordinateur VAX 32 bits (Virtual Address eXtension) comme une évolution du PDP/11 16-bit (Programmable Data Processor). OpenVMS est son système d'exploitation. Dans la fonderie d'acier où je travaille, un grand nombre de ces ordinateurs étaient utilisés pour contrôler le processus de fabrication. Nous utilisons le (VAX-)Pascal comme langage de programmation standard, et un programme d'interconnexion informatique maison appelé HDN.

Nous ne sommes pas la seule usine ayant utilisé ces ordinateurs. Des milliers de VAX ont été vendus partout dans le monde. Parce qu'un ordinateur VAX/VMS est si fiable, qu'il y en a encore aujourd'hui, après plus de 25 ans, un grand nombre toujours en service, y compris dans l'entreprise où je travaille. Mais après plus de 25 ans, le nombre de personnes pouvant s'y retrouver dans VMS diminue rapidement, et il devient plus difficile de trouver des pièces de rechange pour un matériel en bout de course. Le matériel peut être remplacé par des émulateurs comme Charon-VAX (toutefois, j'ai de mauvaises expériences, avec des erreurs fréquentes, mais aléatoires, sur Charon-VAX ; je vous les expliquerai dans l'un des articles suivants), mais on ne peut pas simuler des experts en programmation. Donc, finalement, même ces ordinateurs fiables devront être remplacés. Mais le remplacement de ces ordinateurs nécessitera beaucoup de temps et d'argent, puisque les fonctionnalités doivent être portées vers un autre système d'exploitation.

Windows? Because most people are familiar only with Windows, this would be the logical choice. But the migration from VAX/VMS to Windows is time-consuming, expensive and complex, due to the different way the operating system works, and despite the fact that Windows NT is based, loosely, on the VMS predecessor, RSX, as used on the PDP/11. This complexity increases the chance of disruption of the manufacturing process during the migration, which will cost even more money, not to mention the damage to the reputation if you fail to deliver in time, or at a lower quality than the customer is used to. Also the reliability of Windows is questionable: most programs delivered with the operating system are an integrated part of it, which might lead to a complete system breakdown if just one component fails, and viruses are a problem in itself. Protection against them takes a huge part of the systems resources, and, in our case, on one occasion, was even itself the cause of a total system breakdown. Mandatory updates of the operating system to patch security leaks require a frequent reboot of the computer, causing a loss of production time. And finally, some experts are quietly admitting that they are slowly losing the battle against the flood of new viruses…. What about the database? Besides the different way programs are written for Windows, there is another problem: DEC created on their VAX/VMS computers another type of database compared to the relational databases used today, a network database named DBMS32 (DataBase Management System 32-bit). In this case, the word 'network' does not refer to a LAN or the Internet, but to the internal organization of the data. The different types of data are not linked to each other through a relation, but by a double-linked list. Finding the first/next/last member of a set is lightning fast, because you only have to follow the link – instead of reading all records in the database to see if the relation is satisfied. When you migrate a VAX/VMS system to Windows, you also have to migrate from network databases (if you are using it) to relational databases.

Vers Windows ?

Parce que la plupart des gens ne connaissent que Windows, ce serait le choix logique. Mais la migration de VAX/VMS vers Windows est longue, coûteuse et complexe, en raison du fonctionnement différent des deux systèmes d'exploitation, et malgré le fait que Windows NT soit basé de façon approximative sur RSX le prédécesseur de VMS, tel qu'il était utilisé sur le PDP/11. Cette complexité augmente le risque de perturbation du processus de fabrication lors de la migration, qui coûtera encore plus d'argent, sans parler de l'atteinte à votre réputation si vous ne parvenez pas à livrer à temps, ou avec une moins bonne qualité que celle à laquelle le client est habitué. De plus, la fiabilité de Windows est discutable : la plupart des programmes livrés avec le système d'exploitation en sont une partie intégrante, ce qui pourrait conduire à une panne complète du système si un seul composant était défaillant, et les virus sont un problème en soi. La protection contre les virus prend une grande partie des ressources du système et, une fois, dans notre cas, a été elle-même la cause d'une panne totale. Les mises à jour obligatoires du système d'exploitation pour corriger les failles de sécurité nécessitent un redémarrage fréquent de l'ordinateur, ce qui provoque une perte de temps de production. Enfin, certains experts avouent, sans trop de bruit, qu'ils sont en train de perdre la bataille contre le flot de nouveaux virus…

Que dire de la base de données ?

Outre la manière différente dont les programmes sont écrits pour Windows, il y a un autre problème : DEC a créé sur leurs ordinateurs VAX/VMS un autre type de base de données que celles, relationnelles, utilisées aujourd'hui, une base de données de réseau nommée DBMS32 (DataBase Management System 32-bit). Dans ce cas, le mot « réseau » ne se réfère pas à un réseau local ou à l'Internet, mais à l'organisation interne des données. Les différents types de données ne sont pas liés les uns aux autres par une relation, mais par une liste doublement liée. Trouver le premier, le suivant ou le dernier membre d'un ensemble est rapide comme l'éclair, car il suffit de suivre le lien, au lieu de lire tous les enregistrements de la base de données pour voir si la relation est satisfaite. Lors de la migration d'un système VAX/VMS vers Windows, vous devez également migrer des bases de données réseau (si vous les utilisez) aux bases de données relationnelles.

2

Linux! As I was thinking about an alternative way to migrate, it appeared to me that VAX-Pascal is largely compatible with Free Pascal. And the way Linux works is largely compatible with VAX/VMS. So I decided to try to convert our programs to Lazarus/Free Pascal, but found that there is no replacement for DBMS32. So…. I created one. It’s written in Lazarus/Free Pascal, and includes a GUI replacement for DBQ – the database client interface program used to read or enter data. Not entirely up to spec yet, but that will improve over time. I replaced the interconnection program HDN by a set of programs: one to send and one to receive the data, operating system independent, and with the data in readable form, formatted in XML-style, while using folders as send and receive buffers. To be used by our applications, I created an API equal to that of HDN, so the applications remain untouched. This causes less risk of failure, because they just needed to be linked to another library. It is not going to be easy… The way I state this might suggest that migrating a VAX/VMS system to Linux (in my case Linux Mint 17) is a walk in the park. This is, unfortunately, not true. There are third party programs used on VMS systems which have no Linux replacements. You would have to rewrite those programs based on their functional/technical description, or find another way to deal with the functions they perform. There are libraries offered by DEC included in VMS with no counterpart in Linux, such as FDMS (Forms Display Management System). And then there are technical functions used in VMS with no apparent replacement in Linux, such as eventflags and logicals. In the following articles, I will go more in depth to describe how I replace these, and other functionality such as mailboxes (IPC), and how to deal with Asynchronous System Traps, DCL and file version numbers.

Vers Linux !

En réfléchissant à une autre façon de faire cette migration, il m'a semblé que le VAX-Pascal était largement compatible avec le Free Pascal. Et la façon dont fonctionne Linux est largement compatible avec VAX/VMS. Je décidai donc de tenter de convertir nos programmes en Lazarus/Free Pascal, mais j'ai constaté qu'il n'y a pas de remplaçant pour DBMS32. Donc… j'en ai créé un. Il est écrit en Lazarus/Free Pascal, et comprend un remplaçant de l'interface graphique DBQ - le programme d'interface client de la base de données utilisé pour lire ou saisir des données. Il n'est pas encore tout à fait conforme aux spécifications, mais il va s'améliorer au fil du temps. J'ai remplacé le programme d'interconnexion HDN par un ensemble de programmes : l'un pour envoyer et l'autre pour recevoir les données, indépendants du système d'exploitation et affichant les données sous une forme lisible, formatées en style XML, tout en utilisant des dossiers comme files d'envoi et de réception. Pour être utilisé par nos applications, j'ai créé une API similaire à celle de HDN, de sorte que les applications restent intactes. Cela provoque moins de risque d'échec, parce qu'elles ont juste besoin d'être liées à une autre bibliothèque.

Mais ça ne va pas être facile…

La façon dont j'écris ceci pourrait suggérer que la migration d'un système VAX/VMS vers Linux (dans mon cas, Linux Mint 17) est une promenade de santé. Ceci n'est, malheureusement, pas vrai. Il existe des programmes tiers utilisés sur les systèmes VMS qui n'ont pas d'équivalents Linux. Il faudrait réécrire ces programmes en fonction de leur description fonctionnelle/technique, ou trouver une autre façon de réaliser les fonctions qu'ils remplissent. Il existe des bibliothèques proposées par DEC incluses dans VMS sans contrepartie sous Linux, comme FDMS (Forms Display Management System - Gestionnaire d'affichage des formulaires). Et puis il y a des fonctions techniques utilisées dans VMS sans équivalence apparente sous Linux, comme les eventflags et les logiques. Dans les articles suivants, je vais décrire plus en détail comment je les remplace, ainsi que d'autres fonctionnalités telles que les boîtes aux lettres (IPC), et comment gérer les événements asynchrones du système, le DCL et les numéros de version de fichier.

If you need help… Because my company is not the only one that wants to migrate away from VAX/VMS, I am willing to provide DBMS32 and the other replacements as open source under the GPL license to anyone who needs it. And I am offering to assist in the conversion of your VAX/VMS programs. This will be magnitudes cheaper than a complete re-engineering and conversion to Windows and there is a much smaller chance of disruption of the manufacturing process during the migration, as the conversion is almost 1-on-1. I think the advantages of a network database would be interesting for new projects as well. If there are enough people who would like to know more about using network databases and their (dis)advantages, I will write some articles on how a network database is organized and how it can be used in comparison to a relational database. Next month In the next article, I will explain what eventflags are, what they are used for, and why they are so important to dedicate an article to them.

Si vous avez besoin d'aide…

Parce que mon entreprise n'est pas la seule voulant quitter VAX/VMS, je suis prêt à fournir DBMS32 et les autres remplaçants en Open Source sous licence GPL à tout ceux qui en ont besoin. Et je propose d'aider à la conversion de vos programmes VAX/VMS. Ce sera énormément moins cher qu'une refonte complète et une conversion vers Windows, et il y a une chance beaucoup plus faible de perturbation de l'usine lors de la migration, puisque la conversion est presque du un pour un.

De même, je pense que les avantages d'une base de données réseau serait intéressants pour les nouveaux projets aussi. S'il y a assez de personnes qui veulent en savoir plus sur l'utilisation des bases de données réseau et leurs (dés)avantages, j'écrirai quelques articles sur la façon dont une base de données réseau est organisée et comment elle peut être utilisée en comparaison avec une base de données relationnelle.

Le mois prochain

Dans le prochain article, j'expliquerai les eventflags : ce qu'ils sont, leur rôle et pourquoi ils sont si importants qu'il faille leur consacrer un article entier.

issue105/tutoriel1.txt · Dernière modification : 2016/02/06 14:42 de andre_domenech