Developpez.com - Rubrique JavaScript

Le Club des Développeurs et IT Pro

Node.cobol / Node.fortran : exécuter du code COBOL et Fortran dans Node.js

Et inversement grâce à ces bibliothèques

Le 2016-05-18 16:12:38, par vermine, Expert éminent sénior
Node.cobol et Node-cobol sont des ponts entre Node.js et COBOL qui vous permettent d'exécuter du code Node.js depuis du code COBOL et inversement.

Le concept semble plutôt étrange. Surtout si, comme moi, vous pensez que le COBOL n'est plus trop utilisé et est appelé à disparaître, remplacé par des langages bien plus récents. Eh bien, selon les recherches d'autres personnes, il s'avère que le langage est encore fortement présent. Après une soixantaine d'années d'existence, ce langage multiplateforme (et même orienté objet en cours de route) est utilisé principalement dans des applications héritées même si personne ne s'en soucie vraiment.

Et donc ? Ionică Bizău explique que son but était de lier ce vieux langage (sans être péjoratif) avec une technologie plus récente : Node.js, qu'il connaissait déjà. Il a d'ailleurs fait ça « pour le fun ».

Toutefois, vous avez maintenant la possibilité de rendre disponible votre application COBOL directement sur le Web (un Web service, par exemple). Sympa ! À l'inverse, vous pouvez exécuter un serveur Web à partir de code COBOL. On pourrait se demander si ce n'est pas plus sûr d'utiliser le COBOL ainsi au lieu de le migrer, avec tout ce que ça implique.

En pratique, les ponts utilisent le compilateur GnuCOBOL qui doit donc être installé. Voici les exemples donnés par l'auteur. C'est d'abord le fait d'exécuter du COBOL dans du JavaScript :

Code javascript :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  
// Dependencies 
var Cobol = require("cobol"); 
  
// Execute some COBOL snippets 
Cobol(function () { /* 
       IDENTIFICATION DIVISION. 
       PROGRAM-ID. HELLO. 
       ENVIRONMENT DIVISION. 
       DATA DIVISION. 
       PROCEDURE DIVISION. 
  
       PROGRAM-BEGIN. 
           DISPLAY "Hello world". 
  
       PROGRAM-DONE. 
           STOP RUN. 
*/ }, function (err, data) { 
    console.log(err || data); 
}); 
// => "Hello World"

Et ensuite, le fait d'utiliser du JavaScript dans du COBOL :

Code cobol :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
* Compile this file together with the node.cobol modules: 
*  $ cobc -x example/main.cbl lib/node-exec-* 
* Then execute the binary file: 
*  $ ./main 
IDENTIFICATION DIVISION. 
PROGRAM-ID. MAIN. 
 
DATA DIVISION. 
  WORKING-STORAGE SECTION. 
  01 NODEJS-CODE PIC X(100) value "console.log('Hello World!')". 
 
PROCEDURE DIVISION. 
* Execute a short Node.js snippet 
   CALL 'EXEC_NODEJS' USING NODEJS-CODE 
 
   DISPLAY "Starting an HTTP server on port 8000". 
 
* Convert an image into ASCII/ANSI art 
   CALL 'EXEC_NODEJS_FILE' USING "example/grace-hopper.js" 
 
   DISPLAY "Starting an HTTP server on port 8000". 
 
* Starting an HTTP server in Node.js 
   CALL 'EXEC_NODEJS_FILE' USING "example/server.js". 
STOP RUN.

Les pages de Node.cobol et Node-cobol sur GitHub.

Super.
- Oui, mais, le titre, là, il parle de Fortran. C'est quoi le rapport ?

Fort de son succès totalement inattendu, et de son amusement totalement personnel, Ionică Bizău a réitéré l'expérience avec le Fortran. À peu de choses près, vous remplacez tous les termes COBOL par Fortran dans ce qui précède et vous obtenez les ponts Node.fortran et Node-fortran.

Le premier vous permet d'exécuter du code Node.js depuis le code Fortran :

Code fortran :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  
program nodejs_module_example 
use nodejs 
  
implicit none 
  
! Let's execute a Node.js file 
call runNodejsPath("example/index.js", .false.); 
! => "Hello from a Node.js file." 
  
print *, "An HTTP server is going to be started on port 9000." 
  
! And now let's execute some Node.js code right here 
call runNodejs("const http = require('http');& 
	&http.createServer((req, res) => {& 
	&  res.end('Hello World from a Node.js server started& 
	& from Fortran!')& 
	&}).listen(9000);", .true.); 
  
end program nodejs_module_example

Le second vous permet d'exécuter du code Fortran depuis le code Node.js :

Code javascript :
1
2
3
4
5
6
7
8
9
10
11
12
  
const fotran = require("fortran"); 
  
// Let's run some Fortran stuff 
fotran(` 
      program hello 
          print *, "Hello World!" 
      end program hello 
`, (err, data) => { 
    console.log(err || data); 
    // => Hello World 
});

Et voilà, le tour est joué !

Les pages de Node.fortran et Node-fortran sur GitHub.

Et vous ?

Programmez-vous encore en COBOL ou en Fortran ?
Que pensez-vous de l'intégration des anciens langages avec les nouveaux ?

Retrouver les cours et tutoriels pour apprendre Node.js.
  Discussion forum
3 commentaires
  • GilbertLatranche
    Membre averti
    Je crains que tout Node n'ait été fait pour le fun, le problème est qu'il a été pris au sérieux...

    [/troll]
  • Mouke
    Membre confirmé
    Je crois que quelque chose comme 70% des traitements bancaires mondiaux sont encore réalisés en COBOL. Donc oui, c'est vieux mais c'est encore très utilisé. C'est notamment une compétence très recherchée dans le bancaire.

    Ca peut permettre justement aux banques à utiliser Node.js à la place des applications J2E/ASP (qui communiquent avec les app COBOL, je n'ai jamais réellement trop su comment ça fonctionnait en interne). La vraie question est : Est-il intéressant d'abandonner Java/.NET ? Pas sur.
  • Gugelhupf
    Modérateur
    Mouke, les applications Java EE ou ASP.NET n'executent pas de code COBOL comme dans ces exemples Node.js. A en croire la forme de la chose, l'idée consiste à éxecuter le COBOL non pas sur un Mainframe mais un simple serveur Node.js, ce qui ne risque pas d'arriver car serait considéré comme une hérésie pour des questions politiques.