PRINT NOGEN
PGMTOPC1 CSECT
* LESSA
*
SAVE (14,12)
* SAVE DEVE SER O PRIMEIRO COMANDO(SALVE OS REGISTRADORES 14 E 12)
* GUARDA O ENDERECO ATUAL NA MEMORIA
* AREA DE ANCORA COMUM (CAA) DO CHAMADOR HLL.
BALR R12,0
* POSICIONA OS PONTEIROS NO ENDERECO DE R12(BRANCH AND LINK)
USING *,R12
* UTILIZE O ENDERECO DO REGISTRADOR 12 (4096 BYTES) PARA A EXECUCAO
* CASO NECESSITE DE MAIS MEMORIA USING *,R12,R11
LA 15,SAVEAREA
* CARREGA O (ENDERECO) DO CHAMADOR NO CONTEUDO DO REGISTRADOR 15
ST 13,4(,15)
* ENDERECO ORIGEM ST, DESLOCAMENTO (REGISTRO INDICE, REGISTRO BASE)
* COPIAR O ENDERECO DO REGISTRADOR 13
* PARA O ENDERECO DO REGISTRADOR NO ENDERECO DO REGISTRADOR 15
* DESLOCANDO 4 BYTES
ST 15,8(,13)
* COPIE O ENDERECO DO REGISTRADOR 15 P O ENDERECO DO REGISTRADOR 13
* DESLOCANDO 8 BYTES
LR 13,15
* MOVE O CONTEUDO DO REGISTRADOR 15 PARA O 13
* COPIA O ENDERECO SAVEAREA PARA DO REGISTRADOR 15 PARA O 13
*
R0 EQU 0
* GUARDA O ENDERECO DA PROXIMA INSTRUCAO
R1 EQU 1
* GUARDA O ENDERECO DA PILHA
R2 EQU 2
* GUARDA A FLAG DA ULTIMA OPERACAO
R3 EQU 3
* CG CONSTANT GENERATOR
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
R11 EQU 11
R12 EQU 12
R13 EQU 13
* GUARDA O PONTEIRO DA PILA
R14 EQU 14
* LR REGISTRADOR DE LIGACAO
R15 EQU 15
* PROGRAM COUNTER
*
*-----------------------------------------------------*
* INICIO *
*-----------------------------------------------------*
*
INICIO EQU *
* ESTAOU CRIANDO UMA ROTINA E A AREA DA MEMORIA SERA
* DEFINIDA PELO PROPRIO PROGRA ($1000) INICIARIA NO 1000
OPEN (ENTCTR,,ALINHA,(OUTPUT))
* OPEN (ENTCTR,INPUT) ABRIR ENTRADA
* OPEN (ALINHA,OUTPUT) ABRIR SAIDA
*
* MONTA LINHAS DE CABECALHO
*
* MVC SAIDA,SAIDA1
* MOVE O CONTEUDO DE SAIDA1 PARA SAIDA(LIMPA OS 132 CARACTERES)
MVC CABECA,CABEC1
* MOVE O CONTEUDO DE CABEC1 PARA CABECA
BAL 10,GRAVAR
* EXECUTA A ROTINA GRAVAR GUARDE O ENDERECO ATUAL P RETORNAR
*
MVC SAIDA,SAIDA1
* MOVE O CONTEUDO DE SAIDA1 PARA SAIDA(LIMPA OS 132 CARACTERES)
MVC CABECA,CABEC2
* MOVE O CONTEUDO DE CABEC2 PARA CABECA
BAL 10,GRAVAR
* EXECUTA A ROTINA GRAVAR GUARDE O ENDERECO ATUAL P RETORNAR
MVC SAIDA,SAIDA1
* MOVE O CONTEUDO DE SAIDA1 PARA SAIDA(LIMPA OS 132 CARACTERES)
*
* FAZ LEITURA
*
PROXIM EQU *
BAL 10,LER
* GUARDA ESSE ENDERECO NO REGISTRADOR 10 E EXECUTA O MODULO LER
MVC WTOA+28(8),MASCARA
* MOVE PARA WTOA POSICAO 29 A MASCARA DE EDICAO MASCARA COM 8
MVC WTOA+28(8),CAP
* MOVE PARA WTOA POSICAO 29 O CAMPO CAP COM 8 POSICOES
WTOA WTO '* VALOR CAPITAL = *'
* DE O DISPLAY DESTE CONTEUDO NA CONSOLE E NO SPOOL
*
MVC WTOB+28(8),MASCARA
* MOVE PARA WTOA POSICAO 29 A MASCARA DE EDICAO MASCARA COM 8
MVC WTOB+28(8),TAXA
* MOVE PARA WTOA POSICAO 29 O CAMPO TAXA COM 8 POSICOES
WTOB WTO '* VALOR TAXA = *'
* DE O DISPLAY DESTE CONTEUDO NA CONSOLE E NO SPOOL
*
MVC WTOC+28(8),MASCARA
* MOVE PARA WTOA POSICAO 29 A MASCARA DE EDICAO MASCARA COM 8
MVC WTOC+28(8),PAGO
* MOVE PARA WTOA POSICAO 29 O CAMPO PAGO COM 8 POSICOES
WTOC WTO '* VALOR PAGO = *'
* DE O DISPLAY DESTE CONTEUDO NA CONSOLE E NO SPOOL
*
PACK PCAP,CAP
* MOVE CONTEUDO DE CAP PARA PCAP COMPACTANDO
PACK PTAXA,TAXA
* MOVE CONTEUDO DE TAXA PARA PTAXA COMPACTANDO
PACK PPAGO,PAGO
* MOVE CONTEUDO DE PAGO PARA PPAGO COMPACTANDO
CVB 3,PCAP
* CONVERTE O VALOR PARA BINARIO
CVB 7,PTAXA
* CONVERTE O VALOR PARA BINARIO
*
* ************************************
ST 7,BTAXA
* GUARDA O CAMPO BTAXA NO REGISTRADOR 7
M 2,BTAXA
* TAXA X PCAO (REG = 3)
D 2,=F'12'
* NOVO CAPITAL / 12
A 3,ARRED
* SOMA ARREDONDAMENTO
L 2,ZEROS
* COLOCA ZEROS NO REGISTRADOR 2
D 2,VIRGDC
* PARA POSICIONAR VIGULA
CVD 3,PJURO
* CONVERTE O VALOR PARA DECIMAL
CVB 2,PPAGO
* CONVERTE O VALOR PARA BINARIO
SR 2,3
* SUBTRAI VALORES
* ************************************
CVD 2,PVAL
* CONVERTE O VALOR PARA DECIMAL
CVB 3,PCAP
* CONVERTE O VALOR PARA BINARIO
SR 3,2
* SUBTRAI VALORES
CVD 3,PNOVCP
* CONVERTE O VALOR PARA DECIMAL
MVC NUCON,NUMCON
* MOVE NUMCON PARA NUCON
MVC CAPANT,CAP
* MOVE CAP PARA CAPANT
UNPK NOVCAP,PNOVCP
* MOVE PNOVCP PARA NOVCAP DESCOMPACTANDO
MVC PAGMEN,PAGO
* MOVE PAGO PARA PAGMEN
UNPK JURMEN,PJURO
* MOVE PJURO PARA JURMEN DESCOMPACTANDO
UNPK VALMEN,PVAL
* MOVE PVAL PARA VALMEN DESCOMPACTANDO
*
MVZ NOVCAP+6(1),NOVCAP+5
* MOVE ZONADO NOVCAP TAMANHO DE 7
MVZ JURMEN+3(1),JURMEN+2
* MOVE ZONADO JURMEN TAMANHO DE 4
MVZ VALMEN+3(1),VALMEN+2
* MOVE ZONADO VALMEN TAMANHO DE 4
*
BAL 10,GRAVAR
* GUARDA ESSE ENDERECO NO REGISTRADOR 10 E EXECUTA O MODULO GRAVAR
*
B PROXIM
* VA PARA O INICIO DO MODULO PROXIMO(BRANCH)
LER GET ENTCTR,ENTRADA
BR 10
* VOLTE PARA O ENDERECO DO REGISTRADOR 10(BRANCK REGISTER)
*
GRAVAR PUT ALINHA,SAIDA
BR 10
*
FIM EQU *
CLOSE (ENTCTR,,ALINHA)
* FECHA OS ARQUIVOS ENTCTR ALINHA
WTO '*** APOS CLOSE ***'
* MOSTRA MENSGEM NO SPOOL E NA CONSOLE DO OPERDOR
L 13,4(,13)
* COPIA O CONTEUDO DO REGISTRADOR 13 PARA ENDERECO DO REG 13
* DESLOCANDO 4 BYTES
WTO '*** FIM-FIM ***'
* MOSTRA MENSAGEM NO SPOOL E NA CONSOLE DO OPERDOR
RETURN (14,12),RC=0
*
EJECT
MASKSHN DC X'202020202020'
* DEFINE UM CAMPO EM HEXADECIMAL COM 6 BYTES
MASKSH1 DC X'2020202020202020'
* DEFINE UM CAMPO EM HEXADECIMAL COM 8 BYTES
MASCARA DC X'2020202020202020'
MASKSH2 DC X'20202020202020202020202020202020'
************************************************************
* AREAS UTILIZADAS *
************************************************************
*
ENTRADA DS 0CL080
* DEFINE UM SEGMENTO COM TAMANHO DE 80 BYTES (ITEM DE GRUPO)
NUMCON DS CL6
* DEFINE UM CAMPO COM TAMENHO DE 6 BYTES
CAP DS CL7
* DEFINE UM CAMPO COM TAMENHO DE 7 BYTES
TAXA DS CL4
* DEFINE UM CAMPO COM TAMENHO DE 4 BYTES
PAGO DS CL4
* DEFINE UM CAMPO COM TAMENHO DE 4 BYTES
DS CL59
*
SAIDA1 DC CL132' '
*
DC CL1' '
SAIDA DS 0CL132
* DEFINE UM ITEM DE GRUPO COM 132 CARACTERES
DS CL33
* DEFINE 33 ESPACOS EM BRANCO NA LINHA
CABECA DS 0CL65
NUCON DS CL6
* DEFINE NUCON COM O TAMANHO DE 6
DS CL4
* DEFINE 4 ESPACOS EM BRANCO
CAPANT DS CL7
* DEFINE CAPANT COM O TAMANHO DE 7
DS CL4
* DEFINE 4 ESPACOS EM BRANCO
NOVCAP DS CL7
* DEFINE CAPANT COM O TAMANHO DE 7
DS CL5
* DEFINE 5 ESPACOS EM BRANCO
PAGMEN DS CL4
* DEFINE PAGAMEN COM O TAMANHO DE 4
DS CL5
* DEFINE 5 ESPACOS EM BRANCO
JURMEN DS CL4
* DEFINE JURMEN COM O TAMANHO DE 4
DS CL6
* DEFINE 6 ESPACOS EM BRANCO
VALMEN DS CL4
* DEFINE VALMEN COM O TAMANHO DE 4
DS CL43
* DEFINE 43 ESPACOS EM BRANCO
*
*
CABEC1 DC C'NUM.DE CAPITAL NOVO PAGTO. JURO AMC
ORTIZACAO '
* DEFINE CONSTANTE
CABEC2 DC C'CONTA ANTERIOR CAPITAL MENSAL MENSAL MEC
NSAL '
*
PCAP DS D
*SEGMENTO DE DADOS
PTAXA DS D
PPAGO DS D
PNOVCP DS D
PJURO DS D
PVAL DS D
BTAXA DS D
*
SAVEAREA DC 18F'0'
*
ARRED DC F'5000'
VIRGDC DC F'10000'
ZEROS DC F'0'
*
ENTCTR DCB DDNAME=ENTCTR,MACRF=GM,EODAD=FIM,DSORG=PS
* DDNAME MESMO DO JOB EODAD=FIM DESVIA PARA ROTINA FIM NO TERMINO
ALINHA DCB DDNAME=ALINHA,MACRF=PM,DSORG=PS
*
*
* ARQUIVO DE ENTRADA
* ARQUIVO.CADASTRO.PGMNOVO
*
* NUM.DE CAPITAL TAXA PAGTO
* CONTA ANTERIOR JURO MENSA
*
* 111111 2067891 9876 6049
* 222222 0010985 9876 0001
* 333333 0010000 9876 0168
* 444444 0034567 9876 0002
*
* RELATORIO DE SAIDA
*
*NUM.DE CAPITAL NOVO PAGTO. JURO AMORTIZACAO
*CONTA ANTERIOR CAPITAL MENSAL MENSAL MENSAL
*111111 2067891 2232029 6049 0187 4138
*222222 0010985 0011888 0001 0904 0903
*333333 0010000 0010655 0168 0823 0655
*444444 0034567 0037410 0002 2845 2843
*
END PGMTOPC1
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 !!! ***
Entre em contato conosco para mais informações via whatsapp abaixo.
Doar para a “Future School EAD” é essencial para manter e expandir o acesso à educação gratuita em informática. Esta escola oferece cursos de alta qualidade sem custo, capacitando jovens e adultos com habilidades essenciais para o mercado de trabalho atual.
Sua contribuição permite que mais pessoas transformem suas vidas por meio do aprendizado digital, reduzindo desigualdades sociais e promovendo a inclusão digital. Apoiar a Future School EAD é investir em um futuro mais justo e tecnológico para todos.
Participe do grupo do WhatsAapp (11-98342.2503) no plantão de dúvidas (Sábados).
Você quer ajudar a manter este site?
PIX é celular (11-98342.2503) Favorecido: Jorge Gilberto.
Curso de Java
Curso de Lógica
Inscrever
Tire suas dúvidas acerca desse curso além de receber nossas novidades e atualizações por e-mail.
Ao se inscrever, você concorda com nossa
Política de Privacidade e autoriza o recebimento de atualizações da nossa empresa.
© 2017/2024 Future School EAD. Todos os direitos reservados | Desenvolvido por Poeta Alberto Lima Soluções Digitais.