C........................................................Mar. 2022
C WU, WL, WE global, north, south from magn. coord.data
C t0 at Kp storm peak
C
C........................................................Dec.2020
C Extract Wp, WU, WL and WE -index for -24h<t0< +48h for Kp_1_2 events 
C 
C Select period of 72hrs starting from t0-24h, ending t0+48h; t0 @ Kpmax_hour
C 
      PROGRAM decodkp5WUmd
C Input HSSUT.txt 1996-2019...........................Jan 2020
C add: select from -24h < to <+48h for HSS-events
C
C----------------------------------------------------------------
C
	DIMENSION inpn(0:71) ! 1h indices for 24h (or 72h file for 1h indices)
	+,ind24(0:23),inpn_pre(0:71),wpind(0:23),wnpn(0:71)
C
	CHARACTER*4 AYEAR
      CHARACTER*128 INFILE,INFHSS,txt
	+,outfilpn  !WU, WL, WE, Wp
	CHARACTER(10) DD
      CHARACTER(10) TT
      CHARACTER(5) ZZ
      CHARACTER*1 kpx
	CHARACTER*1 gns  ! global, north, south, Wp
C++
C
      ICALLS=0
	CALL DATE_AND_TIME(DATE=DD,TIME=TT,ZONE=ZZ)
      TT(5:)='      '
      WRITE(*,*) 'PC Date: Year,Month,Day = ',DD,'Time = ',TT

C	WRITE(*,*) ' Enter m, n, s or x for Wp : '
C	read(*,*) gns 
C+rem       gns='m' ! global WU, WL,WE
C+	gns='x' ! global Wp
      write(*,*) ' Enter gns= m, n, or s:'
	read(*,*) gns
C
C-	infile='d:/apkp/pc/PCNYEAR' !PCN AARI
CREM	infile='d:/web/graf/datw/wupYR.txt'
CREM	infile='d:/web/graf/datw/wlnYR.txt'
CPRE	infile='d:/web/graf/datw/werYR.txt'
C+	infile='d:/web/grif/datw/wptemYR.txt' ! 0 Wp from -15d mag coord
C++	infile='d:/web/grif/datw/wuiYRx.txt' ! 1
C++	infile='d:/web/grif/datw/wliYRx.txt' ! 2
	infile='d:/web/grif/datw/weiYRx.txt' ! 3
C
C	outfilpn='hsswu1d.txt' !total file for 1996-2019 =455 lines x 72 cols superposed epoch
C	outfilpn='hsswl1d.txt' !total file for 1996-2019 =455 lines x 72 cols superposed epoch
CPRE	outfilpn='hsswe1d.txt' !total file for 1996-2019 =455 lines x 72 cols superposed epoch
C+	outfilpn='kpwp3d_s.txt' !Wp total file for 1996-2019 =455 lines x 72 cols superposed epoch ! 0
C++	outfilpn='kpwu3dxs.txt' !WU total file for 1994-2021 =nev lines x 72 cols superposed epoch ! 1
C++	outfilpn='kpwl3dxs.txt' !WL total file for 1994-2021 =nev lines x 72 cols superposed epoch	! 2
	outfilpn='kpwe3dxs.txt' !WE total file for 1994-2021 =nev lines x 72 cols superposed epoch	! 3
C//  	infhss='kpstormx.txt'  ! Kp storms 1 or 2
  	infhss='catkpstx.txt'  ! Kp storms 1 (Dst<-50) or 2 (Dst <-100)
C
C Start catkpst1 or catkpst2
       kpx='1'		   !moderate storms
    1	CONTINUE
      outfilpn(8:8)=kpx  !
	infhss(8:8)=kpx 
      	if (gns.eq.'x') goto 7
         infile(23:23)=gns
          outfilpn(7:7)=gns
C
    7	OPEN(11,FILE=OUTFILPN)
C
C Kp_1_2 nev storms from 1994 to 2021
C
   28 format(1X,F8.3,3(1X,I2),3(1X,F6.0))
C   29 format(1X,F8.3,1X,I3,2(1X,I2),1X,I3,1X,F6.0,1X,I2,2(1X,F6.0))
C   29 format(1X,F8.3,1X,I3,3(1X,I2),1X,I4,2(1X,I4),1X,I3,2(1X,I4))
C   29 format(1X,F8.3,1X,I3,3(1X,I2),1X,I4)
   29 format(1X,F8.3,1X,I3,3(1X,I2),1X,F3.1,1X,I3,1X,I3)
C
	open(10,file=infhss,action='READ')
c		read(10,*) txt
C
C Cycle on events ====================================================
C
      lda_pre=16
	iyear_pre=1994
C	nev=481
	nev=460
C	if (kpx.eq.'2') nev=86
	if (kpx.eq.'2') nev=107
C
	DO 177 iev=1,nev
c	read(10,29,end=27) ryear1,ldam,imn1,idy1,iutm,v1,iut1,v2,delv
      read(10,29,end=27) ryear1,lda1,imn1,idy1,iut1,xkp,ikpsum,ninp
	iutcnt=0
	iyear=int(ryear1)
	iyr=iyear-iyear/100*100
C
C-	lda1=ndoy(iyr,imn1,idy1) ! 1d
      lda0=lda1-1 ! -1d
	lda2=lda1+2
C
C   37 format(20X,24(I4))	 ! AE
   37 format(6X,24(1X,I4))	 !WU, WL, WE
  137 format(6X,24(1X,F4.1))	 ! Wp
C
	if (lda0.eq.0) then  !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
