SUB_WAVELET/Fortran/SUB_FileTrans.f90

78 lines
2.0 KiB
Fortran
Raw Normal View History

2025-04-17 11:06:03 +08:00
!<21><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>csv<73>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
!csv<73>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ϊʱ<CEAA><EFBFBD><E4A3AC><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ֵ<EFBFBD><D6B5><EFBFBD>ο<EFBFBD><CEBF>ǻ۴<C7BB><DBB4>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD>ļ<EFBFBD>
<><CAB1><EFBFBD><EFBFBD>ʽ֧<CABD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD>
!<21><><EFBFBD><EFBFBD>ֵ<EFBFBD>ж<EFBFBD><D0B6>У<EFBFBD><D0A3>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>
subroutine FileTrans(M,FileLen,FileName,N,OutLine)
implicit none
common /tips/err
integer :: err
integer :: M !<21>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
integer :: FileLen
character(len=FileLen) :: FileName
real*8 :: OutLine(1000,M) <><CAB1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
character(len=200) :: cha
character(len=200) :: cdate,cnum
integer :: date(1000,5)
real*8 :: num(1000,M-1)
integer :: i,stat,j
integer :: datenum !<21><><EFBFBD>ڸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
integer :: N !<21><><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
N = 0
datenum = 0
date = 0
num = 0
OutLine = 0
open(100,file=FileName,status='old')
read(100,'(a)')cha !<21><>һ<EFBFBD><D2BB>Ϊ<EFBFBD><CEAA>ͷ
do i=1,40000
read(100,'(a)',iostat=stat)cha
if(cha(len_trim(cha):len_trim(cha))==',') then
err = 1 !<21><><EFBFBD><EFBFBD>ȱʧ(ĩ<><C4A9>)
goto 100
end if
if(stat/=0) exit
N = N+1
if(index(cha(1:len_trim(cha)),':')>0) then
datenum = 5
else
datenum = 3
end if
if(index(cha,',,')>0.or.index(cha,'/')==0) then
err = 1 !<21><><EFBFBD><EFBFBD>ȱʧ<C8B1><CAA7><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB>м<EFBFBD><D0BC>У<EFBFBD>
goto 100
end if
do j=1,len_trim(cha)
if(index('-/:',cha(j:j))>0) cha(j:j)=' '
if(cha(j:j)==',') then
cdate = cha(1:j-1)
cnum = cha(j+1:)
exit
end if
end do
read(cdate,*)date(i,1:datenum)
read(cnum,*)num(i,:)
end do
close(100)
!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1>ʼʱ<CABC><EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>Դ<EFBFBD>ʱ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2>ܳ<EFBFBD><DCB3><EFBFBD>999<39><39>
date(N+1,1) = date(1,1)
date(N+1,2:3) = 1
OutLine(:,2:M) = num(:,1:M-1)
call Date_to_num(date,N,OutLine(:,1))
100 end subroutine