2015-08-29 2 views
-1

Я разработчик COBOL и недавно изучил Python.Группа Python и вспомогательная переменная (родительская и дочерняя переменная)

Я хотел бы знать, что такое Python-эквивалент компоновки записей в COBOL, поскольку я рассматриваю подготовку кода-конвертера от COBOL до Python. COBOL-записи-макеты выглядят так.

01 GRP-VAR. 
     05 GRP-1. 
       10 G1-VAR-1  PIC X(10). 
       10 G2-VAR-2  PIC X(40). 
     05 GRP-2. 
       10 G2-VAR-1  PIC 9(4). 
       10 G2-VAR-2  PIC 9(20). 

Я знаю, что в python нам не нужно явно определять переменные, но мы можем. То, что я хотел бы выполнить в python, есть, как показано ниже.


VarA = " Test A" 
VarB = " Test B" 
VarC = # some statement(s) that Make VarA and VarB child of VarC. Not (VarA+VarB) 
Print (VarC) # This will print " Test A Test B" 
VarB = " Test X" 
print (VarC) # This should print " Test A Test X" instead of " Test A Test B" 

Чтобы динамически изменять содержимое родительской переменной Varc, когда Vara или VarB изменить его содержимое в программе.

+1

Вы можете лучше объяснить, как вы хотите использовать это в python. –

+0

Пожалуйста, ** отредактируйте этот вопрос **, вместо того, чтобы снова просить то же самое – jonrsharpe

+0

Конечно, хотя мой 1-й вопрос не публиковал. Спасибо – Sumanogeek

ответ

1

Самое близкое в питона к структуре группы Cobol «s является class

ваш пример Cobol в Python становится:

class grp1: 
    def __init__(self): 
     self.v1 = "asd"  
     self.v2 = "qwerty" 

    def text(self): 
     return self.v1 + self.v2 

class grpvar: 
    def __init__(self): 
     self.g1 = grp1() 
     self.g2 = grp1() 

    def text(self): 
     return self.g1.text() + self.g2.text() 

myvar = grpvar() 

myvar.g2.v1 = "wsxedc" 

print "d) " + myvar.text() 

примерно эквивалентно Cobol. Если вы хотите читать/писать, как вы делаете cobol, вам нужно писать методы кодирования/декодирования.


Чтобы дать такую ​​же функциональность как Cobol-IO, посмотреть на Protocol Buffers или avro. Вам нужно больше опыта в питона, прежде чем пытаться эти пакеты


Если вы хотите чтения/записи Cobol файлы, есть stingray, я никогда не пробовал

в качестве альтернативы, если вы используете Jython, вы можете получить доступ к библиотекам Java/Cobol.