Skip to main content

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)

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.

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pycobol-0.1.0.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pycobol-0.1.0-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

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

Hashes for pycobol-0.1.0.tar.gz
Algorithm Hash digest
SHA256 30800158acf562bcc01871373011532e1e59b65aca90a3517373bc67eb137d93
MD5 1f5050728425cde1d9bdcac0eeb06656
BLAKE2b-256 06094b7586eac0449ebabd0be342a42fafe06d3a6b3531ef765a97b5b5bd0958

See more details on using hashes here.

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

Hashes for pycobol-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ceebab52e760e79327d9fa092421a69cf65a21b33f97d2cd6e1675ccf174f5bf
MD5 46d317814677b9ac021140aab1de99f2
BLAKE2b-256 fbf92cc80bb00d481bbed459bb563ed3ed72b7d974077ace7351432c35123043

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page