user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 14-09-2013 13:17:18

WarLocG
#! modo de compet

Juste pour la curiosité - COBOL sur mainframe ca ressemble à quoi ?

Je vais vous afficher une série de capture afin de vous laisser admirer par vous même.

Pour commencer, on ne se sert pas d'un logiciel, tout se fait directement sur un IBM AS/400, étition des fichiers, compilations et édition des liens et enfin execution. Dans cette partie je vous montre la partie 'bash', plus tard je reviendrai sur la partie CICS lorsque j'aurai reçu un projet à faire dessus.


http://www.hodacces.cfwb.be/ , puis le lien (très mal foutu), "je suis une école".

1379157517.png

A noter, si le lien ne fonctionne pas, on peut essayer de passer par la version debug en remplacant hod_login.html par hoddebug.html. Veuillez également noter que même sur les machines Windows de l'école la connexion au mainframe est foireuse voir buggée.

Pour démarrer, on se connecte depuis un site - hod access - (hod pour Host On-Demand), qui va ouvrir une connexion sur un mainframe IBM AS/400 situé rue Royale. Et déjà, premiers gros bémol:

- le site requiert java, mais attention, pas la dernière version de java de chez Oracle, mais une version modifiée par IBM d'une version de java 5 (lien présent à même la page)
- le site vérifie le système d'exploitation, navigateur et la version de java. Donc pour nous utilisateurs de GNU/Linux, cette étape va déjà nous mettre des batons dans les roues. Pour les besoins d'arriver à me connecter, j'ai configuré une machine virtuelle avec Windows XP spécialement conçues pour ne pas rester bloqué la dessus.

Si tous les "prérequis" sont présents, on va démarrer le show:

Première étape de login et mot de passe pour se connecter au mainframe
1379157631.png

Ce qui nous donne ceci:
1379157742.png

Et c'est maintenant que la partie de rigolade commence tongue
-On commence par se connecter à sa session (oui encore un login / mot de passe et c'est loin d'être le dernier...), et on va ensuite rentrer dans "ROSE" (pour ROSCOE) en entrant simplement "rose" dans la partie située en bas
1379157827.png

-De nouveau on nous demande un login / mot de passe. A noter que c'est ici que l'on peut réinitialiser son pass si on l'a oublié.
1379157898.png

-En nous voici dans notre "home": c'est ici qu'on va lister les fichiers, ouvrir des fichiers, effacer des fichiers, soumettre des fichiers à la compilation.
1379158019.png

** Premiers pas dans l'environnement JCL **

-Résultat d'un "dir":
1379158188.png

On va commencer la démo en écrivant un petit programme de démonstration. Alors pour créer un nouveau fichier on utilisera la commande "input" ou "i" pour aller plus vite.
On se retrouve alors dans l'"editeur de texte" (si on peut appeler ca comme ca), sorte de vi pour ceux qui aiment.
1379158542.png

Alors le langage COBOL nécessite de respecter un systeme de "colonnes", les colonnes 1 à 6 sont réservées aux commandes JCL, la 7 est pour les commentaires et pour continuer une ligne, les colonnes 8 à 11 sont le premier niveau de marge et enfin les colonnes 12 et plus sont le deuxieme niveau de marge.

Pour me faciliter la vie avec ces marges, j'ai déja positionné une sorte de "tabulation automatique" sur les colonnes que j'ai besoin a savoir: 7, 8 et 12 via la commande "tab", cette meme commande permet de choisir le caractere servant à "tabuler", j'ai choisi le caractere '$': ainsi avant mon "input" j'ai d'abord entré "tab 7,8,12 & tab $". Et je peux commencer à rentrer mon texte...
1379158689.png

Enfin on soumet et on sauve le travail via la commande "save". Vous remarquerez que les tabulations se sont faites automatiquement sur les bonnes colonnes.
1379159111.png

Alors, "input" et "save" ca ne fonctionne que si le fichier n'existe pas encore. Afin de mettre à jour un fichier déjà existant on procedera différemment via d'autres commandes.
D'abord on utilisera la commande "fetch fichier" ( ou "f fichier" pour aller plus vite ) pour rappatrier le fichier, et enfin on l'attache via la commande "attach" ( ou "a" ) pour commencer à l'éditer. Si on fait attach directement, le fichier que l'on editera sera le dernier en mémoire, donc pas forcément celui qu'on a besoin.
1379160492.png

Ensuite, afin de sauver les modifications sur le fichier, ce ne sera plus "save" mais "update"
1379160624.png

Je vous passe les parties sur "vi", mais l'"editeur de texte" dispose de son propre truc pour rajouter/supprimer/déplacer des lignes, en rentrant une ( deux pour certains ) lettres dans la partie ou sont situées les numeros de lignes. Exemple '000100 ...', pour inserer 10 lignes on placera 'i' suivi du nombre de lignes dans la zone => 'i10100 ...'. Je mettrai des captures la dessus plus tard.

** Compilation et executions des fichiers **

Afin de compiler les programmes en cobol j'ai préalablement du récupérer un fichier, sorte de script entièrement en langage jcl, depuis le compte de la prof. Depuis ce script je peut compiler des fichiers cobol pour nos premiers bash.
1379160857.png

Démonstration en soumettant le fichier de demo. Et vous allez voir tout le chipotage qu'il faut faire a chaque fois pour parvenir à executer son programme.

