Introduction au langage Natural et problematiques de migration vers Java
- categories
- Uncategorized
- published
- reading time
- 3 minutes
Cet article porte sur le sujet de mon stage actuel qui consiste en la migration d’ancien modules en Natural. Les faits sont les suivants :
Natural est un langage de programmation proche du Cobol créé par la société Software AG, et conçu pour gérer les accès à une base de donnée hiérarchique appelé Adabas. Il a de plus été adapté pour pouvoir être utilisé avec des bases de données relationnelle comme Oracle dans un contexte Unix.
Un certain nombre de fonctionnalités de Natural permettent une grande performance dans les traitements, par exemple il est possible, lors de l’exécution d’un SELECT SQL, de réaliser des traitements en parallèle en considérant le SELECT comme une boucle.
Pareillement, il est possible de définir une vue qui va servir de variable de tampon stockant certaines colonnes de la table considérée, ceci via la commande SELECT … INTO (INTO étant un mot clé Natural dans ce cas précis, et non plus SQL)
Voilà un exemple de code Natural permettant d’illustrer ceci, la table est nommé SQL-PERSONNEL :
DEFINE DATA LOCAL 01 PERS VIEW OF SQL-PERSONNEL 02 NAME 02 AGE END-DEFINE SELECT * INTO VIEW PERS FROM SQL-PERSONNEL WHERE NAME LIKE 'S%' OBTAIN NAME IF NAME = 'SMITH' ADD 1 TO AGE UPDATE END-IF END-SELECT
Un point important est qu’en Natural toutes les variables sont en fait global, à l’échelle d’une routine, ou sous-routine.
- Problématique de migration de Natural vers Java
Nous avons pointé du doigt certains traitements qui n’était pas commun à Java, ainsi en Java il n’est pas possible d’exécuter une requête SQL et de réaliser des traitements sur le jeu de résultat de cette requête en parallèle, ce qui pose des problème de performance car il faut alors effectuer un post-traitement sur les résultats.
De plus Natural est un langage fonctionnel qui possède une autre particularité loin de Java : les commandes ESCAPE TOP, ou ESCAPE BOTTOM permettent de réaliser des Goto et sont utilisés très souvent.
Le plus souvent ils sont utilisés lors de boucles comme les SELECT, et s’apparentent à des continue; ou des break; en Java.
Le fait que Natural n’utilise que des variables globales pose des problèmes de performance avec Java et il faut donc accorder une attention particulière à ces variables pour les remplacer autant que possible par des variables locales au sein de méthodes ou par des paramètres.
De plus et pour finir le mécanisme des exceptions de Java n’existe pas en Natural, et les erreurs sont propagés grace à ces variables globales, il est donc impératif de définir les stratégies de gestion d’erreurs après analyse du programme Natural.