Descrição: Armazena dados em uma tabela, lembrando que todas as linhas que tem o "*" na frente é comentário, ou seja, será ignorado no processamento do código, bom então vamos lá.
program-id. tabela.
author. Dionatan.
data division.
working-storage section.
77 indextab pic 9(002) value zeros.
77 tabmes pic 9(001) value zeros occurs 31 times.
01 datasistema.
10 anosistema pic 9(004).
10 mesistema pic 9(002).
10 diasistema pic 9(002).
77 inteirodata pic 9(008) value zeros.
77 diasmes pic 9(002) value zeros.
77 diasemana pic 9(001) value zeros.
77 anobissexto pic 9(004) value zeros.
77 anobissprova pic 9(009) value zeros.
procedure division.
inicio.
*Identifica o mes
accept datasistema from date yyyymmdd
*Identifica quantos dias existe no mes
evaluate mesistema
when 1
move 31 to diasmes
when 2
move 28 to diasmes
move zeros to anobissexto
divide anosistema by 4 giving anobissexto
move anobissexto to anobissprova
subtract anobissprova from anobissexto
if anobissexto equal zeros
move 29 to diasmes
end-if
when 3
move 31 to diasmes
when 4
move 30 to diasmes
when 5
move 31 to diasmes
when 6
move 30 to diasmes
when 7
move 31 to diasmes
when 8
move 31 to diasmes
when 9
move 30 to diasmes
when 10
move 31 to diasmes
when 11
move 30 to diasmes
when 12
move 31 to diasmes
end-evaluate
*Laço para cada dia do mes
perform varying indextab from 1 by 1
until indextab > diasmes
*O dia que será analisado
move indextab to diasistema
*A função não aceita um item de grupo
move datasistema to inteirodata
* Identifica o dia da semana
*1 = Segunda Feira
*2 = Terça Feira
*3 = Quarta Feira
*4 = Quinta Feira
*5 = Sexta Feira
*6 = Sabádo
*7 = Domingo
move function rem(function integer-of-date(inteirodata),7)
to diasemana
if diasemana >= 1 and
diasemana <= 5
* Se condição for verdadeira é um dia útil
move 1 to tabmes(indextab)
end-if
end-perform
stop run
.
Nenhum comentário:
Postar um comentário