def geracsv(book, records, arq, signal): try: basename = os.path.basename(book).split('.')[0] col = Columns() js = col.columns(book, signal=signal) fj = [json.loads(line.decode('utf-8')) for line in js] ff = Fixed_files(fj, obj=True) rec_in = [] for record in records: rec_in.append(ff.parse(record)) flds = [str(att['field']) for att in fj] csvs = ';'.join( str(flds)[1:-1].upper().replace(basename + '_', '').replace( "'", "").split(',')) + '\n' csvs = re.sub('FILLER_..', 'FILLER', csvs) fmt = '''"{}"'''.format(str(['{' + f + '}' for f in flds ])[1:-1]).replace("'", "").replace(',', ';') fmt += ".format(**r)" for r in rec_in: for n, f in enumerate(r): csvs += r[n] + ';' csvs += '\n' outcsv = arq.split('.')[0] + '.csv' out = open(outcsv, 'w') out.write(csvs) out.close() return (True, outcsv) except: return (False, traceback.format_exc(sys.exc_info))
def gerpgm(self): try: bookin = file(self.book).readlines() lengthin = str(calc_length(bookin)['lrecl']) col = Columns() bkout = col.columns(self.book, fmt='cbl', signal=self.signal) bookout = '' for b in bkout: bookout += b lengthout = str(calc_length(bookout)['lrecl']) regout = 'WRK-ARQOUTZD-REGISTRO' bookin = Homogenize(bookin) if int(word(bookin[0], 1)) == 1: regin = word(bookin[0], 2).replace('.', '') bookout = change({regin: regout}, bookout) lvl01bookin = '' lvl01bookout = '' else: regin = 'WRK-ARQINPPD-REGISTRO' lvl01bookin = '{:>9} {}.\n'.format('01', regin) lvl01bookout = '{:>9} {}.\n'.format('01', regout) formatout = '' for line in bookin: if 'PIC' in line: if word(line, 2) == 'FILLER': continue fld = word(line, 2) formatout += '{:>15} {:31} OF {}\n'.format( 'MOVE', fld, regin) formatout += '{:>15} {:31} OF {}\n'.format( 'TO', fld, regout) dicProg = { '@PGMID': self.programId, '@DATE': date.today().strftime('%d %b %Y').upper(), '@BOOKIN': os.path.basename(self.book).split('.')[0].upper(), '@SINAL': 'COM' if self.signal else 'SEM', '@BOOKOUT\n': bookout, '@REGIN': regin, '@REGOUT': regout, '@LVL01BKIN\n': lvl01bookin, '@LVL01BKOUT\n': lvl01bookout, '@LENGTHIN': lengthin, '@LENGTHOUT': lengthout, '@FORMATOUT\n': formatout } prog = insAster72(change(dicProg, file('legrpdzd.cbl').read())) progName = os.path.join(self.path, '{}.cbl'.format(self.programId)) progWrite = open(progName, 'w') progWrite.write(prog) progWrite.close() return True, None except: return (False, traceback.format_exc(sys.exc_info))
def gerjob(self): try: basename = os.path.basename(self.book).split('.')[0].upper() col = Columns() bookout = col.columns(self.book, fmt='cbl', signal=False) book_zonado = os.path.join(self.path, '{}_ZD.cpy'.format(basename)) with open(book_zonado, 'w') as bkzd: bkzd.writelines(bookout) lengthout = str(calc_length(bookout)['lrecl']) formatout = '' start = 1 bookin = file(self.book).readlines() bookin = Homogenize(bookin, cbl=True) for line in bookin: if 'PIC' not in line: continue splt_pic = line.split('PIC')[1] repl_pic = splt_pic.replace(' USAGE ', '').replace( 'COMP-3', '').replace('COMP', '').rstrip() ap = ' OUTREC FIELDS=(' if start == 1 else ' ' length = int( str( calc_length(line.replace(splt_pic, repl_pic))['lrecl'])) lenpd = calc_length(line)['lrecl'] pd2zd = ('PD,TO=ZD,LENGTH={:03},'.format(length) if 'COMP-3' in splt_pic else 'BI,TO=ZD,LENGTH={:03},'.format(length) if 'COMP' in splt_pic else '') formatout += '{}{:03},{:03},{}\n'.format( ap, start, lenpd, pd2zd) start += lenpd formatout = formatout[:-2] + ')\n' dicjob = { '@JOBNAME': '{:8}'.format(self.jobname), '@BOOK': basename, '@SORTIN': self.sortin, '@SORTOUT': self.sortout, '@LRECL': lengthout, '@OUTREC\n': formatout } job = change(dicjob, file('jobpk2zd.template').read()) jobName = os.path.join(self.path, '{}.jcl'.format(self.jobname)) with open(jobName, 'w') as jobWrite: jobWrite.write(job) return True, None except: return (False, traceback.format_exc(sys.exc_info))
class Montajson(object): def __init__(self, properties = 'pathProp.txt'): self.properties = properties self.col = Columns() def montajson(self): path = ''.join(open(self.properties).readline().replace("'", "").split()) config = open(os.path.join(path,'config.properties')).readlines() diccnfg = {line.split()[0]:line.split()[1] for line in config} isbook = lambda book: book[-3:].upper() == diccnfg['EXTCPY'] dirfilelist = DirFileList() dirfilelist.setDirFileList(diccnfg['DIRSOULIB']) booklist = dirfilelist.getDirFileList() for book in filter(isbook, booklist): basename = os.path.basename(book).split('.')[0] print book bookwrite = open('{}{}'.format(diccnfg['DIRCNVJSON'], basename + '.json'), 'w') bookwrite.writelines(self.col.columns(book)) bookwrite.close()
def geratxt(book, lines, csv): try: col = Columns() js = col.columns(book) ff = Fixed_files(js, obj=True) lenbook = calc_length(file(book).readlines())['lrecl'] record = ff.parse('0' * lenbook) fj = [json.loads(line.decode('utf-8')) for line in js] fldtype = [(str(att['field']), str(att['type'])) for att in fj] txt = '' for line in lines: r = line.split(';') recordreplace = '' for n, f in enumerate(fldtype): recordreplace += "{} = {},".format(fldtype[n][0] ,r[n] if fldtype[n][1] == 'int' else "'"+r[n]+"'") record = eval('record._replace({})'.format(recordreplace)) txt += ff.unparse(record) outtxt = csv.split('.')[0] nt = 0 while True: filetxt = '{}{}.txt'.format(outtxt, '' if not nt else '({})'.format(nt)) if os.path.exists(filetxt): nt += 1 else: break out = open(filetxt, 'w') out.write(txt) out.close() return (True, filetxt) except: return (False, traceback.format_exc(sys.exc_info))
from columns import Columns col = Columns() book = r'E:\GFCT\Evidencias\cpy\GFCTB092.CPY' bookwrite = open(r'E:\GFCT\Evidencias\cpy\gfctb092.json', 'w') bookwrite.writelines(col.columns(book, signal=False)) bookwrite.close()
from columns import Columns col = Columns() cols = col.columns(r'C:\BNB\S303\ORIGINAIS\BOOK\B303031.txt', signal=False) for c in cols: print c cols = col.columns(r'C:\BNB\S303\ORIGINAIS\BOOK\B303001.txt', fmt='cob',signal=False) for c in cols: print c
from util.HOFs import * from columns import Columns book = r'c:\Publico\Flavio\CMTF\CPY\CMTFW22A.cpy' col = Columns() bkout = col.columns(book, fmt='cbl') bkout from calc_length import * calc_length(bkout) bkin = file(book).readlines() calc_length(bkin) bkin = map(l672, filter(all3(isNotRem, isNotBlank, isNotEjectOrSkip), bkin)) word(bkin[0], 1) #teste do commit via pycharm #teste do commit via pycharm 5.0.4 #teste do commit via pycharm 5.0.4