make cobol in python or python like cobol
Project description
Projet pycobol
Objectifs
Le langage COBOL est partout et il sera difficile de s’en débarrasser. Des solutions de transformation plus ou moins automatiques existent.
Pycobol est avant tout une expérience visant à : - Passer du COBOL au Python - Convertir des structures COBOL en objets Python - Offrir des facilités de manipulations.
Principes.
La première étape vise à convertir la DATA-DIVISION en objet Python Puis à utiliser des méthodes pour retranscrire les manipulations COBOL en Python.
Il est possible d’instancier des structures Python se comportant comme des zones COBOL. Un eventail de classe est proposé pour manipuler des zones simples, zones groupes etc.
La documentation du projet est sur le site read_the_doc
Point d’etape
Exemple d’hello world avec pycobol
Dans un programme Python:
from pycobol import parser_cobol
zg1 =''' PROCEDURE DIVISION.
DISPLAY "Hello world !".
STOP RUN.'''
lignes_cobol = parser_cobol.fake_read_file_proc(zg1)
pgm = parser_cobol.load_procedure(lignes_cobol)
print('Contenu')
print(pgm.vidage())
print('Execution')
pgm.run()
Il affichera:
Contenu Etiquette:Debut_programme instruction:display instruction:stop_run Execution Etiquette: Debut_programme Hello world ! fin du programme
Utilisation de coverage pour mesurer la couverture du code
Utilisation de prospector pour la qualité du code
Utilisation de SPHINX pour la documentation
La documentation est publiée sur le site read_the_doc
Le projet utilise POETRY pour sa mise en oeuvre.
Le traitement des zones élémentaires de niveau 77 est en cours de developpement
Pycobol utilise deux types de test:
Doctest pour les tests de non regression
unittest pour les tests plus complets.
Depuis le répertoire du projet:
Pour lancer les tests intégrés.
python .pycobolzonage.py ou poetry run python .pycobolzonage.py
Pour lancer les tests complets:
python -m unittest discover ou poetry run python -m unittest discover
Utilisation
Le module fonctionne en 2 modes:
Soit en fournissant les lignes COBOL
Soit en instanciant soi-même les objets à manipuler
Exemple à partir du COBOL:
zg2 ='''
10 MADATE.
11 AAAA PICTURE 9(4).
11 MOIS PICTURE 99.
11 JJ PICTURE 99.
10 DATEBRUT REDEFINE MADATE PIC 9(8).'''
Utiliser la méthode : ZoneGroupe.fake_read_file_redefine(zg2) (mise en token)
Puis la methode: ZoneGroupe.read_groupe_from_code(tlignes) (mise en objet)
5 instances seront disponibles prefixées par ‘_’ suivi du nom cobol en minuscule (_mois , etc)
Feuille de route.
Developper la prise en charge des formats non pris en charge (exemple COMP ) FAIT
concevoir la classe des zones groupes: FAIT
Developper la prise en charge des clauses de formatage (exemple BLANK WHEN ZERO): A FAIRE
Prendre en charge les clauses redefine : FAIT
Prendre en charge les FILLERS: FAIT
Prendre en charge les clauses OCCURS : A FAIRE
Mise en place d’un moteur d’exécution : EN COURS
Merci
Eric German
Journal
Le 27/12/22: Mise en place de la documentation avec SPHINX Publication de la documentation sur le site read the docs Refactorisations profondes
Le 23/11/2022:
Refactorisation encore et encore Fin du developpement des zones groupes mais il reste le probleme de la retropropagation Developpment d’une méthode d ajout dynamique à l’espace de nommage: les zones COBOL sont accessibles préfixées par un ‘_’
Le 28/10/2022:
Refactorisation du code.
Reorganisation du dépot.
Début du developpement des zones groupes.
Le 08/10/2022:
Ajout d’un repertoire COBOL qui contiendra des sources COBOL pour étudier le comportement de GnuCOBOL
Developpement du premier exemple de programme utilisant pycobol qui mnanipule des zones de niveau 77
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pycobol-0.1.0.tar.gz.
File metadata
- Download URL: pycobol-0.1.0.tar.gz
- Upload date:
- Size: 15.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.14 CPython/3.9.12 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30800158acf562bcc01871373011532e1e59b65aca90a3517373bc67eb137d93
|
|
| MD5 |
1f5050728425cde1d9bdcac0eeb06656
|
|
| BLAKE2b-256 |
06094b7586eac0449ebabd0be342a42fafe06d3a6b3531ef765a97b5b5bd0958
|
File details
Details for the file pycobol-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pycobol-0.1.0-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.14 CPython/3.9.12 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ceebab52e760e79327d9fa092421a69cf65a21b33f97d2cd6e1675ccf174f5bf
|
|
| MD5 |
46d317814677b9ac021140aab1de99f2
|
|
| BLAKE2b-256 |
fbf92cc80bb00d481bbed459bb563ed3ed72b7d974077ace7351432c35123043
|
Comment contribuer ? .
En installant le projet
et en ajoutant des cas de test dans le fichier pic77ok.txt
En developpant des nouveaux traitements de format.
En faisant des refactorisations de code.
Ajouter de la documentation
En apportant des idées.