implicit real*8(a-h,o-z)
character you(7)*3
you(1)="月"
you(2)="火"
you(3)="水"
you(4)="木"
you(5)="金"
you(6)="土"
you(7)="日"
!2021年から出力する場合、2024年の閏年でiu=4にしたいから、
!初期値(2020年)はiu=4にしておく
iu=4 !iu=4の年が閏年
iy=5 !2021/1/1の曜日 iy=1:月〜iy=7:日
do in=1,20
iu=iu+1
 if(iu==5) iu=1
write(*,'(i4,a3)') 2020+in,'年'
!
!
call hiniti(1,31,you,iy,iu)
 if(iu==4) then 
  iowari=29
 else
  iowari=28
 end if
call hiniti(2,iowari,you,iy,iu)
call hiniti(3,31,you,iy,iu)
call hiniti(4,30,you,iy,iu)
call hiniti(5,31,you,iy,iu)
call hiniti(6,30,you,iy,iu)
call hiniti(7,31,you,iy,iu)
call hiniti(8,31,you,iy,iu)
call hiniti(9,30,you,iy,iu)
call hiniti(10,31,you,iy,iu)
call hiniti(11,30,you,iy,iu)
call hiniti(12,31,you,iy,iu)
!
end do
end
!
subroutine hiniti(ig,iowari,you,iy,iu)
dimension kyuuzitu(12,31)
character you(7)*3
call yasumi(kyuuzitu)
write(*,'(a3,i2,a3,a3)') '***',ig,'月','***'
n7=0
ny=1
!
i=1
 if((kyuuzitu(ig,i)==1).or.(iy==7)) then
  write(*,'(i2,a1,a3,a1)') i,'(',you(iy),')'
 else
   write(*,'(i2,a1,a3,a1)') i,' ',you(iy),' '
 end if
  call youbi(iy,n7,ny,ig,iu,kyuuzitu,i)
do i=2,iowari
 if((kyuuzitu(ig,i-1)==1).and.(iy==1)) then
  write(*,'(i2,a1,a3,a1)') i,'(',you(iy),')'
 else if((kyuuzitu(ig,i)==1).or.(iy==7)) then
  write(*,'(i2,a1,a3,a1)') i,'(',you(iy),')'
 else
   write(*,'(i2,a1,a3,a1)') i,' ',you(iy),' '
 end if
  call youbi(iy,n7,ny,ig,iu,kyuuzitu,i)
end do
return
end
!
subroutine youbi(iy,n7,ny,ig,iu,kyuuzitu,i)
dimension kyuuzitu(12,31)
   iy=iy+1
   n7=n7+1
  if(iy==8) iy=1
  if(n7==7) then
   ny=ny+1
   n7=0
  end if
! 1月第2月曜：成人の日
 if((ig==1).and.(ny==2).and.(iy==1)) then
  kyuuzitu(1,i)=1
 end if
! 春分の日
 if((iu==4).or.(iu==1)) then
  kyuuzitu(3,20)=1
 else
  kyuuzitu(3,21)=1
 end if
! 秋分の日
 if(iu==4) then
  kyuuzitu(9,22)=1
 else
  kyuuzitu(9,23)=1
 end if
! 7月第3月曜日：海の日
 if((ig==7).and.(ny==3).and.(iy==1)) then
  kyuuzitu(7,i)=1
 end if
! 9月第3月曜日：敬老の日
 if((ig==9).and.(ny==3).and.(iy==1)) then
  kyuuzitu(9,i)=1
 end if
! 10月第2月曜日：体育の日
 if((ig==10).and.(ny==2).and.(iy==1)) then
  kyuuzitu(10,i)=1
 end if
 return
end
!
subroutine yasumi(kyuuzitu)
dimension kyuuzitu(12,31)
do i=1,12
do j=1,31
   kyuuzitu(i,j)=0
end do 
end do
kyuuzitu(1,1)=1  !元日
kyuuzitu(2,11)=1 !建国記念の日
kyuuzitu(2,23)=1 !天皇誕生日
kyuuzitu(4,29)=1 !昭和の日
kyuuzitu(5,3)=1  !憲法記念日
kyuuzitu(5,4)=1  !みどりの日
kyuuzitu(5,5)=1  !こどもの日
kyuuzitu(8,11)=1 !山の日
kyuuzitu(11,3)=1 !文化の日
kyuuzitu(11,23)=1!勤労感謝の日
!kyuuzitu(12,23)=1
return
end
