Ejemplo n.º 1
0
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))
Ejemplo n.º 2
0
    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))
Ejemplo n.º 3
0
    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))
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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))
Ejemplo n.º 6
0
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()
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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