ccccccc Programa per a la busqueda de les estadistiques d'una serie de camps
	real*8 dades,dadmin,dadmax
	real*8 pressio,concR
	real*8 estadistics,estadisticsTOT
	integer i,j,k,l,ijk
	integer dim_x,dim_y,tau
	integer periode,pas,temps,caixaextrems
	integer conc,imin,jmin,imax,jmax,n_ubic,n_vari,n_ubic2
	integer nummins,nummaxs,nummintau,nummaxtau,controlmax,controlmin
	character*1 any,mes,dia,hora,minut,variable,nivell,nivells
	character*2 anySS,mesSS
	character*3 iminS,jminS,imaxS,jmaxS
	character*4 especific
	character*10 vari,dates
	character*80 arxiu_inici
	character*200 ubicacio,ubicacio_2
	dimension any(2),mes(2),dia(2),hora(2),minut(2),nivell(4)
	dimension variable(10),nivells(4,13)
	dimension dades(300,300),dadmin(7,5000),dadmax(7,5000)
	dimension estadistics(5,5000),estadisticsTOT(4),dates(5000)
	
ccccccc VARIABLES
c	any: Any de la simulacio
c	mes: Mes de la simulacio
c	dia: dia de la simulacio
c	hora: hora de la simulacio
c	minut: minut de la simulacio
c	variable: variable de la simulacio
c	periode: Interval de temps total (segons) de la simulacio
c	pas: Frequencia de pas de la simulacio (segons)
c	conc: Nivell per al qual busquem
c	imin: Coordenada x del marge inferior esquerra del subdomini
c	jmin: Coordenada y del marge inferior esquerra del subdomini
c	imax: Coordenada x del marge superior dret del subdomini
c	jmax: Coordenada y del marge superior dret del subdomini
c	ubicacio: Subdirectori on tenim els arxius
c	n_ubic: Nombre de caracters de ubicacio
c	ubicacio_2: Subdirectori on tenim els arxius de sortida
c	n_ubic2: Nombre de caracters de ubicacio 2
c	temps: Nombre de passos temporals que tenim
c	tau: Pas en el qual ens trobem
c	dades: Matriu de les dades de la variable
c	especific: Nivell de pressio en string
c	pressio: Nivell en integer
c	vari: Variable en string complet
c	n_vari: Nombre de caracters de vari
c	dim_x: Dimensio de les dades x
c	dim_y: Dimensio de les dades y
c	dad_[min/max]:valor minim/maxim de les dades per a un pas temporal
c   1col: x	2col: y		3col: nivell p		4col: valor	5col: Pas temps
c   6col: Nombre minims/maxims  7col: Nombre minims/maxims tau
c	num[min/max]s: Nombre de minims i maxims
c	estadisticsTOT: Matriu amb les estadistiques del camp
c   1col: <valor>	2col: <valor2>		3col: <|valor|>		4col: SIGMAvalor
c	estadistics: Matriu amb les estadistiques del camp
c   1col: Pas temps	2col: <valor tau>	3col: <valor2 tau>	
c   4col: <|valor tau|>	5col: SIGMAvalor tau
c	caixaextrems: Nombre de punts de malla per a determinar un extrem del camp

	call llegir_param(any,mes,dia,hora,minut,variable,periode,pas
     &,conc,imin,jmin,imax,jmax,ubicacio,ubicacio_2,caixaextrems)

	temps=periode/pas
	write(6,*)'Tenim la simulacio durant un total de ',periode/(60*60*24)
     &,' dies  Amb un interval de temps de la simulacio de ',pas/(60*60)
     &,' hores  amb ',temps,' periodes temporals iteracio'
	write(6,*)'Inici de l estudi ',any,'-',mes,'-',dia,'_',hora,':',minut

	call llargada_String(ubicacio,200,n_ubic)
	call llargada_String(ubicacio_2,200,n_ubic2)

	do i=1,5000
	dadmax(4,i)=-100000.0
	dadmin(4,i)=100000.0	
	do j=1,4
	estadisticsTOT(j)=0.d0
	enddo
	enddo

	ijk=1

	nummins=0
	nummaxs=0

	write(6,*)'Fitxers extrems tau:'
	write(6,*)ubicacio_2(1:n_ubic2)//char(47)//
     &'minims_camp.dat'
	write(6,*)ubicacio_2(1:n_ubic2)//char(47)//
     &'maxims_camp.dat'

	open(unit=17,file=ubicacio_2(1:n_ubic2)//char(47)//
     &'minims_camp.dat',status='unknown')
	open(unit=18,file=ubicacio_2(1:n_ubic2)//char(47)//
     &'maxims_camp.dat',status='unknown')

	write(17,20)'#Data[1]','Pas temps[2]','num minim[3]','x[4]','y[5]',
     &'valor [6]'
	write(18,20)'#Data[1]','Pas temps[2]','num maxim[3]','x[4]','y[5]',
     &'valor [6]'

	call pres_presS(conc,especific)

	nivell(1)=especific(1:1)
        nivell(2)=especific(2:2)
	nivell(3)=especific(3:3)
	nivell(4)=especific(4:4)

	call obrir_arxiu(any,mes,dia,hora,minut,variable,nivell
     &,arxiu_inici)
	
	call dimensions_matriu(arxiu_inici,ubicacio,dim_x,dim_y)

	write(6,*)'Dimensions matrius:',dim_x,char(44),dim_y

	do tau=0,temps
	nummintau=0
	nummaxtau=0

	do j=1,5
	estadistics(j,tau)=0.d0
	enddo

	dates(tau)=any(1)//any(2)//mes(1)//mes(2)//dia(1)//dia(2)
     &//hora(1)//hora(2)//minut(1)//minut(2)

	write(6,*)'Periode ',tau,' data: ',dates(tau)

	call obrir_arxiu(any,mes,dia,hora,minut,variable,nivell
     &,arxiu_inici)
   
	open(unit=1,file=ubicacio(1:n_ubic) // char(47) 
     &// arxiu_inici,status='old')

	do i=1,dim_x
	read(1,10)(dades(i,j),j=1,dim_y)
  10	format(300(f16.6))
	enddo	

	close(unit=1)
	call nivell_pressio(nivell,pressio)

	do i=imin,imax
	do j=jmin,jmax
	if (dades(i,j).gt.dadmax(4,ijk)) then
	dadmax(4,ijk)=dades(i,j)
	dadmax(3,ijk)=pressio*1.
	dadmax(1,ijk)=i*1.
	dadmax(2,ijk)=j*1.
	dadmax(5,ijk)=tau*pas*1.
	endif
	if (dades(i,j).lt.dadmin(4,ijk)) then
	dadmin(4,ijk)=dades(i,j)
	dadmin(3,ijk)=pressio*1.
	dadmin(1,ijk)=i*1.
	dadmin(2,ijk)=j*1.
	dadmin(5,ijk)=tau*pas*1.
	endif

	controlmin=0

	do k=-caixaextrems,caixaextrems
	do l=-caixaextrems,caixaextrems
	if (dades(i+k,j+l).gt.dades(i,j)) controlmin=controlmin+1
	enddo
	enddo
		
	if (controlmin.eq.(2*caixaextrems+1)*(2*caixaextrems+1)-1) then
	nummintau=nummintau+1
	write(17,31)dates(tau),tau*pas*1.,nummintau*1.,i*1.,j*1.,dades(i,j)
	endif
	
	controlmax=0

	do k=-caixaextrems,caixaextrems
	do l=-caixaextrems,caixaextrems
	if (dades(i+k,j+l).lt.dades(i,j)) controlmax=controlmax+1
	enddo
	enddo
		
	if (controlmax.eq.(2*caixaextrems+1)*(2*caixaextrems+1)-1) then
	nummaxtau=nummaxtau+1
	write(18,31)dates(tau),tau*pas*1.,nummaxtau*1.,i*1.,j*1.,dades(i,j)
	endif

c   Estadistics
cc

	estadisticsTOT(1)=estadisticsTOT(1)+dades(i,j)
	estadisticsTOT(2)=estadisticsTOT(2)+dades(i,j)*dades(i,j)
	estadisticsTOT(3)=estadisticsTOT(3)+abs(dades(i,j))

	estadistics(1,tau)=tau*pas*1.d0
	estadistics(2,tau)=estadistics(2,tau)+dades(i,j)*1.d0
	estadistics(3,tau)=estadistics(3,tau)+dades(i,j)*dades(i,j)*1.d0
	estadistics(4,tau)=estadistics(4,tau)+dabs(dades(i,j)*1.d0)
	
ccc Fi dimensions matriu estudi
	enddo
	enddo

	dadmin(7,ijk)=nummintau
	dadmax(7,ijk)=nummaxtau

	do j=2,4
	estadistics(j,tau)=estadistics(j,tau)/(1.d0*(imax-imin+1.)*
     &(jmax-jmin+1.))
	enddo

	estadistics(5,tau)=sqrt(estadistics(3,tau)-estadistics(2,tau)*
     &estadistics(2,tau))
    	
	write(6,*)'Per al pas ',ijk,' tenim ...'
	write(6,*)'minim:',dadmin(1,ijk),dadmin(2,ijk),dadmin(4,ijk),
     &' nombre de minims:',nummintau
	write(6,*)'maxim:',dadmax(1,ijk),dadmax(2,ijk),dadmax(4,ijk),
     &' nombre de maxims:',nummaxtau
	ijk=ijk+1
	write(6,*)'Estadistiques_______________'
	write(6,*)(estadistics(j,tau),j=1,5)

	pressio=0
	call data_afg(any,mes,dia,hora,minut,pas)
	
	nummins=nummins+nummintau
	nummaxs=nummaxs+nummaxtau
c	write(6,*)nummins,char(44),nummaxs
c	stop

ccc Fi passes de temps
	enddo
		
	do j=1,3
	estadisticsTOT(j)=estadisticsTOT(j)/(1.d0*(imax-imin+1.)*
     &(jmax-jmin+1.)*temps)
	enddo
	estadisticsTOT(4)=sqrt(estadisticsTOT(2)-
     &estadisticsTOT(1)*estadisticsTOT(1))

	do tau=0,temps
	dadmin(6,tau+1)=nummins
	dadmax(6,tau+1)=nummaxs
	enddo

	vari=variable(1) // variable (2) // variable(3) 
     &// variable(4) // variable(5) // variable(6) // variable(7)
     &// variable(8) // variable(9) // variable(10) 
	
	call llargada_String(vari,10,n_vari)

	call dim_dimS(imin,iminS)
	call dim_dimS(jmin,jminS)
	call dim_dimS(imax,imaxS)
	call dim_dimS(jmax,jmaxS)
	
	write(6,*)'Simulacio finalitzada per al domini de ',
     & dim_x,' x ',dim_y
	
	anySS=any(1) // any(2)
	mesSS=mes(1) // mes(2)

	write(6,*)'Escrivint els arxius de sortida...'
	write(6,*)'Escrivint arxiu... ',ubicacio_2(1:n_ubic2) 
     & // char(47) // 'max-' // anySS // mesSS // '-' // 
     & vari(1:n_vari) // '-p' // especific // '_' // iminS // 
     & jminS // 'x' // imaxS // jmaxS // '.d'
	write(6,*)'Escrivint arxiu... ',ubicacio_2(1:n_ubic2) 
     & // char(47) // 'min-' // anySS // mesSS // '-' // 
     & vari(1:n_vari) // '-p' // especific // '_' // iminS // 
     & jminS // 'x' // imaxS // jmaxS // '.d'
	write(6,*)'Escrivint arxiu estadistiques... ',
     &ubicacio_2(1:n_ubic2)//char(47)//anySS//mesSS//'-'// 
     &vari(1:n_vari)//'-p'//especific//'_'//iminS//jminS//'x'//imaxS//
     &jmaxS//'.esta'

     	open(unit=13,file=ubicacio_2(1:n_ubic2)//char(47)//anySS//mesSS//
     &'-'//vari(1:n_vari)//'-p'//especific//'_'//iminS//jminS//'x'//
     &imaxS//jmaxS//'.esta',status='unknown')
	open(unit=12,file=ubicacio_2(1:n_ubic2)//char(47)//'min-'//
     &anySS//mesSS//'-'//vari(1:n_vari)//'-p'//especific//'_'//iminS//
     &jminS//'x'//imaxS//jmaxS//'.d',status='unknown')
	open(unit=11,file=ubicacio_2(1:n_ubic2)//char(47)//'max-'//
     &anySS//mesSS//'-'//vari(1:n_vari)//'-p'//especific//'_'//iminS//
     &jminS//'x'//imaxS//jmaxS//'.d',status='unknown')
     
	write(11,20)'#AAMMDDHHMM [1]','x[2]','y[3]','nivell p[4]','valor[5]',
     &'Pas temps[6]','N max[7]','N max tau[8]'
	write(12,20)'#AAMMDDHHMM [1]','x[2]','y[3]','nivell p[4]','valor[5]',
     &'Pas temps[6]','N min[7]','N min tau[8]'
	write(13,20)'#AAMMDDHHMM [1]','Pas temps[2]','<valor tau>[3]',
     &'<valor2 tau>[4]','<|valor tau|>[5]','SIGMAvalor tau[6]',
     &'<valor>[7]','valor2[8]','<|valor|>[9]','SIGMAvalor[10]'

	do k=0,temps
	write(11,31)dates(k),(dadmax(i,k+1),i=1,7)
	write(12,31)dates(k),(dadmin(i,k+1),i=1,7)
	write(13,31)dates(k),(estadistics(i,k),i=1,5),
     &(estadisticsTOT(j),j=1,4)
  	enddo

	close(unit=11)
	close(unit=12)
	close(unit=13)
	close(unit=17)
	close(unit=18)
	
c	call escriure_gnu(ubicacio_2,anySS,mesSS,vari,especific,
c     &iminS,jminS,imaxS,jmaxS)


  20	format(20(a16,1x))
  30	format(15(f16.6,1x))
  31	format(a16,1x,15(f16.6,1x))

	end


ccccccc	SUBROUTINA per a determinar la llargada d'un String
	subroutine llargada_String(String,num_caracters,llargada)
	integer num_caracters,llargada
	character*1000 String
	
	llargada=0
	do i=1,num_caracters
 	if ((ichar(String(i:i))-48).ne.(-16)) llargada=llargada+1
	enddo

c	write(6,*)'*****',String(1:llargada),'****'
	end

ccccccccSUBROUTINA per a escriure l'arxiu min-max.gnu
	subroutine escriure_gnu(ubic_2,an,me,var,nivell,
     &imin,jmin,imax,jmax)
	integer i
	integer n_ub2,n_var
	integer in,jn,ix,jx
	character*2 an,me
	character*4 nivell
	character*3 imin,jmin,imax,jmax
	character*10 var
	character*200 ubic_2

	n_ub2=0
	n_var=0
	do i=1,10
	if ((ichar(var(i:i))-48).ne.(-16)) n_var=n_var+1
	enddo
	do i=1,200
	if ((ichar(ubic_2(i:i))-48).ne.(-16)) n_ub2=n_ub2+1
	enddo
	
	call dimS_dim(imin,in)
	call dimS_dim(jmin,jn)
	call dimS_dim(imax,ix)
	call dimS_dim(jmax,jx)

	write(6,*)'Escrivint arxiu ' // ubic_2(1:n_ub2) // 
     & char(47) //'min-max.gnu...'
	open(unit=1,file=ubic_2(1:n_ub2) // char(47) // 
     &'min-max.gnu',status='unknown')

	write(1,*)'#Representacio dels minims i maxims d'// char(39)
     & //'un cas'
	write(1,*)'set terminal x11'
	write(1,*)'set nokey'
	write(1,*)'set noxtics'
	write(1,*)'set noytics'
	write(1,*)'set xrange' // char(91),in,':',ix,char(93)
	write(1,*)'set yrange' // char(91),jn,':',jx,char(93)
	write(1,*)'set arrow from ',in,char(44),jn,' to ',
     &ix,char(44),jx,' lt 5'
	write(1,*)'plot ',char(39),'min-' // an // me // 
     &'-PSEALVLC-p' // nivell // '_' // imin // jmin // 'x' // imax 
     &// jmax // '.d' // char(39) // ' w l lt 1' // char(44) 
     &// char(92)
	write(1,*)char(39),'max-' // an // me // 
     &'-PSEALVLC-p' // nivell // '_' // imin // jmin // 'x' // imax 
     &// jmax // '.d' // char(39) // ' w l lt 2' // char(44) 
     &// char(92)
	write(1,*)char(39) // '../../../../MEDEX-FACTOR.map' // 
     & char(39) // ' w l'

	end

ccccccccSUBROUTINA per a passar de dimS(string) a dim(integer)
	subroutine dimS_dim(ijS,ij)
	integer ij,ijC,ijD,ijU
	character*3 ijs
	
	ijC=ichar(ijS(1:1))-48
	ijD=ichar(ijS(2:2))-48
	ijU=ichar(ijS(3:3))-48
	
	ij=ijC*100+ijD*10+ijU 
	end

ccccccccSUBROUTINA que fa avançar una data en format text
	subroutine data_afg(an,me,di,ho,mi,ttau)
	integer ttau,i,j
	integer i_an,i_me,i_di,i_ho,i_mi
	integer y,s,a,r,t,dr,dt
	character*1 an,me,di,ho,mi
	dimension an(2),me(2),di(2),ho(2),mi(2)
	dimension i_an(2),i_me(2),i_di(2),i_ho(2),i_mi(2)
	
	y=0
	s=0
	a=0
	r=0
	t=0
	
	do i=1,2
	i_an(i)=ichar(an(i))-48
	i_me(i)=ichar(me(i))-48
	i_di(i)=ichar(di(i))-48
	i_ho(i)=ichar(ho(i))-48
	i_mi(i)=ichar(mi(i))-48
	y=i_an(i)*10**(abs(i-2))+y
	s=i_me(i)*10**(abs(i-2))+s
	a=i_di(i)*10**(abs(i-2))+a
	r=i_ho(i)*10**(abs(i-2))+r
	t=i_mi(i)*10**(abs(i-2))+t
	enddo
	
	call segons_min_hora(ttau,dr,dt)	
	t=t+dt
	r=r+dr
	if ((t.gt.60).or.(t.eq.60)) then
	t=t-60
	r=r+1
	endif
	if ((r.gt.24).or.(r.eq.24)) then
	r=r-24
	a=a+1
	if (((s.eq.1).or.(s.eq.3).or.(s.eq.5).or.(s.eq.7).or.
     &(s.eq.8).or.(s.eq.10).or.(s.eq.12)).and.(dd.eq.32)) then
     	dd=1
	s=s+1
	if (s.eq.13) then
	s=1
	y=y+1
	endif
	endif
	if (((s.eq.4).or.(s.eq.6).or.(s.eq.9).or.(s.eq.11)).
     &and.(dd.eq.31)) then
     	a=1
	s=s+1
	endif
	if ((s.eq.2).and.(a.eq.29)) then
	a=1
	s=s+1
	endif
	endif	

	i_an(1)=y/10
	i_an(2)=y-10*i_an(1)
	i_me(1)=s/10
	i_me(2)=s-10*i_me(1)
	i_di(1)=a/10
	i_di(2)=a-10*i_di(1)
	i_ho(1)=r/10
	i_ho(2)=r-10*i_ho(1)
	i_mi(1)=t/10
	i_mi(2)=t-10*i_mi(1)

	do i=1,2
	an(i)=char(i_an(i)+48)
	me(i)=char(i_me(i)+48)
	di(i)=char(i_di(i)+48)
	ho(i)=char(i_ho(i)+48)
	mi(i)=char(i_mi(i)+48)
	enddo
	end

cccccc SUBROUTINA per a passar de segons a hores i minuts
	subroutine segons_min_hora(seg0,hores,minuts)
	integer seg,hores,minuts,seg0
	
	hores=seg0/3600
	minuts=(seg0-hores*3600)/60
	seg=seg0-hores*3600-minuts*60
	
	if (seg.ne.0) then
	write(6,*)'Interval de temps incorrecte !!!!!!!'
	stop
	endif
	end

ccccccccSUBROUTINA per a passar ded con(integer) a conS(string)
	subroutine pres_presS(con,conS)
	integer con,conM,conC,conD,conU
	character*4 conS

	conM=con/1000
	conC=(con-conM*1000)/100
	conD=(con-conM*1000-conC*100)/10
	conU=con-conM*1000-conC*100-conD*10
	
	conS=char(conM+48) // char(conC+48) // char(conD+48)
     &// char(conU+48)
     	end

ccccccccSUBROUTINA per a passar de dim(integer) a dimS(string)
	subroutine dim_dimS(ij,ijS)
	integer ij,ijC,ijD,ijU
	character*3 ijs
	
	ijC=ij/100
	ijD=(ij-ijC*100)/10
	ijU=ij-ijC*100-ijD*10
	
	ijS= char(ijC+48) // char(ijD+48) // char(ijU+48) 
	end
	
ccccccc	Subrotina de passa de nivell(string) a pressio(numeric)
	subroutine nivell_pressio(niv,pres)
	real*8 pres
	character*1 niv
	dimension niv(4)
	pres=(ichar(niv(1))-48)*1000.+(ichar(niv(2))-48)*100.
     &+(ichar(niv(3))-48)*10.+(ichar(niv(4))-48)*1.
	end
	
ccccccc Subrotina d'obertura de l'arxiu
	subroutine obrir_arxiu(aa,mm,di,ho,mi,va,ni,ar)
	integer i,lletra,kk,i_va,i_ni
	integer i_aa,i_mm,i_di,i_ho,i_mi,n_ub,n_ar
	character*1 aa,mm,di,ho,mi,va,ni
	character*10 vari
	character*80 ar
	dimension aa(2),mm(2),di(2),ho(2),mi(2),va(10),i_va(10)
	dimension ni(4),i_ni(4),i_aa(2),i_mm(2),i_di(2),i_ho(2),i_mi(2)
	
	kk=0
	do i=1,2
	i_aa(i)=ichar(aa(i))-48
	i_mm(i)=ichar(mm(i))-48	
	i_di(i)=ichar(di(i))-48
	i_ho(i)=ichar(ho(i))-48	
	i_mi(i)=ichar(mi(i))-48	
	enddo
	
	do i=1,10
	lletra=ichar(va(i))-48
	i_va(i)=lletra
	if (lletra.ne.(-16)) then
	kk=kk+1
	else
	goto 100
	endif
	enddo
  100	continue

	do i=1,10
	i_ni(i)=ichar(ni(i))-48
	enddo
	
	vari=va(1) // va(2) // va(3) // va(4) // va(5) // va(6)
     &// va(7) // va(8) // va(9) // va(10)
	
	ar=char(i_aa(1)+48) // char(i_aa(2)+48) // char(i_mm(1)+48)
     &// char(i_mm(2)+48) // char(i_di(1)+48) // char(i_di(2)+48) 
     &// char(i_ho(1)+48) // char(i_ho(2)+48) // char(i_mi(1)+48)
     &// char(i_mi(2)+48) // '-GNU' // vari(1:kk) // '-p'
     &// char(i_ni(1)+48) // char(i_ni(2)+48) // char(i_ni(3)+48) 
     &// char(i_ni(4)+48) // '.grd'

	n_ar=0
	do i=1,80
	if ((ichar(ar(i:i))-48).ne.(-16)) n_ar=n_ar+1
	enddo

	write(6,*)'Arxiu: ',ar(1:n_ar)
	end

ccccccc	SUBROUTINA per a llegir les dades i buscar-ne la seva dimensio
	subroutine dimensions_matriu(ar,ubic,dx,dy)
	integer i,j
	integer dx,dy,n_ar,n_u,ll,charlin
	character*50 lin
	character*80 ar
	character*200 ubic
	character*5000 linia 
	dimension charlin(50)
	
	n_ar=0
	do i=1,80
	if ((ichar(ar(i:i))-48).ne.(-16)) n_ar=n_ar+1
	enddo
	
	n_u=0
	do i=1,200
	if ((ichar(ubic(i:i))-48).ne.(-16)) n_u=n_u+1
	enddo

	dx=0
	dy=0
	open(unit=3,file=ubic(1:n_u) // char(47) // ar(1:n_ar)
     &,status='old')
	do i=1,1000
	read(3,5,end=100)lin
	dx=dx+1
	enddo
  100	continue
  	close(unit=3)
	
	open(unit=3,file=ubic(1:n_u) // char(47) // ar(1:n_ar)
     &,status='old')
	
	read(3,70)linia
  70 	format(5000a)

	close(unit=3)

	do i=1,50
	charlin(i)=ichar(linia(i:i))-48
	enddo

	ll=0
	do i=2,49
	if ((charlin(i).eq.-16).and.(charlin(i-1).ne.(-16))) then
	ll=i-1
	goto 150
	endif
	enddo
  150	continue

ccc
c	Cas amb espai entre valors
ccc
c	ll=ll+1

	dy=0
	do i=1,1000
	ilin=ll-1+(i-1)*ll
	if ((ichar(linia(ilin:ilin))-48).ne.(-16)) dy=dy+1
	if ((ichar(linia(ilin:ilin))-48).eq.(-16)) goto 200
	enddo
  200	continue

c 	write(6,*)'La dimensio de la matriu ',dx,' x ',dy

   5	format(a50)
	end

ccccccccSUBROUTINA per a llegir dades d'un arxiu de text
	subroutine llegir_param(an,me,di,ho,mi,va,per,tt,niv
     &,imi,jmi,ima,jma,ubic,ubic2,cext)
	integer per,tt,i,vari
	integer niv,imi,ima,jmi,jma,cext
	character*10 linia
	character*1 caracter
	character*1 an,me,di,ho,mi,va
	character*200 ubic,ubic2
	dimension an(2),me(2),di(2),ho(2),mi(2),va(10)
	
	open(unit=18,file='inf_estadistiques_camp.txt',status='old')
	vari=0
	
	read(18,15)linia
	read(18,15)linia
	read(18,1)an(1),an(2),caracter,me(1),me(2),caracter
     &,di(1),di(2),caracter,ho(1),ho(2),caracter,mi(1),mi(2)
  1	format(14(1a))
	read(18,15)linia
	read(18,15)linia
  	read(18,*)per
	read(18,15)linia
	read(18,15)linia
	read(18,*)tt
	read(18,15)linia
	read(18,15)linia
	read(18,2)(va(i),i=1,10)
  2	format(10(a1))
	read(18,15)linia
	read(18,15)linia
	read(18,15)linia
	read(18,*)niv
	read(18,15)linia
	read(18,15)linia
	read(18,15)linia
	read(18,15)linia
 	read(18,15)linia
 	read(18,*)imi,jmi
	read(18,*)ima,jma
	read(18,15)linia
	read(18,15)linia
	read(18,23)ubic
	read(18,15)linia
	read(18,15)linia
	read(18,23)ubic2
	read(18,15)linia
	read(18,15)linia
	read(18,*)cext

 23	format(a200)	
 15	format(a10)  


  	do i=1,10
	if (ichar(va(i)).ne.32) vari=vari+1
	enddo
	
	write(6,*)'Tenim:'
	write(6,*)'Data inici estudi ',an,'-',me,'-',di,'_',ho,':',mi
	write(6,*)'Periode estudi :',per,' segons'
	write(6,*)'Pas temporal: ',tt,' segons'
	write(6,*)'Variable :',va
	write(6,*)'Als nivell ',niv
	write(6,*)'Per al subdomini de ( ',imi,' ',jmi,') x ('
     &,ima,' ' ,jma,' )'
     	write(6,*)'Ubicacio arxius..',ubic
     	write(6,*)'Ubicacio arxius sortida..',ubic2
	write(6,*)'Punts del semi-costat de la caixa per un extrem: ',cext
	close(unit=18)
	end
