pycobol package¶
arbrezone¶
- class ArbreZone(*args)¶
Bases :
object
- cette classe est un conteneur pour stocker des objets de
classe mere et de classe fille Elle implémente le pattern singleton
>>> obj = ArbreZone() >>> obj.zone.append('1') >>> obj2 = ArbreZone() >>> print(obj2.zone) ['1']
- __init__(*args)¶
- autonomme(glob)¶
- recherche_nom(nom)¶
retourne l’objet Zonegroupe ou ZonefilsSimple correpondant au nom
- Paramètres:
nom (str) – Attribut “nom” de l’objet
- Renvoie:
Un objet
pycobol.ZoneGroupe
oupycobol.ZoneFilsSimple
ou None
- recherche_rang(n)¶
On essaye de trouver le rang COBOL (niveau) de l’element supérieur
La valeur 0 est retournée par defaut.
- Paramètres:
n (int) – rang de l’element en cours de traitement
- Renvoie:
niveau superieur ou 0
- reset()¶
Remise à zero de toutes les structures
- retroArbre()¶
Reconstitution des dependances des zones en partant des zones élémentaires
- vidage()¶
Retourne la liste des zones et la liste des zones redefinis
- Renvoie:
un tuple de deux listes
- Type renvoyé:
tuple(list, list)
comportement¶
- class Comportement(type_: str, longueur: int, valeur: str)¶
Bases :
object
Permet de cadrer les variables de type ALN et NUM
- Paramètres:
type – str
longueur – int
valeur – str
>>> obj = Comportement('ALN' , 10 , None) >>> obj.initialize() >>> obj.valeur_externe ' ' >>> obj = Comportement('ALN' , 10 , 'eric' ) >>> obj.initialize() >>> obj.valeur_externe 'eric ' >>> len(obj.valeur_externe) 10 >>> obj = Comportement('NUM' , 10 , None ) >>> obj.initialize() >>> obj.valeur_externe '0000000000' >>> obj = Comportement('NUM' , 10 , 50 ) >>> obj.initialize() >>> obj.valeur_externe '0000000050' >>> len(obj.valeur_externe) 10 >>> obj = Comportement('SNUM' , 10 , None ) >>> obj.initialize() >>> obj.valeur_externe '+0000000000' >>> obj = Comportement('SNUM' , 10 , -50 ) >>> obj.initialize() >>> obj.valeur_externe '-0000000050' >>> len(obj.valeur_externe) 11
- __init__(type_: str, longueur: int, valeur: str) None ¶
- classmethod from_object(obj)¶
Methode de classe retournant un objet comportement à partir d’une instance de zone
- Param:
zone : objet zonage
- initialize()¶
charge les zones en fonction de leur nature
- longueur: int¶
- move_value(objetzone, newvaleur)¶
methode pour affecter une valeur à une zone L’objet comportement est dejà instancié il connait la valeur de départ
- Paramètres:
newvaleur – Nouvelle valeur a affecter (int ou str)
- type_: str¶
- valeur: str¶
- class ComportementFloat(decimale, *args)¶
Bases :
Comportement
- __init__(decimale, *args)¶
- classmethod from_object(obj)¶
Methode de classe retournant un objet comportement à partir d’une instance de zone :param: zone objet zonage
- initialize()¶
charge les zones en fonction de leur nature
- longueur: int¶
- move_value(objetzone, newvaleur)¶
methode pour affecter une valeur à une zone L’objet comportement est dejà instancié il connait la valeur de départ :newvaleur: float ou int
- type_: str¶
- valeur: str¶
- class Value(origine: str)¶
Bases :
object
Cette classe prend en charge les valeurs : type str ou numerique presence d “un signe , partie entiere ou decimale
>>> obj = Value("eric") >>> obj.numerique False >>> obj = Value(1961) >>> obj.numerique True
- __init__(origine: str) None ¶
- formate: str¶
- non_signe: str¶
- numerique: bool¶
- origine: str¶
zonage¶
- class Flottant(decimale, nom, pic, valeur_initiale=None, usage='DISPLAY')¶
Bases :
Zone
Gère les zones a virgule flottante PIC …V…
- initialize()¶
injection du comportement
- nom: str¶
- rang: int¶
- section: str¶
- class Zone(nom: str, rang: int, section: str, son_type: str = 'ALN', usage: str = 'DISPLAY', longueur_utile: int = 0, valeur_interne: str = '', valeur_externe: str = '', picture: str = '', valeur_initialisation: str = '', comportement_associe: object | None = None)¶
Bases :
object
Classe de base des zones COBOL
- comportement_associe: object = None¶
- initialize()¶
injection du comportement
- longueur_utile: int = 0¶
- move_value(newvalue)¶
Cette methode permet d affecter des valeurs à une zone. Elle utilise les objets de la classe comportement.
- Paramètres:
newvalue – nouvelle valeur
- nom: str¶
- picture: str = ''¶
- rang: int¶
- section: str¶
- son_type: str = 'ALN'¶
- usage: str = 'DISPLAY'¶
- valeur_externe: str = ''¶
- valeur_initialisation: str = ''¶
- valeur_interne: str = ''¶
- zone_77: ClassVar[list] = []¶
- class ZoneIndependante(nom, pic, valeur=None, usage='DISPLAY')¶
Bases :
Zone
Zones qui sont en dehors des zones groupes
- classmethod from_ligne(ligne)¶
Prise en charge des zones elementaires de niveau 77 a partir d’une ligne COBOL
- Paramètres:
ligne (str) – la ligne cobol a analyser
>>> ligne = ' 77 MAZONE PIC X(10).' >>> obj =ZoneIndependante.from_ligne(ligne) >>> obj.son_type 'ALN' >>> obj.longueur_utile 10 >>> obj.picture 'X(10)'
>>> ligne = " 77 MAZONE PIC X(10) VALUE 'er'." >>> obj =ZoneIndependante.from_ligne(ligne) >>> obj.son_type 'ALN' >>> obj.longueur_utile 10 >>> obj.picture 'X(10)' >>> obj.valeur_initialisation 'er' >>> obj.valeur_interne 'er'
>>> ligne = " 77 MAZONE PIC 999." >>> obj =ZoneIndependante.from_ligne(ligne) >>> obj.son_type 'NUM' >>> obj.longueur_utile 3
>>> obj.picture '999' >>> obj=ZoneIndependante.from_ligne("77 NPAG PIC 9999 VALUE 0.") >>> obj.valeur_interne 0
>>> obj=ZoneIndependante.from_ligne("77 NPAG PIC 9999 VALUE ZERO.") >>> obj.valeur_interne 0 >>> obj=ZoneIndependante.from_ligne("77 NPAG PIC S999V99 VALUE ZERO.") >>> obj.valeur_interne 0 >>> obj.son_type 'SFLOAT' >>> obj.longueur_utile 5 >>> obj=ZoneIndependante.from_ligne("77 NPAG PIC S999 VALUE ZERO.") >>> obj.valeur_interne 0 >>> obj=ZoneIndependante.from_ligne("77 NPAG PIC S9(3) VALUE ZERO.") >>> obj.valeur_interne 0 >>> obj=ZoneIndependante.from_ligne("77 NPAG PIC 9(3)V99 VALUE ZERO.") >>> obj.valeur_interne 0.0 >>> obj.son_type 'FLOAT' >>> obj.longueur_utile 5 >>> ligne = " 77 MAZONE PIC X(10) VALUE SPACE." >>> obj =ZoneIndependante.from_ligne(ligne) >>> obj.son_type 'ALN' >>> obj.longueur_utile 10 >>> obj.valeur_interne '' >>> ligne = " 77 MAZONE PIC X(10)." >>> obj =ZoneIndependante.from_ligne(ligne) >>> obj.valeur_externe ' ' >>> ligne = " 77 MANUM PIC 9(10)." >>> obj =ZoneIndependante.from_ligne(ligne) >>> obj.valeur_externe '0000000000'
- init_variable()¶
- classmethod liste_ws()¶
- move_from(emetteur)¶
Not implemented
- nom: str¶
- rang: int¶
- section: str¶
zonegroupe¶
- class ZoneGroupe(nom: str, rang: int, pere: int = 0, fils: list = <factory>, son_type: str = 'GRP', usage: str = 'DISPLAY', longueur_utile: int = 0, valeur_interne: str = '', valeur_externe: str = '', section: str = 'NON RENSEIGNE', comportement_associe: object | None = None)¶
Bases :
object
Cette classe prend en charge la creation d’une zone groupe. Par nature cette zone est de type ALN. Sa longueur est la somme des longueurs des composants qui la composent
>>> obj = ZoneGroupe('zoneessai', 1, 0) >>> obj.nom 'zoneessai' >>> objfils = ZoneGroupe('zonefils', 2) >>> obj.ajout_fils_groupe(objfils) >>> len(obj.fils) 1 >>> from zonesimple import * >>> objfilsimp = ZoneFilsSimple('essaifils', 5, picture = '999') >>> obj.ajout_fils_simple(objfilsimp) >>> obj.longueur_utile 3 >>> obj.init_groupe() >>> obj.move_value('ERIC') >>> obj.valeur_externe 'ERI' >>> objfilgrp = ZoneGroupe('essaifils', 2) >>> objfilsimp2 = ZoneFilsSimple('essaifils2',5 , picture = '99') >>> objfilgrp.ajout_fils_simple(objfilsimp2) >>> obj.ajout_fils_simple(objfilgrp) >>> objfilsimp3 = ZoneFilsSimple('essaifils5',5 , picture = 'XXXXX') >>> obj.ajout_fils_simple(objfilsimp3) >>> obj.maj_longueur() 10 >>> obj.longueur_utile 10 >>> obj.init_groupe()
- Paramètres:
nom (str) –
rang (int) –
pere (int) –
fils (obj) –
son_type (str) –
- __init__(nom: str, rang: int, pere: int = 0, fils: list = <factory>, son_type: str = 'GRP', usage: str = 'DISPLAY', longueur_utile: int = 0, valeur_interne: str = '', valeur_externe: str = '', section: str = 'NON RENSEIGNE', comportement_associe: object | None = None) None ¶
- ajout_fils_groupe(other)¶
- ajout_fils_simple(other)¶
- comportement_associe: object = None¶
- fils: list¶
- static get_arbre()¶
- init_groupe()¶
- longueur_utile: int = 0¶
- maj_longueur()¶
normalement tous les ajouts de zones provoquent la mise à jour de la longueur les zones simples sont initialisées , il faut repercuter l’init sur les zones groupes meres La zone groupe doit etre parcourue: pour toute zone simple on reprendra la valeur , si c est une zone groupe il faut elle aussi la parcourir. L’objectif est de mettre à jour les valeurs resultantes.
- maj_valeur()¶
normalement tous les ajouts de zones provoquent la mise à jour de la longueur les zones simples sont initialisées , il faut repercuter l’init sur les zones groupes meres La zone groupe doit etre parcourue: pour toute zone simple on reprendra la valeur , si c est une zone groupe il faut elle aussi la parcourir. L’objectif est de mettre à jour les valeurs resultantes.
- move_to(other)¶
methode interne
- move_value(valeur)¶
- nom: str¶
- pere: int = 0¶
- propage(valeur)¶
- rang: int¶
- static reset_arbre()¶
- retro_propagation()¶
- section: str = 'NON RENSEIGNE'¶
- son_type: str = 'GRP'¶
- static traite_filler(filler, nom)¶
Une zone filler peut avoir des doublons, le nom sera donc formé du nom de la zone accolé avec le nom de la structure supérieure. En cas de doublon un indice est ajouté à l’ensemnle.
- Paramètres:
filler (str) – nom de la zone , a priori souvent égale à filler
nom (str) – nom de la structure supérieure
>>> traite_filler('filler', 'sup') 'filler_sup'
- usage: str = 'DISPLAY'¶
- valeur_externe: str = ''¶
- valeur_interne: str = ''¶
- static vidage()¶
zonesimple¶
- class ZoneFilsSimple(nom: str, rang: int, pere: int = 0, fils: list = <factory>, son_type: str = 'GRP', usage: str = 'DISPLAY', longueur_utile: int = 0, valeur_interne: str = '', valeur_externe: str = '', section: str = 'NON RENSEIGNE', comportement_associe: object | None = None, picture: str = '', valeur_initialisation: str | None = None, decimale: int = 0)¶
Bases :
ZoneGroupe
Cette classe permet de creer des zones simples qui iront sous de zones groupes
>>> obj = ZoneFilsSimple('essaifils', 5, picture = '999')
- decimale: int = 0¶
- initialize()¶
- picture: str = ''¶
- valeur_initialisation: str = None¶
- class ZoneGroupeRedefine(cible, *args, **kwargs)¶
Bases :
ZoneGroupe
Cette classe gère les clauses redefines de type zone groupe Le constructeur doit comporter la cible à redefinir >>> obj = ZoneFilsSimple(“essaifils”, 5, picture = “99999999”) >>> obj2 = ZoneGroupeRedefine(“essaifils”, “essairedefines” ,5) >>> objj = ZoneFilsSimple(“jj”, 6, picture = “99”) >>> objmm = ZoneFilsSimple(“mm”, 6, picture = “99”) >>> objaa = ZoneFilsSimple(“aaaa”, 6, picture = “9999”) >>> obj2.ajout_fils_simple(objj) >>> obj2.ajout_fils_simple(objmm) >>> obj2.ajout_fils_simple(objaa) >>> obj2.init_groupe() >>> a = ZoneGroupe.get_arbre() >>> print (len(a)) 5 >>> arbre = ArbreZone() >>> len(arbre.redefine.keys()) 1 >>> len(arbre.inv_redefine.keys()) 1
- fils: list¶
- nom: str¶
- rang: int¶
- class ZoneSimpleRedefine(cible, *args, **kwargs)¶
Bases :
ZoneFilsSimple
Cette classe gère les clauses redefines de type zone simple Le constructeur doit comporter la cible à redefinir
>>> obj = ZoneFilsSimple('essaifils', 5, picture = '999') >>> obj2 = ZoneSimpleRedefine('essaifils', 'essairedefines' ,5, picture = 'XXX' ) >>> a = ZoneGroupe.get_arbre() >>> print (len(a)) 2 >>> arbre = ArbreZone() >>> len(arbre.redefine.keys()) 1 >>> len(arbre.inv_redefine.keys()) 1
- fils: list¶
- nom: str¶
- rang: int¶
nature_pic¶
- class Nature_pic(pic)¶
Bases :
object
Traitement du format d’une clause PIC
- Paramètres:
pic (str) – format pic à traiter
>>> obj = Nature_pic('999') >>> obj.nature 'NUM' >>> obj.longueur 3 >>> obj = Nature_pic('S999') >>> obj.nature 'SNUM' >>> obj.longueur 3 >>> obj.virgule False >>> obj = Nature_pic('99V9') >>> obj.nature 'FLOAT' >>> obj.longueur 3 >>> obj.longueur 3 >>> obj = Nature_pic('S99V9') >>> obj.nature 'SFLOAT' >>> obj.longueur 3 >>> obj.virgule True >>> obj = Nature_pic('XX') >>> obj.nature 'ALN' >>> obj.longueur 2
- calcul_longueur()¶
- pose_virgule()¶
- support = {'9': 'NUM', 'A': 'ALP', 'S': 'SNUM', 'X': 'ALN'}¶
redefine¶
- class ZoneGroupeRedefine(cible, *args, **kwargs)¶
Bases :
ZoneGroupe
Cette classe gère les clauses redefines de type zone groupe Le constructeur doit comporter la cible à redefinir >>> obj = ZoneFilsSimple(“essaifils”, 5, picture = “99999999”) >>> obj2 = ZoneGroupeRedefine(“essaifils”, “essairedefines” ,5) >>> objj = ZoneFilsSimple(“jj”, 6, picture = “99”) >>> objmm = ZoneFilsSimple(“mm”, 6, picture = “99”) >>> objaa = ZoneFilsSimple(“aaaa”, 6, picture = “9999”) >>> obj2.ajout_fils_simple(objj) >>> obj2.ajout_fils_simple(objmm) >>> obj2.ajout_fils_simple(objaa) >>> obj2.init_groupe() >>> a = ZoneGroupe.get_arbre() >>> print (len(a)) 5 >>> arbre = ArbreZone() >>> len(arbre.redefine.keys()) 1 >>> len(arbre.inv_redefine.keys()) 1
- fils: list¶
- nom: str¶
- rang: int¶
- class ZoneSimpleRedefine(cible, *args, **kwargs)¶
Bases :
ZoneFilsSimple
Cette classe gère les clauses redefines de type zone simple Le constructeur doit comporter la cible à redefinir
>>> obj = ZoneFilsSimple('essaifils', 5, picture = '999') >>> obj2 = ZoneSimpleRedefine('essaifils', 'essairedefines' ,5, picture = 'XXX' ) >>> a = ZoneGroupe.get_arbre() >>> print (len(a)) 2 >>> arbre = ArbreZone() >>> len(arbre.redefine.keys()) 1 >>> len(arbre.inv_redefine.keys()) 1