Node.cobol / Node.fortran : ex�cuter du code COBOL et Fortran dans Node.js
et inversement gr�ce � ces biblioth�ques

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 : S�lectionner tout - Visualiser dans une fen�tre � part
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 : S�lectionner tout - Visualiser dans une fen�tre � part
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 : S�lectionner tout - Visualiser dans une fen�tre � part
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 : S�lectionner tout - Visualiser dans une fen�tre � part
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.