ACHEI ESSE FONTE, COM DESCRIÇOES DE CADA COMNDO PGMASM CSECT USING *,3,4 ESTABELECE REGISTRADORES 3 E 4 * COMO BASE STM 14,12,12(13) SALVA REGISTRADORES NA SAVEAREA * DO CHAMADOR (SIST OPERACIONAL) LR 3,15 SALVA ENDERECO PONTO DE CARGA LA 3,0(3) ZERA PRIM BYTE A ESQUERDA LA 4,1 CARREGA NRO 1 LA 4,4095(3,4) DEIXA O 4 COM 4096 A + QUE O 3 ST 13,MYSAVE+4 SALVA O 13 (ENDER SAVEAREA DO * CHAMADOR) NA SAVEAREA+4 LA 15,MYSAVE CARREGA ENDER SAVEAREA DO PROG ST 15,8(13) SALVA END SAVEAREA DO PROG * NA SAVEAREA+8 DO CHAMADOR LR 13,15 ENDER SAVEAREA DO PROG NO 13 ABRIR EQU * OPEN (ENTRA,INPUT) ABRE ARQUIVO ENTRADA OPEN (RELAT,OUTPUT) ABRE ARQUIVO RELATORIO LEDENOVO BAL 14,LERENTRA EXECUTA ROTINA LEITURA CLI FIMENTRA,C'S' VERIFICA SE EOF BE FECHAR SE EOF DESVIA PARA FECHAR NAOCABOU EQU * SE NAO EOF BAL 14,IMPRIME EXECUTA ROTINA DE IMPRESSAO B LEDENOVO DESVIA PARA LER OUTRO REGISTRO FECHAR CLOSE (ENTRA,,RELAT) FECHA ARQUIVOS LA 2,0 ZERA REGISTRADOR 2 L 13,MYSAVE+4 RESTAURA END.SAVEAREA CHAMADOR ST 2,16(13) RETURN CODE ZERO ONDE VAI * RESTAURAR REGISTRADOR 15 LM 14,12,12(13) RESTAURA REGISTRADORES BR 14 TERMINA PROGRAMA *--------------------------------------------------------------------- * ROTINA DE LEITURA ------------------------------------------- *--------------------------------------------------------------------- DC A(0) PARA GUARDAR ENDERECO RETORNO LERENTRA EQU * PROCEDIMENTO DE LEITURA ST 14,LERENTRA-4 SALVA ENDERECO RETORNO * (INSTRUCAO SEGUINTE AO BAL) GET ENTRA,AE LE REGISTRO LOGICO AP WLIDOS,=P'1' SOMA 1 EM CONTADOR LIDOS B SAILER DESVIA PARA SAIDA ROTINA EOFENTRA EQU * SE EOF NO GET VEM PRA CA MVI FIMENTRA,C'S' CONSTANTE 'S' PARA FLAG EOF SAILER EQU * SAIDA L 14,LERENTRA-4 PEGA ENDERECO DE RETORNO BR 14 VOLTA PARA APOS O BAL *--------------------------------------------------------------------- * IMPRIME ------------------------------------------- *--------------------------------------------------------------------- DC A(0) PARA GUARDAR ENDERECO RETORNO IMPRIME EQU * PROCEDIMENTO DE IMPRESSAO ST 14,IMPRIME-4 SALVA ENDERECO DE RETORNO CP WLINS,=P'24' COMPARA SE FIM DE FOLHA BNH IMPMESMO SE MENOR OU IGUAL DESVIA BAL 14,CABEC SE MAIOR EXECUTA ROTINA CABEC IMPMESMO EQU * MVI AS,C' ' ESPACEJAMENTO SIMPLES UNPK LDETNRO,WLIDOS DESCOMPACTA NRO REG LIDO OI LDETNRO+4,X'F0' FORCA ZONA 'F' MVC LDETTXT,AE REG LIDO PARA LINHA DETALHE MVC AS,LDET LINHA DETALHE PARA LINHA GERAL PUT RELAT,AS IMPRIME AP WLINS,=P'1' SOMA 1 NO CONTADOR DE LINHAS SAIIMPRI EQU * SAIDA DA ROTINA L 14,IMPRIME-4 RESTAURA ENDERECO PARA VOLTAR BR 14 VOLTA PARA INSTRUCAO APOS BAL *--------------------------------------------------------------------- * CABECALHO ------------------------------------------- *--------------------------------------------------------------------- DC A(0) PARA GUARDAR ENDERECO RETORNO CABEC EQU * PROCEDIMENTO DE CABECALHO ST 14,CABEC-4 SALVA ENDERECO PARA RETORNO ZAP WLINS,=P'0' ZERA CONTADOR DE LINHAS AP WPAGS,=P'1' SOMA 1 NO CONTADOR DE PAGINAS MVI AS,C'1' ESPACEJAMENTO : SALTAR FOLHA MVC LCABZPAG,=X'4020204B202120' MASCARA DE EDICAO ED LCABZPAG,WPAGS EDITA NRO DA PAGINA MVC AS,LCABZ LINHA LCABZ PARA LINHA GERAL PUT RELAT,AS IMPRIME LINHA LCABZ MVC AS,LCAB1 LINHA CABEC1 PARA LINHA GERAL PUT RELAT,AS IMPRIME LINHA CABEC1 MVI AS,C' ' ESPACEJAMENTO SIMPLES MVC AS,LCAB2 LINHA CABEC2 PARA LINHA GERAL PUT RELAT,AS IMPRIME LINHA CABEC2 MVC AS,LCAB3 LINHA CABEC3 PARA LINHA GERAL PUT RELAT,AS IMPRIME LINHA EM BRANCO AP WLINS,=P'3' SOMA 3 NO CONTADOR DE LINHAS SAICABEC EQU * SAIDA DA ROTINA L 14,CABEC-4 RESTAURA ENDER VOLTA NO REG14 BR 14 VOLTA PARA APOS O BAL *--------------------------------------------------------------------- * DECLARACAO DAS VARIAVEIS ------------------------------------------- *--------------------------------------------------------------------- MYSAVE DC 18F'0' SAVE AREA FIMENTRA DC C'N' FLAG INDICATIVO DE FIM DE ARQ WLIDOS DC PL3'0' CONTADOR REGS LIDOS WPAGS DC PL3'0' CONTADOR PAGINAS WLINS DC PL3'99' CONTADOR LINHAS AE DS CL80 AREA PARA LEITURA ARQ ENTRADA AS DS CL133 AREA PARA SAIDA ARQ IMPRESSAO * * LINHAS DO RELATORIO ------------------------------------------- * LCABZ DS 0CL133 PROXIMOS 133 BYTES = LCABZ DC CL1'1' DC C'PAG. ' LCABZPAG DC CL7' ' DC CL120' ' * LCAB1 DS 0CL133 PROXIMOS 133 BYTES = LCAB1 DC CL1' ' DC CL5'REG.#' DC CL1' ' DC 20C'-' DC CL40'* CONTEUDO DO REG LIDO *' DC 20C'-' DC CL47' ' * LCAB2 DS 0CL133 PROXIMOS 133 BYTES = LCAB2 DC CL1' ' DC CL5'-----' DC CL1' ' DC 20C'-' DC CL40'----------------------------------------' DC 20C'-' DC CL46' ' * LCAB3 DC CL133' ' LINHA EM BRANCO * LDET DS 0CL133 LINHA DE DETALHE DC CL1' ' LDETNRO DC CL5' ' DC CL1' ' LDETTXT DC CL80' ' DC CL46' ' * *--------------------------------------------------------------------- * DECLARACAO DOS ARQUIVOS ------------------------------------------- *--------------------------------------------------------------------- ENTRA DCB DDNAME=ENTRA,LRECL=80,EODAD=EOFENTRA,DSORG=PS,MACRF=GM RELAT DCB DDNAME=RELAT,LRECL=133,DSORG=PS,MACRF=PM,RECFM=FBA *--------------------------------------------------------------------- * LITERAIS ------------------------------------------- *--------------------------------------------------------------------- LTORG *--------------------------------------------------------------------- END Então o relatório terá o seguinte formato : PAG. 1 REG.# --------------------* CONTEUDO DO REG LIDO *-------------------- ----- -------------------------------------------------------------------------------- 00001 REGISTRO 1 ....................................................................* 00002 REGISTRO 2 ...+....2....+....3....+....4....+....5....+....6....+....7....+....0 00003 REGISTRO 3 ! 00004 ESTOU VOLTANDO PARA CASA, TERMINEI MEU TEMPO 00005 AGORA EU PRECISO SABER O QUE É E O QUE NÃO É MEU 00006 SE RECEBERSSE MINHA CARTA AVISANDO QUE LOGO ESTARIA LIVRE 00007 ENTÃO VOCÊ VAI SABER O QUE FAZER 00008 SE AINDA ME QUER 00009 SE AINDA ME QUER 00010 UAU, AMARRE UMA FITA AMARELA EM VOLTA DO CARVALHO VELHO 00011 JÁ FAZEM TRÊS LONGOS ANOS 00012 VOCÊ AINDA ME QUER? 00013 SE EU NÃO VÊ UMA FITA EM VOLTA DO VELHO CARVALHO 00014 VOU FICAR NO ÔNIBUS 00015 ESQUEÇA-NOS 00016 COLOQUE A CULPA EM MIM 00017 SE EU NÃO VIU UMA FITA AMARELA EM VOLTA DO CARVALHO VELHO 00018 MOTORISTA DE ÔNIBUS, POR FAVOR ME PROCURE 00019 PORQUE EU NÃO AGUENTARIA VER O QUE EU POSSO VER 00020 ESTOU REALMENTE NA PRISÃO 00021 E MEU AMOR, ELA ESTÁ COM A CHAVE PAG. 2 REG.# --------------------* CONTEUDO DO REG LIDO *-------------------- ----- -------------------------------------------------------------------------------- 00022 UMA SIMPLES FITA AMARELA É O QUE EU PRECISO PARA ME LIBERTAR 00023 ESCREVI E DISSE POR FAVOR 00024 HOA, AMARRE UMA FITA AMARELA EM VOLTA DO CARVALHO VELHO 00025 JÁ FAZEM TRÊS LONGOS ANOS 00026 VOCÊ AINDA ME QUER? 00027 SE EU NÃO VÊ UMA FITA EM VOLTA DO CARVALHO VELHO 00028 VOU FICAR NO ÔNIBUS 00029 ESQUEÇA-NOS 00030 COLOQUE A CULPA EM MIM 00031 SE EU NÃO VIU UMA FITA AMARELA EM VOLTA DO CARVALHO VELHO 00032 AGORA TODO O ÔNIBUS ESTÁ TORCENDO 00033 E NÃO ACREDITO QUE VI 00034 CEM FITAS AMARELAS AO REDOR DO VELHO CARVALHO 00035 *** ULTIMO REGISTRO !!! ***