function SIGEM()
% SIstema GEnerador de Models basat en el programa del mateix nom fet per Antonio Caselles Moncho
% (adaptacio per a octave, http://www.octave.org, per Rafael Pla-Lopez; versio 1.2 - copyleft/GNU GPL)
fprintf('SIstema GEnerador de Models basat en el programa del mateix nom fet per Antonio Caselles Moncho\n');
fprintf('(adaptacio per a octave, http://www.octave.org, per Rafael Pla-Lopez; versio 1.2 - copyleft/GNU GPL)\n\n');
NOM=input('Introdueix el nom del programa (solament una paraula): ','s');

% introduccio de les dimensions
fprintf('Introdueix 1 si hi ha variables multidimensionals\n');
fprintf('  o 0 en cas contrari                            '); dim=input(' : ');

% introduccio de les variables
n=input('Introdueix el numero de variables: '); VARIABLE='';
fprintf('  (els noms de les variables han de tener el mateix numero de caracters\n');
fprintf('   i conve que tinguen mes de 3 i estiguen en minuscules)\n');
for i=1:n
	fprintf('Introdueix el nom de la variable numero %d',i); x=input(': ','s');
	VARIABLE=[VARIABLE;x];
	if (dim)
		d(i)=input('  Introdueix la dimensio d''aquesta variable : ');
	end
end
LLISTA=['L',NOM,'.txt'];
llista=fopen(LLISTA,"w");
for i=1:n
	fputs(llista,VARIABLE(i,:)); fputs(llista,"\n");
end
fclose(llista);

% introduccio de les dependencies
DEPENDRE='';
c=zeros(n); s=zeros(1,n);
for i=1:n
	FILERA=[VARIABLE(i,:),'('];
	fprintf('De quantes variables depen la variable %s? (0 si es d''entrada)',VARIABLE(i,:)); nv(i)=input(': ');
	if (nv(i)>0)
		fprintf('Introdueix\n   1 si %s es una variable d''estat\n   0 en cas contrari',VARIABLE(i,:));
		s(i)=input('                    : ');		
	end
	for j=1:nv(i)
		cc=0;
		do
			x=input('Depen de la variable... ','s');
			for k=1:n
				if (k~=i & strcmp(x,VARIABLE(k,:)) & c(i,k)==0)
					cc=c(i,k)=1; ccc(i,j)=k;
				end
			end					
		until (cc==1)
		FILERA=[FILERA,x];
		if (j<nv(i))
			FILERA=[FILERA,','];
		else
			FILERA=[FILERA,')'];
		end
	end
	fprintf('%s\n',FILERA); DEPENDRE=[DEPENDRE;FILERA];
	if (nv(i)==0)
		niv(i)=1;
	end
end

% clasificacio de les variables en nivells
NIV=1; niv=zeros(1,n);
do
	for i=1:n
		if (sum(c(i,:))==0 & niv(i)==0)
			niv(i)=NIV;
		end
	end
	for k=1:n
		if (niv(k)==NIV)
			c(:,k)=zeros(n,1);
		end
	end
	NIV=NIV+1;
until (NIV>n)
if (sum(sum(c))>0)
	fprintf('El sistema no es jerarquic; ha de redissenyar-se per evitar els bucles de dependencia\n');
	return;
end
CONEXION=['C',NOM,'.txt'];
conexion=fopen(CONEXION,"w");
for i=1:n
	fputs(conexion,DEPENDRE(i,:)); fputs(conexion,"\n");
end
fclose(conexion);

% introduccio de les relacions funcionals
FUNCIONS='';
tab=0;
for i=1:n
	if (nv(i)>0)
		funcio=['F',VARIABLE(i,:),'.m']; fopen(funcio,"w");
		fputs(funcio,['function ',VARIABLE(i,:),'=F',DEPENDRE(i,:),"\n"]);
		fprintf('En quantes linies vols escriure la dependencia funcional de la variable %s?\n',VARIABLE(i,:));
		fprintf('  (introdueix 0 si la dependencia ve donada per una tabla)                 ');
		nl(i)=input(' : ');
		fputs(funcio,['% Programa per obtenir la variable ',VARIABLE(i,:),"\n"]);
		if (nl(i))
		    if (dim)
		        if (d(i)>1)
			    fprintf('  Per referirse a un component d''una variable utilitza l''index i%d i per operar amb\n',i);
			    fprintf('  components escriu un punt (.) abans dels operadors producte (*), divisio (/) o potenciacio (^)\n');
			    fputs(funcio,['for i',num2str(i),'=1:',num2str(d(i)),"\n"]);
		        end
		    end
		    for j=1:nl(i)
			fprintf('Introdueix la linia numero %d',j); x=input(': ','s'); 
			fputs(funcio,['  ',x,";\n"]);
			FUNCIONS=[FUNCIONS;blanks(j),x];
		    end
		    if (dim)
		        if (d(i)>1)
			    fputs(funcio,['end',"\n"]);
		        end
		    end
		else
		    tab=1;
		    % introduccio en el seu cas dels valors de la tabla
		    fputs(funcio,['% mitjansant la tabla T',VARIABLE(i,:),'.txt',"\n"]);
		    TVARIABLE=sprintf('T%s.txt',VARIABLE(i,:));
		    Tfuncio=fopen(TVARIABLE,"r");
		    if (Tfuncio==-1)
			fprintf('Per executar el programa has de crear una tabla com un fitxer de text de nom T%s.txt\n',VARIABLE(i,:));
			fprintf('En cada linia has d''escriure successivament els valors de %s\n',DEPENDRE(i,:)),
			fprintf('en el format indicat. Els valors han de repetirse o ser creixents en les successives linies,\n');
			fprintf('llevat, naturalment, dels de %s\n',VARIABLE(i,:));
			fprintf('Totes les línies han de tenir la mateixa longitud: si és necessari, afegeix zeros a\n');
			fprintf('l''esquerra d''un numero o en el seu cas a la dreta dels decimals\n');
			fprintf('El fitxer ha de finalitzar al final de la darrera línia escrita: no afegisques una\n');
			fprintf('nova linia en blanc\n');
			if (dim)
				fprintf('Si alguna de les variables de les que depen es multidimensional, simplement escriu\n');
				fprintf('els seus valors consecutivament separats tambe per comes\n');
				fprintf(' (en el cas de %s, separa els seus valors per punt i coma [;]\n',VARIABLE(i,:));
				fprintf('  i encercla-los entre claudators, [...])');
			end
		    else
		    	fclose(Tfuncio);
		    end
		    po=[findstr(DEPENDRE(i,:),"("),findstr(DEPENDRE(i,:),","),findstr(DEPENDRE(i,:),")")];
		    fputs(funcio,['Tfuncio=fopen(''T',VARIABLE(i,:),'.txt'',"r");',"\n"]);
		    fputs(funcio,['K=0;',"\n"]);
		    fputs(funcio,['do',"\n"]);
		    fputs(funcio,['   K=K+1; clear x;',"\n"]);
		    fputs(funcio,['   x=fgetl(Tfuncio);',"\n"]);
		    fputs(funcio,['   if (x~=-1)',"\n"]);
		    fputs(funcio,['	TABLA(K,:)=x;',"\n"]);
		    fputs(funcio,['   end',"\n"]);
		    fputs(funcio,['until (x==-1)',"\n"]);
		    fputs(funcio,['fclose(Tfuncio);',"\n"]);
		    fputs(funcio,['for j=1:K-1',"\n"]);
		    fputs(funcio,['    po=[findstr(TABLA(j,:),"("),findstr(TABLA(j,:),","),findstr(TABLA(j,:),")")];',"\n"]);
		    fputs(funcio,['    SALIDA(j,:)=str2num(TABLA(j,1:po(1)-1));',"\n"]);
		    fputs(funcio,['    for jj=1:length(po)-1',"\n"]);
		    fputs(funcio,['        ENTRADA(j,jj)=str2num(TABLA(j,po(jj)+1:po(jj+1)-1));',"\n"]);
		    fputs(funcio,['    end',"\n"]);
		    fputs(funcio,['end',"\n"]);
		    for j=1:nv(i)
			if (dim)
			    for k=1:d(ccc(i,j))
		        	fputs(funcio,['X(',num2str(j+k-1),')=',VARIABLE(ccc(i,j),:),'(',num2str(k),');',"\n"]);
			    end
			else
			    fputs(funcio,['X(',num2str(j),')=',VARIABLE(ccc(i,j),:),';',"\n"]);
			end
		    end
		    % interpolacio a partir dels valors de la tabla
		    fputs(funcio,['DIST=norm(ENTRADA(K-1,:)-ENTRADA(1,:),inf);',"\n"]);
		    fputs(funcio,['for j=1:K-1',"\n"]);
		    fputs(funcio,['   x=norm(ENTRADA(j,:)-X,inf);',"\n"]);
		    fputs(funcio,['   if (x<DIST)',"\n"]);
		    fputs(funcio,['       DIST=x; J=j;',"\n"]);
		    fputs(funcio,['   end',"\n"]);
		    fputs(funcio,['end',"\n"]);
		    fputs(funcio,['DIST=norm(ENTRADA(K-1,:)-ENTRADA(1,:),inf);',"\n"]);
		    fputs(funcio,['for j=[1:J-1,J+1:K-1]',"\n"]);
		    fputs(funcio,['   x=norm(ENTRADA(j,:)-X,inf);',"\n"]);
		    fputs(funcio,['   if (x<DIST)',"\n"]);
		    fputs(funcio,['       DIST=x; JJ=j;',"\n"]);
		    fputs(funcio,['   end',"\n"]);
		    fputs(funcio,['end',"\n"]);
		    fputs(funcio,['S=0; Sjj=0;',"\n"]);
		    fputs(funcio,['for jj=1:length(po)-1',"\n"]);
		    fputs(funcio,['	if (ENTRADA(J,jj)~=ENTRADA(JJ,jj))',"\n"]);
		    fputs(funcio,['		S=S+(X(jj)-ENTRADA(J,jj))/(ENTRADA(JJ,jj)-ENTRADA(J,jj));',"\n"]);
		    fputs(funcio,['		Sjj=Sjj+1;',"\n"]);
		    fputs(funcio,['	end',"\n"]);
		    fputs(funcio,['end',"\n"]);
		    fputs(funcio,['S=S/Sjj;',"\n"]);
		    fputs(funcio,[VARIABLE(i,:),'=SALIDA(J,:)+(SALIDA(JJ,:)-SALIDA(J,:)).*S;',"\n"]);
		    if (dim)
			if (d(i)>1)
				fputs(funcio,[VARIABLE(i,:),"=",VARIABLE(i,:),"';\n"]);
			end
		    end
		end
		fclose(funcio);
	else
		nl(i)=0;
	end
end
RELACIONS=['F',NOM,'.txt'];
relacions=fopen(RELACIONS,"w");
for j=1:sum(nl)
		fputs(relacions,FUNCIONS(j,:)); fputs(relacions,"\n");
end
fclose(relacions);

% introduccio de la dinamica del sistema
if (sum(s)>0)
	temps=input('Quina sera la unitat de temps? ','s');
	for i=1:n
		if (s(i)==1)
			ss=0;
			do
				fprintf('Introdueix el nom del valor de %s al principi del %s',VARIABLE(i,:),temps);
				x=input(': ','s');
				for k=1:n
					if (niv(k)<=1 & strcmp(x,VARIABLE(k,:)))
						inic(i)=k; niv(k)=0; ss=1;
						if (dim)
							d(k)=d(i);
						end
					end
				end
			until (ss==1)
		end
	end
	fprintf('Introdueix 1 si vols obtenir grafics de l''evolucio d''algunes variables\n');
	fprintf('  o 0 en cas contrari                                                  '); gra=input(' : ');
end
	fprintf('Introdueix 1 si vols poder fer estudis estadistics en cas d''aleatorietat\n');
	fprintf('  o 0 en cas contrari                                                   '); est=input(' : ');

% construccio del programa per executar el model
programa=fopen([NOM,'.m'],"w");
fputs(programa,'function [');
if (est & sum(s)==0)
    cont=0;
    for i=1:n
	if (niv(i)>=2)
		if (cont==1)
			fputs(programa,',');
		end
		fputs(programa,VARIABLE(i,:));
		cont=1;
	end
    end
end
fputs(programa,[']=',NOM,'()']); fputs(programa,"\n");

fputs(programa,['% ',NOM,' es un model ']); 
if (sum(s)>0)
	fputs(programa,'dinamic ');
	if (gra)
		fputs(programa,'que permet representacions grafiques i ');
	end
end
if (est)
		fputs(programa,'que possibilita estudis estadistics ');
end
fputs(programa,'amb aleatorietat opcional en les entrades ');
if (dim)
	fputs(programa,'i que utilitza variables multidimensionals');
end
if (tab)
    fputs(programa,[' i tables',"\n"]);
    fputs(programa,['TABLAm=fopen("TABLA.m","w");',"\n"]);
    fputs(programa,['% INSTRUCCIONS PER CONFECCIONAR UNA TABLA',"\n"]);
    fputs(programa,['fputs(TABLAm,"% Per executar el programa has de crear una tabla com un fitxer de text de nom T seguit\n");',"\n"]);
    fputs(programa,['fputs(TABLAm,"% del nom de la variable amb dependencia donada per una tabla i distintiu de tipus .txt\n");',"\n"]);
    fputs(programa,['fputs(TABLAm,"% En cada linia has d''escriure el valor d''aquesta variable seguida entre parentesis i\n");',"\n"]);
    fputs(programa,['fputs(TABLAm,"% separades per comes dels valors de les variables de les quals depen\n");',"\n"]);
    fputs(programa,['fputs(TABLAm,"% [per exemple, 3.12(2.3,3.1,4.2)],\n");',"\n"]);
    fputs(programa,['fputs(TABLAm,"% els quals han de repetirse o ser creixents en les successives linies.\n");',"\n"]);
    fputs(programa,['fputs(TABLAm,"% Totes les línies han de tenir la mateixa longitud: si és necessari, afegeix zeros a\n");',"\n"]);
    fputs(programa,['fputs(TABLAm,"% l''esquerra d''un numero o en el seu cas a la dreta dels decimals\n");',"\n"]);
    fputs(programa,['fputs(TABLAm,"% El fitxer ha de finalitzar al final de la darrera línia escrita: no afegisques una\n");',"\n"]);
    fputs(programa,['fputs(TABLAm,"% nova linia en blanc\n");',"\n"]);
    if (dim)
    	fputs(programa,['fputs(TABLAm,"% Si alguna de les variables de les que depen es multidimensional, simplement escriu\n");',"\n"]);
    	fputs(programa,['fputs(TABLAm,"% els seus valors consecutivament separats tambe per comes\n");',"\n"]);
    	fputs(programa,['fputs(TABLAm,"% (en el cas de la variable depenent, separa els seus valors per punt i coma [;]\n");',"\n"]);
    	fputs(programa,['fputs(TABLAm,"%  i encercla-los entre claudators, [...])\n");',"\n"]);
    	fputs(programa,['fputs(TABLAm,"% Per exemple, [3;2](1,2)\n");',"\n"]);
    end
    fputs(programa,'fputs(TABLAm,''fprintf(''''Obri TABLA.m com un fitxer de text o introdueix help TABLA des d''''''''octave\n'''');'');');
    fputs(programa,["\n",'fputs(TABLAm,"\n");',"\n"]);
    fputs(programa,['fclose(TABLAm);',"\n"]);	    
    for i=1:n
	if (niv(i)>=2 & nl(i)==0)
	    fputs(programa,['TVARIABLE=sprintf(''T',VARIABLE(i,:),'.txt'');',"\n"]);
	    fputs(programa,['do',"\n"]);
	    fputs(programa,['   Tfuncio=fopen(TVARIABLE,"r");',"\n"]);
	    fputs(programa,['   if (Tfuncio==-1)',"\n"]);
	    fputs(programa,['       fprintf(''La tabla T',VARIABLE(i,:),'.txt no existeix encara; has de crear-la com un fitxer\n'');']);
	    fputs(programa,        "\n");
	    fputs(programa,['       fprintf(''de text segons s''''indica en TABLA.m: pots obrir-ho com a fitxer de text\n'');',"\n"]);
	    fputs(programa,['       fprintf(''o introduir help TABLA des d''''octave\n'');',"\n"]);
	    fputs(programa,['       fprintf(''Introdueix 1 despres d''''haver creat aquest fitxer,\n'');',"\n"]);
	    fputs(programa,['       fprintf(''  o 0 si vols sortir del programa'');',"\n"]);
	    fputs(programa,['	    cont=input('' : '');',"\n"]);
	    fputs(programa,['	    if (cont==0)',"\n"]);
	    fputs(programa,['		fprintf(''Fins despres\n''); return;',"\n"]);
	    fputs(programa,['	    end',"\n"]);
	    fputs(programa,['   end',"\n"]);
	    fputs(programa,['until (Tfuncio~=-1)',"\n"]);
	end
    end
end
fputs(programa,"\n");
fputs(programa,['fprintf(''PROGRAMA PER L''''EXECUCIO DEL MODEL ',NOM,'\n'');']); fputs(programa,"\n");
fputs(programa,'% INTRODUCCIO DE L''ALEATORIETAT'); fputs(programa,"\n"); 
for i=1:n
	if (niv(i)<=1)
		fputs(programa,'xx=x=[];'); fputs(programa,"\n");
		if (dim)
			fputs(programa,['for k=1:',num2str(d(i))]); fputs(programa,"\n");
		else
			fputs(programa,['k=1;',"\n"]);
		end
		fputs(programa,' do'); fputs(programa,"\n");
		fputs(programa,'  fprintf(''Introdueix el valor inicial de'');'); fputs(programa,"\n");
 		if (dim)
		    if (d(i)>1)
			fputs(programa,'  fprintf(''l component %d de'',k);'); fputs(programa,"\n");
		    end
		end
		fputs(programa,['  fprintf('' la variable ',VARIABLE(i,:),'\n''); ']); fputs(programa,"\n");
		fputs(programa,'  fprintf(''(si es aleatoria introdueix la distribucio de probabilitats amb el format\n'');'); 
		fputs(programa,"\n");
		fputs(programa,'  fprintf(''   +valor/percentatge+...+valor/percentatge+\n'');'); fputs(programa,"\n");
		fputs(programa,'  fprintf('' o be, si te distribucio normal,\n'');'); fputs(programa,"\n");
		fputs(programa,'  fprintf(''   #mitjana#desviacio tipica#\n'');'); fputs(programa,"\n");
		fputs(programa,'  x=[x;input('') : '',''s'')]; aa=1;'); fputs(programa,"\n");
		fputs(programa,'  if (index(x(k,:),''/''))'); fputs(programa,"\n");
		fputs(programa,'      pa=findstr(x(k,:),"/"); cr=findstr(x(k,:),"+");'); fputs(programa,"\n");
		fputs(programa,'      if (length(pa)==length(cr)-1)'); fputs(programa,"\n");
		fputs(programa,['          S=0; la',num2str(i),'(k)=length(pa);']); fputs(programa,"\n");
		fputs(programa,'          for j=1:length(pa)'); fputs(programa,"\n");
		fputs(programa,['              v',num2str(i),'(k,j)=str2num(x(k,cr(j)+1:pa(j)-1));']); fputs(programa,"\n");
		fputs(programa,['              p',num2str(i),'(k,j)=str2num(x(k,pa(j)+1:cr(j+1)-1));']); fputs(programa,"\n");
		fputs(programa,['              S=S+p',num2str(i),'(k,j);']); fputs(programa,"\n");
		fputs(programa,'          end'); fputs(programa,"\n");
		fputs(programa,'          if (S==100)'); fputs(programa,"\n"); 
		fputs(programa,['              a',num2str(i),'(k)=1;']); fputs(programa,"\n");
		fputs(programa,'          else'); fputs(programa,"\n");
		fputs(programa,'              aa=0; x=xx;'); fputs(programa,"\n");
		fputs(programa,'          end'); fputs(programa,"\n");
		fputs(programa,'      else'); fputs(programa,"\n");
		fputs(programa,'          aa=0;'); fputs(programa,"\n");
		fputs(programa,'      end'); fputs(programa,"\n");
		fputs(programa,'  else if (index(x(k,:),"#"))'); fputs(programa,"\n");
		fputs(programa,'           h=findstr(x(k,:),"#");'); fputs(programa,"\n");
		fputs(programa,'           if (length(h)==3)'); fputs(programa,"\n");
		fputs(programa,['               MU',num2str(i),'(k)=str2num(x(k,h(1)+1:h(2)-1));']); fputs(programa,"\n");
		fputs(programa,['               DT',num2str(i),'(k)=str2num(x(k,h(2)+1:h(3)-1));']); fputs(programa,"\n");
		fputs(programa,['               a',num2str(i),'(k)=2;']); fputs(programa,"\n");
		fputs(programa,'           else'); fputs(programa,"\n");
		fputs(programa,'               aa=0; x=xx;'); fputs(programa,"\n");
		fputs(programa,'           end'); fputs(programa,"\n");
		fputs(programa,'       else'); fputs(programa,"\n");
		fputs(programa,['           v',num2str(i),'(k,1)=str2num(x(k,:));']); fputs(programa,"\n");
		fputs(programa,['           a',num2str(i),'(k)=0;']); fputs(programa,"\n");
		fputs(programa,'       end'); fputs(programa,"\n");
		fputs(programa,'  end'); fputs(programa,"\n");
		fputs(programa,' until (aa==1)'); fputs(programa,"\n");
		if (dim)
			fputs(programa,' xx=x;'); fputs(programa,"\n");
			fputs(programa,'end'); fputs(programa,"\n");
		end
	end
end
if (est)
	fputs(programa,'% PREPARACIO DE L''ESTUDI ESTADISTIC'); fputs(programa,"\n");
	fputs(programa,'R=input(''Introdueix el numero de repeticions per a un estudi estadistic: '');'); fputs(programa,"\n");
	fputs(programa,'if (R>1)'); fputs(programa,"\n");
	fputs(programa,'    fprintf(''Introdueix el nivell de significacio per obtenir un interval de confianza\n'');');
				fputs(programa,"\n");
	fputs(programa,'    fprintf(''  (o 0 per obtenir la mitjana i la desviacio tipica)''); ');
	fputs(programa,    'ns=input(''                      : '');'); fputs(programa,"\n");
	fputs(programa,'    if (ns)'); fputs(programa,"\n");
	fputs(programa,'        K=tinv(1-ns/2,R-1)/sqrt(R-1);'); fputs(programa,"\n");
	fputs(programa,'        np=input(''Introdueix els graus de llibertat per a la prova de normalitat: '');'); fputs(programa,"\n");
	fputs(programa,'        z(1)=norminv(5/R); z(np)=-z(1);'); fputs(programa,"\n");
	fputs(programa,'        if (np>1)'); fputs(programa,"\n");
	fputs(programa,'            dz=(z(np)-z(1))/(np-1);'); fputs(programa,"\n");
	fputs(programa,'        end'); fputs(programa,"\n");
	fputs(programa,'        e(1)=e(np+1)=5;'); fputs(programa,"\n");
	fputs(programa,'        for k=2:np'); fputs(programa,"\n");
	fputs(programa,'            z(k)=z(1)+(k-1)*dz;'); fputs(programa,"\n");
	fputs(programa,'            e(k)=R*(normcdf(z(k))-normcdf(z(k-1)));'); fputs(programa,"\n");
	fputs(programa,'        end'); fputs(programa,"\n");
	fputs(programa,'    end'); fputs(programa,"\n");
	fputs(programa,'else'); fputs(programa,"\n");
	fputs(programa,'    ns=0;'); fputs(programa,"\n");
	fputs(programa,'end'); fputs(programa,"\n");
	if (sum(s)==0)
		fputs(programa,'jt=1;'); fputs(programa,"\n");
	end
end
if (sum(s)>0)
	fputs(programa,'% PREPARACIO DE LA DINAMICA DEL MODEL'); fputs(programa,"\n");
	fputs(programa,['fprintf(''Introdueix el ',temps,' inicial''); t0=input('': '');']); fputs(programa,"\n");
	fputs(programa,'do'); fputs(programa,"\n");
	fputs(programa,['     fprintf(''Introdueix el ',temps,' final  ''); T=input('': '');']); fputs(programa,"\n");
	fputs(programa,'until(T>t0)'); fputs(programa,"\n");
	fputs(programa,['fprintf(''Introdueix l''''increment de ',temps,'s''); dt=input('': '');']); fputs(programa,"\n");
	for i=1:n
		if (niv(i)==1)
			fputs(programa,['fprintf(''Cada quants ',temps,'s ha de canviar ',VARIABLE(i,:),'?\n'');']); 
			fputs(programa,"\n");
			fputs(programa,'fprintf('' (0 si no ha de canviar, o\n'');'); fputs(programa,"\n");
			fputs(programa,'fprintf(''  -1 si ho ha de fer en intervals irregulars)''); ');
			fputs(programa,        ['ca',num2str(i),'=input('' : '');']); fputs(programa,"\n");
			fputs(programa,['if (ca',num2str(i),'>0)']); fputs(programa,"\n");
			fputs(programa,['    t',num2str(i),'=t0; j=1;']); fputs(programa,"\n");
			fputs(programa,['    while (t',num2str(i),'(j)<T)']); fputs(programa,"\n");
			fputs(programa,['         t',num2str(i),'(j+1)=t',num2str(i),'(j)+ca',num2str(i),'; j=j+1;']); fputs(programa,"\n");
			if (dim)
				fputs(programa,['         for k=1:',num2str(d(i))]); fputs(programa,"\n");
			else
				fputs(programa,'             k=1;'); fputs(programa,"\n");
			end
			fputs(programa,['          if (a',num2str(i),'(k)==0)']); fputs(programa,"\n");
			fputs(programa,'             fprintf(''Introdueix el valor de'');'); fputs(programa,"\n");
			if (dim)
			    if(d(i)>1)
				fputs(programa,'             fprintf(''l component %d de'',k);'); fputs(programa,"\n");
			    end
			end
			fputs(programa,['             fprintf('' ',VARIABLE(i,:),' en t=%f'',t',num2str(i),'(j));']);
			fputs(programa,             [' v',num2str(i),'(k,j)=input('' : '');']); fputs(programa,"\n");
			fputs(programa,'          end'); fputs(programa,"\n");
			if (dim)
				fputs(programa,'         end'); fputs(programa,"\n");
			end
			fputs(programa,'    end'); fputs(programa,"\n");
			fputs(programa,['else if (ca',num2str(i),'==-1)']); fputs(programa,"\n");
			fputs(programa,['         t',num2str(i),'=t0; j=1;']); fputs(programa,"\n");
			fputs(programa,['         while (t',num2str(i),'(j)<T)']); fputs(programa,"\n");
			fputs(programa,'              j=j+1;'); fputs(programa,"\n");
			fputs(programa,'              do'); fputs(programa,"\n");
			fputs(programa,['                  fprintf(''Introdueix el proxim valor de t per canviar ',VARIABLE(i,:),''');']);
			fputs(programa,                   ' fprintf(''\n (t>%f per finalitzar)'',T);'); fputs(programa,"\n");
			fputs(programa,['                  t',num2str(i),'(j)=input('' : '');']); fputs(programa,"\n");
			fputs(programa,['              until(t',num2str(i),'(j)>t',num2str(i),'(j-1))']); fputs(programa,"\n");

			if (dim)
				fputs(programa,['              for k=1:',num2str(d(i))]); fputs(programa,"\n");
			else
				fputs(programa,'               k=1;'); fputs(programa,"\n");
			end
			fputs(programa,['               if (t',num2str(i),'(j)<=T & a',num2str(i),'(k)==0)']); fputs(programa,"\n");
			fputs(programa,'                    fprintf(''Introdueix el nou valor de'');'); fputs(programa,"\n");
			if (dim)
			    if(d(i)>1)
				fputs(programa,'               fprintf(''l component %d de'',k);'); fputs(programa,"\n");
			    end
			end
			fputs(programa,['                    fprintf('' ',VARIABLE(i,:),''');']); 
			fputs(programa,                    [' v',num2str(i),'(k,j)=input('' : '');']); fputs(programa,"\n");
			fputs(programa,'               end'); fputs(programa,"\n");
			if (dim)
				fputs(programa,'              end'); fputs(programa,"\n");
			end

			fputs(programa,'         end'); fputs(programa,"\n");
			fputs(programa,'     end'); fputs(programa,"\n");
			fputs(programa,'end'); fputs(programa,"\n");
		end
	end

	fputs(programa,'% PREPARACIO DEL FITXER DE SORTIDA'); fputs(programa,"\n");
	fputs(programa,['NOM=''',NOM,''';']); fputs(programa,"\n");
	fputs(programa,'m=input(''Introdueix un numero per al fitxer de sortida: '');');  fputs(programa,"\n");
	fputs(programa,'sortida=fopen([''S'',NOM,sprintf(''%d'',m),''.txt''],"w");'); fputs(programa,"\n");
	fputs(programa,['fprintf(sortida,''VALORS DE LES VARIABLES DEPENDENTS DE ',NOM,':\n\n'');']); fputs(programa,"\n");
	if (est)
		fputs(programa,'if (R>1)'); fputs(programa,"\n");
		fputs(programa,'    if (ns)'); fputs(programa,"\n");
		fputs(programa,'        fprintf(sortida,''En cada pas s''''escriuran els extrems de l'''''');'); 
		fputs(programa,'        fprintf(sortida,''interval i la valoracio de la prova de normalitat\n\n'');'); fputs(programa,"\n");
		fputs(programa,'    else'); fputs(programa,"\n");
		fputs(programa,'        fprintf(sortida,''En cada pas s''''escriuran la mitjana i la desviacio tipica\n\n'');');
					fputs(programa,"\n");
		fputs(programa,'    end'); fputs(programa,"\n");
		fputs(programa,'end'); fputs(programa,"\n");
	end
	fputs(programa,'fprintf(sortida,''%6s'',''t'');');  fputs(programa,"\n");
	for i=1:n
		if (niv(i)>=2)
			fputs(programa,['fprintf(sortida,''%12s'',''',VARIABLE(i,:),''');']); fputs(programa,"\n");
			if (dim)
				fputs(programa,['fprintf(sortida,blanks(12*',num2str(d(i)-1),'));']); fputs(programa,"\n"); 
			end
		end
	end
	fputs(programa,'fputs(sortida,"\n");'); fputs(programa,"\n");

	fputs(programa,'% PREPARACIO DELS GRAFICS'); fputs(programa,"\n");
	if (gra)
		fputs(programa,'N=input(''De quantes variables (de 0 a 6) vols representar graficament la seua evolucio? '');'); 
				fputs(programa,"\n");
		if (est)
			fputs(programa,'if (R>1 & N)'); fputs(programa,"\n");
			fputs(programa,'    fprintf(''(es representaran les mitjanes de les variables)\n'');'); fputs(programa,"\n");
			fputs(programa,'end'); fputs(programa,"\n");
		end
		fputs(programa,'for k=1:N'); fputs(programa,"\n");
		fputs(programa,'     g(1,k)=0; g(2,k)=1;'); fputs(programa,"\n");
		fputs(programa,'     do'); fputs(programa,"\n");
		fputs(programa,'        x=input(''Introdueix el nom d''''una variable a representar: '',''s'');'); fputs(programa,"\n");
		for i=1:n
			fputs(programa,['        if (strcmp(x,''',VARIABLE(i,:),'''))']); fputs(programa,"\n");
			fputs(programa,['            g(1,k)=',num2str(i),';']); fputs(programa,"\n");
			if (dim)
		    	    if (d(i)>1)
				fputs(programa,'            do'); fputs(programa,"\n");
				fputs(programa,'               fprintf(''  Quin component vols representar '');');
				fputs(programa,['               kk=input(''(entre 1 i ',num2str(d(i)),')? '');',"\n"]);
				fputs(programa,['            until(kk>=1 & kk<=',num2str(d(i)),')']); fputs(programa,"\n");
				fputs(programa,'            g(2,k)=kk;'); fputs(programa,"\n");
		    	    end
			end
			fputs(programa,'        end'); fputs(programa,"\n");
		end
		fputs(programa,'     until (g(1,k))'); fputs(programa,"\n");
		fputs(programa,'end'); fputs(programa,"\n");
	end
end

if (est)
	fputs(programa,['% INICIALITZACIO DE LES MITJANES I DESVIACIONS TIPIQUES',"\n"]);
	for i=1:n
		if (dim)
			fputs(programa,['k=',num2str(d(i)),";\n"]);
		else
			fputs(programa,"k=1;\n");
		end
		if (sum(s)>0)
			fputs(programa,'jt=0;'); fputs(programa,"\n");
			fputs(programa,'for t=t0:dt:T'); fputs(programa,"\n");
			fputs(programa,'     jt=jt+1;'); fputs(programa,"\n");
		else
			fputs(programa,['   jt=1;',"\n"]);
		end
		fputs(programa,['     mu',num2str(i),'(:,jt)=zeros(k,1); dt',num2str(i),'(:,jt)=zeros(k,1);']); fputs(programa,"\n");
		if (sum(s)>0)
			fputs(programa,'end'); fputs(programa,"\n");
		end
	end
	fputs(programa,'for r=1:R'); fputs(programa,"\n");
end

if (sum(s)>0)
	for i=1:n
		if (niv(i)==1)
			fputs(programa,['   j',num2str(i),'=1; ']); fputs(programa,"\n");
		end
	end
end

fputs(programa,'% ASSIGNACIO DELS VALORS D''ENTRADA'); fputs(programa,"\n");
for i=1:n
	if (niv(i)<=1)
		if (dim)
			fputs(programa,['   for k=1:',num2str(d(i))]); fputs(programa,"\n");
		else
			fputs(programa,['   k=1;',"\n"]);
		end
		fputs(programa,['    if (a',num2str(i),'(k)==1)']); fputs(programa,"\n"); 
		fputs(programa,'        x=100*rand(); S=0;'); fputs(programa,"\n");
		fputs(programa,['        for j=1:la',num2str(i),'(k)']); fputs(programa,"\n");
		fputs(programa,['            S=S+p',num2str(i),'(k,j);']); fputs(programa,"\n");
		fputs(programa,'             if (S>x)'); fputs(programa,"\n");
		fputs(programa,['                ',VARIABLE(i,:),'(k,1)=v',num2str(i),'(k,j); break;']); fputs(programa,"\n");
		fputs(programa,'             end'); fputs(programa,"\n");
		fputs(programa,'        end'); fputs(programa,"\n");
		fputs(programa,['    else if (a',num2str(i),'(k)==2)']); fputs(programa,"\n");
		fputs(programa,['             v',num2str(i),'(k,1)=norminv(rand,MU',num2str(i),'(k),DT',num2str(i),'(k)); ']); 
		fputs(programa,             [VARIABLE(i,:),'(k,1)=v',num2str(i),'(k,1);']); fputs(programa,"\n");
		fputs(programa,'         else'); fputs(programa,"\n");
		fputs(programa,['             ',VARIABLE(i,:),'(k,1)=v',num2str(i),'(k,1);']); fputs(programa,"\n");
		fputs(programa,'         end'); fputs(programa,"\n");
		fputs(programa,'    end'); fputs(programa,"\n");
		if (dim)
			fputs(programa,'   end'); fputs(programa,"\n");
		end
	end
end

if (sum(s)>0)
	fputs(programa,'jt=0;'); fputs(programa,"\n");
	fputs(programa,'for t=t0:dt:T'); fputs(programa,"\n");
	fputs(programa,'     jt=jt+1;'); fputs(programa,"\n");
end

fputs(programa,'% EXECUCIO DEL MODEL'); fputs(programa,"\n");
if (sum(s)>0)
	for i=1:n
		if (niv(i)==1)
			fputs(programa,['     if (ca',num2str(i),')']); fputs(programa,"\n");
			fputs(programa,['         if (t>=t',num2str(i),'(j',num2str(i),'+1))']); fputs(programa,"\n");
			fputs(programa,['             j',num2str(i),'=j',num2str(i),'+1;']); fputs(programa,"\n");
			if (dim)
				fputs(programa,['             for k=1:',num2str(d(i))]); fputs(programa,"\n");
			else
				fputs(programa,['             k=1;',"\n"]);
			end
			fputs(programa,['              if (a',num2str(i),'(k)==0)']); fputs(programa,"\n");
			fputs(programa,['                 ',VARIABLE(i,:),'(k,1)=v',num2str(i),'(k,j',num2str(i),');',"\n"]);
			fputs(programa,['              else if (a',num2str(i),'(k)==1)']); fputs(programa,"\n");
			fputs(programa,'                      x=100*rand(); S=0;'); fputs(programa,"\n");
			fputs(programa,['                      for j=1:la',num2str(i),'(k)']); fputs(programa,"\n");
			fputs(programa,['                          S=S+p',num2str(i),'(k,j);']); fputs(programa,"\n");
			fputs(programa,'                          if (S>x)'); fputs(programa,"\n");
			fputs(programa,['                            ',VARIABLE(i,:),'(k,1)=v',num2str(i),'(k,j); break;',"\n"]); 
			fputs(programa,'                          end'); fputs(programa,"\n");
			fputs(programa,'                      end'); fputs(programa,"\n");
			fputs(programa,'                   else'); fputs(programa,"\n");
			fputs(programa,['                      v',num2str(i),'(k,1)=']);
			fputs(programa,                      ['norminv(rand,MU',num2str(i),'(k),DT',num2str(i),'(k)); ']); 
			fputs(programa,                       [VARIABLE(i,:),'(k,1)=v',num2str(i),'(k,1);']); fputs(programa,"\n");
			fputs(programa,'                   end'); fputs(programa,"\n");
			fputs(programa,'              end'); fputs(programa,"\n");
			if (dim)
				fputs(programa,'             end'); fputs(programa,"\n");
			end
			fputs(programa,'         end'); fputs(programa,"\n");
			fputs(programa,'     end'); fputs(programa,"\n");
		end
	end
end
for k=2:NIV-1
	for i=1:n
		if (niv(i)==k)
			fputs(programa,['     ',VARIABLE(i,:),'=F',DEPENDRE(i,:),"';"]); fputs(programa,"\n");
			if (est)
				fputs(programa,'     if (ns)'); fputs(programa,"\n");
				fputs(programa,['         Y',num2str(i),'(:,jt,r)=',VARIABLE(i,:),';']); fputs(programa,"\n");
				fputs(programa,'     end'); fputs(programa,"\n");
			end
		end
	end
end
if (est)
	for i=1:n
		fputs(programa,['     mu',num2str(i),'(:,jt)=mu',num2str(i),'(:,jt)+',VARIABLE(i,:),';']); fputs(programa,"\n");
		fputs(programa,['     dt',num2str(i),'(:,jt)=dt',num2str(i),'(:,jt)+',VARIABLE(i,:),'.^2;']); fputs(programa,"\n");
	end
end

if (sum(s)>0)
	if (gra & est==0)
		for i=1:n
			fputs(programa,'     for k=1:N'); fputs(programa,"\n");
			fputs(programa,['          if (g(1,k)==',num2str(i),')']); fputs(programa,"\n");
			fputs(programa,['              X(k,jt)=',VARIABLE(i,:),'(g(2,k)); break;']); fputs(programa,"\n");
			fputs(programa,'          end'); fputs(programa,"\n");
			fputs(programa,'     end'); fputs(programa,"\n");
		end
	end
	if (est==0)
		fputs(programa,'     fprintf(sortida,''%6d'',t);'); fputs(programa,"\n");
	end
	for i=1:n
		if (niv(i)>=2 & est==0)
			fputs(programa,['     fprintf(sortida,''%12.4f'',',VARIABLE(i,:),');']); fputs(programa,"\n"); 
		end
		if (s(i)==1)
			fputs(programa,['     ',VARIABLE(inic(i),:),'=',VARIABLE(i,:),';']); fputs(programa,"\n");
		end
	end
	if (est==0)
		fputs(programa,'     fputs(sortida,"\n");'); fputs(programa,"\n");
	end
	fputs(programa,'end'); fputs(programa,"\n");
end
if (est)
	fputs(programa,'end'); fputs(programa,"\n");
	fputs(programa,'% OBTENCIO DELS RESULTATS ESTADISTICS'); fputs(programa,"\n");
	if (sum(s)>0)
		fputs(programa,'jt=0;'); fputs(programa,"\n");
		fputs(programa,'for t=t0:dt:T'); fputs(programa,"\n");
		fputs(programa,'     jt=jt+1;'); fputs(programa,"\n");
		fputs(programa,'     fprintf(sortida,''%6d'',t);'); fputs(programa,"\n");
	end
	for i=1:n
	    fputs(programa,['     mu',num2str(i),'(:,jt)=mu',num2str(i),'(:,jt)./R;']); fputs(programa,"\n");
	    fputs(programa,['     dt',num2str(i),'(:,jt)=dt',num2str(i),'(:,jt)./R;']); fputs(programa,"\n");
	    fputs(programa,['     dt',num2str(i),'(:,jt)=dt',num2str(i),'(:,jt)-mu',num2str(i),'(:,jt).^2;',"\n"]);
	    if (dim)
	     fputs(programa,['     for k=1:',num2str(d(i)),"\n"]);
	    else
	     fputs(programa,['     k=1;',"\n"]);
	    end
	    fputs(programa,['        if (dt',num2str(i),'(k,jt)<0)',"\n"]);
	    fputs(programa,['            dt',num2str(i),'(k,jt)=0;',"\n"]);
	    fputs(programa,['        end',"\n"]);
	    if (dim)
	     fputs(programa,['     end',"\n"]);
	    end
	    fputs(programa,['     dt',num2str(i),'(:,jt)=sqrt(dt',num2str(i),'(:,jt));']); fputs(programa,"\n");
	    if (niv(i)>=2)
		fputs(programa,'     if(R>1 & ns)'); fputs(programa,"\n");
		fputs(programa,'        for k=1:np+1'); fputs(programa,"\n");
		if (dim)
			fputs(programa,['           clear o; o(k,:)=zeros(1,',num2str(d(i)),");\n"]);
		else
			fputs(programa,'           kk=1; o(k,kk)=0;'); fputs(programa,"\n");
		end
		fputs(programa,'        end'); fputs(programa,"\n");
		fputs(programa,'        for r=1:R'); fputs(programa,"\n");
		fputs(programa,['            x=Y',num2str(i),'(:,jt,r);']); fputs(programa,"\n");
		fputs(programa,['            x=(x-mu',num2str(i),'(:,jt))./dt',num2str(i),'(:,jt);']); fputs(programa,"\n");
		if (dim)
			fputs(programa,['            for kk=1:',num2str(d(i)),"\n"]);
		end
		fputs(programa,'             if(x(kk)<z(1))'); fputs(programa,"\n");
		fputs(programa,'               o(1,kk)=o(1,kk)+1;'); fputs(programa,"\n");
		fputs(programa,'             end'); fputs(programa,"\n");
		fputs(programa,'             if(x(kk)>=z(np))'); fputs(programa,"\n");
		fputs(programa,'              o(np+1,kk)=o(np+1,kk)+1;'); fputs(programa,"\n");
		fputs(programa,'             end'); fputs(programa,"\n");
		fputs(programa,'             for k=2:np'); fputs(programa,"\n");
		fputs(programa,'               if (z(k-1)<=x(kk) & x(kk)<z(k))'); fputs(programa,"\n");
		fputs(programa,'                   o(k,kk)=o(k,kk)+1;'); fputs(programa,"\n");
		fputs(programa,'               end'); fputs(programa,"\n");
		fputs(programa,'             end'); fputs(programa,"\n");
		if (dim)
			fputs(programa,'            end'); fputs(programa,"\n");
		end
		fputs(programa,'        end'); fputs(programa,"\n");
		if (dim)
			fputs(programa,['        Khi2=zeros(1,',num2str(d(i)),");\n"]);
		else
			fputs(programa,'        Khi2=0;'); fputs(programa,"\n");
		end
		fputs(programa,'        for k=1:np+1'); fputs(programa,"\n");
		fputs(programa,'           Khi2=Khi2+(o(k)-e(k)).^2./e(k);'); fputs(programa,"\n");
		fputs(programa,'        end'); fputs(programa,"\n");
		fputs(programa,['        NS',num2str(i),'(jt,:)=chi2cdf(Khi2,np);']); fputs(programa,"\n");
		fputs(programa,'     end'); fputs(programa,"\n");
	    end		
	    if (sum(s)>0)
		if (gra)
			fputs(programa,'     for k=1:N'); fputs(programa,"\n");
			fputs(programa,['          if (g(1,k)==',num2str(i),')']); fputs(programa,"\n");
			fputs(programa,['              X(k,jt)=mu',num2str(i),'(g(2,k),jt);']); fputs(programa,"\n");
			fputs(programa,'          end'); fputs(programa,"\n");
			fputs(programa,'     end'); fputs(programa,"\n");
		end
	    end
	end
	fputs(programa,'% PRESENTACIO DELS RESULTATS ESTADISTICS'); fputs(programa,"\n");
	if (sum(s)>0)
		for i=1:n
		  if (niv(i)>=2)
			fputs(programa,'     if (ns)'); fputs(programa,"\n");
			fputs(programa,['              fprintf(sortida,''%12.4f'',mu',num2str(i),'(:,jt)-K.*dt',num2str(i),'(:,jt));',"\n"]);
			fputs(programa,'     else'); fputs(programa,"\n");
			fputs(programa,['         fprintf(sortida,''%12.4f'',mu',num2str(i),'(:,jt));']); fputs(programa,"\n"); 
			fputs(programa,'     end'); fputs(programa,"\n");
			if (dim)
				fputs(programa,'     fprintf(sortida,''  '');'); fputs(programa,"\n");
			end
		  end
		end
		fputs(programa,'     fputs(sortida,"\n");'); fputs(programa,"\n");
		fputs(programa,'     if (R>1)'); fputs(programa,"\n");
		fputs(programa,'         fprintf(sortida,''      '');'); fputs(programa,"\n");
		fputs(programa,'     end'); fputs(programa,"\n");
		for i=1:n
		  if (niv(i)>=2)
			fputs(programa,'     if (R>1)'); fputs(programa,"\n");
			fputs(programa,'         if (ns)'); fputs(programa,"\n");
			fputs(programa,['              fprintf(sortida,''%12.4f'',mu',num2str(i),'(:,jt)+K.*dt',num2str(i),'(:,jt));',"\n"]);
			fputs(programa,'         else'); fputs(programa,"\n");
			fputs(programa,['             fprintf(sortida,''%12.4f'',dt',num2str(i),'(:,jt));']); fputs(programa,"\n"); 
			fputs(programa,'         end'); fputs(programa,"\n");
			if (dim)
				fputs(programa,'         fprintf(sortida,''  '');'); fputs(programa,"\n");
			end
			fputs(programa,'     end'); fputs(programa,"\n");
		  end
		end
		fputs(programa,'     if (R>1)'); fputs(programa,"\n");
		fputs(programa,'         if (ns)'); fputs(programa,"\n");
		fputs(programa,'             fputs(sortida,"\n");'); fputs(programa,"\n");
		fputs(programa,'             fprintf(sortida,''        '');'); fputs(programa,"\n");
		fputs(programa,'         end'); fputs(programa,"\n");
		fputs(programa,'     end'); fputs(programa,"\n");
		for i=1:n
		  if (niv(i)>=2)
			fputs(programa,'     if (R>1)'); fputs(programa,"\n");
			fputs(programa,'         if (ns)'); fputs(programa,"\n");
			if (dim)
				fputs(programa,['           for k=1:',num2str(d(i)),"\n"]);
			else
				fputs(programa,'             k=1;'); fputs(programa,"\n");
			end
			fputs(programa,['             if (NS',num2str(i),'(jt,k)<0.5)']); fputs(programa,"\n");
			fputs(programa,['                 fprintf(sortida,''OK a %5.3f  '',NS',num2str(i),'(jt,k));']); fputs(programa,"\n");
			fputs(programa,'             else'); fputs(programa,"\n");
			fputs(programa,['                 fprintf(sortida,''KO a %5.3f  '',1-NS',num2str(i),'(jt,k));',"\n"]);
			fputs(programa,'             end'); fputs(programa,"\n");
			if (dim)
				fputs(programa,['           end',"\n"]);
				fputs(programa,'           fprintf(sortida,''  '');'); fputs(programa,"\n");
			end
			fputs(programa,'         end'); fputs(programa,"\n");
			fputs(programa,'     end'); fputs(programa,"\n");
		  end
		end
		fputs(programa,'     if (R>1)'); fputs(programa,"\n");
		fputs(programa,'        fputs(sortida,"\n\n");'); fputs(programa,"\n");
		fputs(programa,'     end'); fputs(programa,"\n");
		fputs(programa,'end'); fputs(programa,"\n");
	end
end
if (sum(s)>0)
    fputs(programa,'fclose(sortida);'); fputs(programa,"\n");
    if (gra)
	fputs(programa,'% GENERANT GRAFICS'); fputs(programa,"\n");
	fputs(programa,'if (N)'); fputs(programa,"\n");
	fputs(programa,'    newplot; hold on'); fputs(programa,"\n");
	fputs(programa,'end'); fputs(programa,"\n");
	for i=1:n
		fputs(programa,'for k=1:N'); fputs(programa,"\n");
		fputs(programa,['     if (g(1,k)==',num2str(i),')']); fputs(programa,"\n");
		fputs(programa,['          s=sprintf("%d;',VARIABLE(i,:),'(%d);",k-1,g(2,k));']); fputs(programa,"\n");
		fputs(programa,'          plot(t0:dt:T,X(k,:),s);'); fputs(programa,"\n");
		fputs(programa,'     end'); fputs(programa,"\n");
		fputs(programa,'end'); fputs(programa,"\n");
	end
	fputs(programa,'hold off'); fputs(programa,"\n");
    end
end
if (est & sum(s)==0)
	for i=1:n
	   if (niv(i)>=2)
		fputs(programa,['fprintf(''',VARIABLE(i,:),': '');']); fputs(programa,"\n");
		fputs(programa,'if (ns)'); fputs(programa,"\n");

		fputs(programa,'else'); fputs(programa,"\n");
		fputs(programa,['    fprintf(''   mitjana=%10.4f   desviacio tipica=%10.4f  \n'',mu',num2str(i),',dt',num2str(i),');']);
					fputs(programa,"\n");
		fputs(programa,'end'); fputs(programa,"\n");
	   end
	end
end
if (est==0 & sum(s)==0)
	for i=1:n
	   if (niv(i)>=2)
		fputs(programa,['fprintf(''',VARIABLE(i,:),'='');',"\n"]);
		fputs(programa,['fprintf(''  %f'',',VARIABLE(i,:),');',"\n"]);
		fputs(programa,['fprintf(''\n'');',"\n"]);
	   end
	end
end
fclose(programa);
