program rdat c uses: c recommended compilation in cygwin: implicit integer*4 (i-n) implicit real*8 (a-h,o-z) parameter (NPMAX=1024) real*8 ramcyc(16,NPMAX) real*8 ram(NPMAX),roa(NPMAX),x(NPMAX),doc(NPMAX),docr(NPMAX) character*256 soubor,soubor2 integer*4 iroa(16),idoc(16) data iroa/0,0,0,0, 1,1,1,1, 1,1,1,1, 0,0,0,0/ data idoc/0,0,1,1, 1,1,0,0, 1,1,0,0, 0,0,1,1/ cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc np=1024 cc Input section write(*,*)'Filename (*.dat):' read(*,*)soubor is=length(soubor) write(*,*) do ii=1,16 iroa(ii)=2*iroa(ii)-1 idoc(ii)=2*idoc(ii)-1 enddo write(*,'(16i3)')iroa write(*,'(16i3)')idoc open(10,file=soubor,form='UNFORMATTED',access='DIRECT', 1 recl=1) irc=13+8*np read(10,rec=irc)((ramcyc(k,l),l=1,np),k=1,16) irc=25+156*np read(10,rec=irc)iscans irc=irc+12 read(10,rec=irc)time irc=irc+8 write(*,*)'Bytes read: ',irc-1 write(*,*)'Time: ',time,' s = ',iscans,'x ',time/iscans,' s' close(10) write(*,'(a)')' File: '//soubor(1:is)//' loaded.' write(*,*) c end of reading binary *.dat file soubor2=soubor(1:is-4) open(11,file=soubor(1:is-4)//'_ALL.prn') do ii=1,np rami=0.d0 roai=0.d0 doci=0.d0 do jj=1,16 rami=rami+ramcyc(jj,ii) roai=roai+ramcyc(jj,ii)*iroa(jj) doci=doci+ramcyc(jj,ii)*idoc(jj) enddo ram(ii)=rami roa(ii)=roai doc(ii)=doci docr(ii)=doci/rami x(ii)=ii write(11,*)ii,(ramcyc(jj,ii),jj=1,16) enddo write(*,*)'File written: '//soubor(1:is-4)//'_ALL.prn' close(11) call writexyprn(soubor2,np,1,x,ram,'RAM ') call writexyprn(soubor2,np,1,x,roa,'ROA ') call writexyprn(soubor2,np,1,x,doc,'DOC ') call writexyprn(soubor2,np,1,x,docr,'DOCR') end cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc subroutine writexyprn(soubor,np,ixmin,xdat,ydat,sext) integer*4 np,is2,i,is,ixmin real*8 xdat(*),ydat(*) character*256 soubor character*4 sext is2=length(soubor) is=length(sext) open(51,file=soubor(1:is2)//'_'//sext(1:is)//'.prn') do i=ixmin,np write(51,*)xdat(i),ydat(i) enddo close(51) write(*,*)'File written: '//soubor(1:is2)//'_'//sext(1:is)// 1 '.prn' end cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc CC Urceni poctu znaku stringu (bez koncovych mezer) FUNCTION LENGTH(S) integer*4 l CHARACTER S*(*) DO L=LEN(S),1,-1 IF(S(L:L).NE.' ') GOTO 90000 ENDDO 90000 LENGTH=L RETURN END