C
C read last day of prec. year:
C
	iyear0=iyear-1
       call blet4(iyear0,AYEAR)
	if (gns.eq.'x') then
		infile(23:24)=AYEAR(3:4)  ! Wp
	else
	infile(21:22)=AYEAR(3:4)  ! WU, WL,WE
	endif
	open(15,file=infile,action='READ')
	read(15,*) txt ! title line
	ryear0=float(iyear0)
		if(int(ryear0/4.)*4.eq.iyear0) THEN 
	ndnyr=366
	                          ELSE
	ndnyr=365
	ENDIF

	DO 101 k=1,ndnyr
	      if (gns.eq.'x') then
 	read(15,137,end=102) (wpind(ii),ii=0,23)
	 do kk=0,23
	ind24(kk)=int(wpind(kk)*10.0)
	 enddo
	else
	read(15,37,end=102) (ind24(ii),ii=0,23)
	endif

  101	CONTINUE
  102	close(unit=15)
C last day of prec year from iut1 to 23 h:   
       DO ii=iut1,23
       inpn(iutcnt)=ind24(ii)
      iutcnt=iutcnt+1
	ENDDO
	endif				 !>>>>>>>>>>>>>>>>>>>>>>>>
C
C Prec. day from current year:
       call blet4(iyear,AYEAR)
	if (gns.eq.'x') then
		infile(23:24)=AYEAR(3:4)  ! Wp
	else
	infile(21:22)=AYEAR(3:4)  ! WU, WL,WE
	endif
	open(15,file=infile,action='READ')
		read(15,*) txt ! title line
C
	if (lda0.gt.0) then !>>>>>>>>>>>>>>>>>>>>>>>>>>>
	DO 109 k=1,lda0
	      if (gns.eq.'x') then
 	read(15,137,end=103) (wpind(ii),ii=0,23)
	 do kk=0,23
	ind24(kk)=int(wpind(kk)*10.0)
	 enddo
	else
	read(15,37,end=104) (ind24(ii),ii=0,23)
	endif
  109	CONTINUE
       DO ii=iut1,23
       inpn(iutcnt)=ind24(ii)
      iutcnt=iutcnt+1
	ENDDO
	endif				 !>>>>>>>>>>>>>>>>>>>>>>>>
C 1st day from current year:
	      if (gns.eq.'x') then
 	read(15,137,end=103) (wpind(ii),ii=0,23)
	 do k=0,23
	ind24(k)=int(wpind(k)*10.0)
	 enddo
	else
	read(15,37,end=103) (ind24(ii),ii=0,23)
	endif
C	  1st day :
       DO ii=0,23
       inpn(iutcnt)=ind24(ii)
      iutcnt=iutcnt+1
	ENDDO
C 2nd day from current year:
	      if (gns.eq.'x') then
 	read(15,137,end=103) (wpind(ii),ii=0,23)
	 do k=0,23
	ind24(k)=int(wpind(k)*10.0)
	 enddo
	else
	read(15,37,end=103) (ind24(ii),ii=0,23)
	endif
C	  2nd day :
       DO ii=0,23
       inpn(iutcnt)=ind24(ii)
      iutcnt=iutcnt+1
	ENDDO
C 3rd day from current year:
	      if (gns.eq.'x') then
 	read(15,137,end=103) (wpind(ii),ii=0,23)
	 do k=0,23
	ind24(k)=int(wpind(k)*10.0)
	 enddo
	else
	read(15,37,end=103) (ind24(ii),ii=0,23)
	endif
C	  3rd day :
       DO ii=0,23
	if (iutcnt.lt.72) then
       inpn(iutcnt)=ind24(ii)
      iutcnt=iutcnt+1
              	else
	exit
              	endif
	ENDDO
  103	close(unit=15)
C
C Next year if necessary:
       if (iutcnt.lt.72) then   !>>>>>>>>>>>>>>>>>>>>>>>>>>>
	iyear1=iyear+1
	call blet4(iyear1,AYEAR)
	if (gns.eq.'x') then
		infile(23:24)=AYEAR(3:4)  ! Wp
	else
	infile(21:22)=AYEAR(3:4)  ! WU, WL,WE
	endif
	open(15,file=infile,action='READ')
		read(15,*) txt ! title line
C
	      if (gns.eq.'x') then
 	read(15,137,end=104) (wpind(ii),ii=0,23)
	 do k=0,23
	ind24(k)=int(wpind(k)*10.0)
	 enddo
	else
	read(15,37,end=104) (ind24(ii),ii=0,23)
	endif
C	  next day :
       DO ii=0,23
	if (iutcnt.lt.72) then
       inpn(iutcnt)=ind24(ii)
      iutcnt=iutcnt+1
              	else
	exit
              	endif
	ENDDO
      endif	                !>>>>>>>>>>>>>>>>>>>>>
  104	close(unit=15)
C
   38 format(72(1X,I4))
  138 format(72(1X,F4.1))
C Output matrices:
       if (gns.eq.'x') then
	do k=0,71
	wnpn(k)=inpn(k)/10.0
	enddo
 	write(*,138) (wnpn(k),k=0,71)
	write(11,138) (wnpn(k),k=0,71)
	 else
 	write(*,38) (inpn(k),k=0,71)
	write(11,38) (inpn(k),k=0,71)
	 endif
	do jk=0,71
	inpn_pre(jk)=inpn(jk)
	enddo
  177	CONTINUE
   27 close(unit=10)
      close(unit=11)
C
        if (kpx.eq.'1') then
	kpx='2'
	goto 1
	  endif
C?	if (gns.eq.'x') goto 35		 ! Wp
C
C?	if (gns.eq.'m') then
C?	write(*,*) infile
C?	gns='n'
C?	goto 1
C?	endif
C?	if (gns.eq.'n') then
C?	write(*,*) infile
C?	gns='s'
C?	goto 1
C?	endif
C
C
   35      write(*,*) infile
      pause ' ' 
      STOP
       END

C***********************************************************