-On commence par soumettre son programme en passant par le script ( que j'ai nommé cobjcl ) via la commande "submit". Note, ce n'est pas encore le cas ici, mais dans le cas ou il faut lire un fichier séquentiel, le nom du fichier à lire sera présent également.
1379161767.png

-Ensuite on demande à afficher les tâches ( jobs ) en cours via la commande "display" suivi de son "pseudo" ( le code en ands### utilisé pour se connecter ).
1379162370.png

-Ce qui donne une liste des tâches en cours, on voit clairement qu'une tâche a été soumise lors du submit. Cette tâche dispose d'un numero servant à l'identifier et ce numero va nous servir à attacher la tâche via la commande "attach job numero".
1379162454.png

-Ici on a un rapport sur l'état de la tâche, si on retrouve 0 comme résultat en dessous de RC c'est que le code ne contient pas d'erreur au niveau synthaxe et qu'il pourra donc s'executer. On va ensuite lancer la commande "status job" pour afficher un tableau permettant d'attacher l'execution de notre code.
1379162575.png

-Ici le tableau en question. Ce qui nous interresse est le point 6, je place donc un 'a' sur sa ligne afin de l'attacher. Puis j'affiche le résultat en appuyant sur [Enter].
1379162670.png

-Et voila notre superbe "Hello le monde" smile
1379162860.png

Notez qu'il faudra detacher la tâche une fois qu'on a terminé de travailler dessus via la commande "detach job", sinon on se retrouvera avec une chiée de tâches et de numéros et on saura plus laquelle est la bonne.

** Bonus **

Un exercice qui calcule le périmetre et la surface d'un rectangle, afin de vous donner un apercu sur le nombre de ligne que prend un code cobol sur un exercice, ici très simple car il n'y a pas de fichier séquentiel à lire et, bah, c'est juste un programme de base quoi.

1379163311.png

Note: j'ai oublié de le mentionner, il n'y a pas de "scrolling" sur mainframe. Tout est "ecran par ecran". Les passages d'une page à une autre se font via les touches F1, F2. F3 et F4 servant a revenir tout en haut et tout en bas, et F5 et F6 c est pour aller a gauche ou droite.

1379163417.png

Compilé et executé:
1379163505.png


Avant de poser vos questions, jeter un oeil ici
Mon CodeVault et Wiki : ici
Les messages privés envers le staff sont uniquement pour les cas d'urgence ou affaires privées (personnelles). Les demandes se feront exclusivement sur le forum. Merci de respecter cette clause sous peine de sanctions.

Hors ligne

#2 14-09-2013 14:27:40

IceF0x
#! Gourou Linux

Re : Juste pour la curiosité - COBOL sur mainframe ca ressemble à quoi ?

Je vous invite à découvrir le site http://www.opencobol.org/

Et le tuto de notre modo préféré WarLocG qui provient de notre ancien forum

Si vous avez envie de tester le langage COBOL sur votre machine, je vous présente open-cobol

Liens:

site de téléchargement : http://sourceforge.net/projects/open-cobol/
site de FAQ + téléchargement du pdf : http://opencobol.add1tocobol.com/
THE pdf pour aider à mieux comprendre (en anglais) : http://opencobol.add1tocobol.com/OpenCO … 0Guide.pdf

Compilation:

Note: Vous pourriez avoir besoin d'installer libgmp-dev et libdb-dev pour compiler le programme.

vous téléchargez le tar.gz depuis le site, ensuite

tar -xvf open-cobol-1.1.tar.gz
cd open-cobol-1.1/
./configure
make && sudo make install
sudo ldconfig

Après on peut commencer a tester ce "merveilleux" langage.

Un petit cadeau de ma part, pour tester:

000000* IDENTIFICATION DIVISION
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. TESTCOB.
000300 AUTHOR. WARLOCG.
000400
000500* ENVIRONMENT DIVISION 
000600 ENVIRONMENT DIVISION.
000700
000800* DATA DIVISION 
000900 DATA DIVISION.
001000 WORKING-STORAGE SECTION.
001100 77 MSG PIC X(20) VALUE "SALUT TOUT LE MONDE".
001200
001300* PROCEDURE DIVISION 
001400 PROCEDURE DIVISION.
001500 PROG.
001600     DISPLAY MSG.
001700     STOP RUN.

Compilation du code source:

cobc -Wall test.cob -o testcob

Et test:

./testcob

Réalisé sans trucage:

test-open-cobol-39337ec.png


Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#3 14-09-2013 14:36:59

WarLocG
#! modo de compet

Re : Juste pour la curiosité - COBOL sur mainframe ca ressemble à quoi ?

Une excellente alternative que j'avais trouvé également mais qui demande à creuser un peu voir ce qu'on peut faire avec et quelles sont ses limites. Un truc que je ne peux pas faire avec déjà c'est au niveau des fichiers séquentiel à lire et qui se trouvent sur le mainframe. Pareil au niveau de l'impression, ensuite je ne sais même pas ce que donnerait la partie CICS depuis le logiciel mais je le trouve néamoins très pratique car en plus il gère le "cobol classique" en plus d'une synthaxe dérivée plus facile à lire. Voir sur le lien pour plus d'infos.


Avant de poser vos questions, jeter un oeil ici
Mon CodeVault et Wiki : ici
Les messages privés envers le staff sont uniquement pour les cas d'urgence ou affaires privées (personnelles). Les demandes se feront exclusivement sur le forum. Merci de respecter cette clause sous peine de sanctions.

Hors ligne

Pied de page des forums