]> henry.ined.fr Git - .git/commitdiff
* imach.c (Repository): Create a sub-directory where all the secondary files are...
authorN. Brouard <brouard@ined.fr>
Mon, 23 Jun 2003 17:54:56 +0000 (17:54 +0000)
committerN. Brouard <brouard@ined.fr>
Mon, 23 Jun 2003 17:54:56 +0000 (17:54 +0000)
src/imach.c

index e6b9b58f09d5a9fb83d9b1952c6555a5b66b291f..8fd3120c1a33a3376197986b92c61eb412913638 100644 (file)
@@ -1,6 +1,9 @@
 /* $Id$
   $State$
   $Log$
+  Revision 1.87  2003/06/18 12:26:01  brouard
+  Version 0.96
+
   Revision 1.86  2003/06/17 20:04:08  brouard
   (Module): Change position of html and gnuplot routines and added
   routine fileappend.
 /* $Id$ */
 /* $State$ */
 
-char version[]="Imach version 0.96, June 2003, INED-EUROREVES ";
+char version[]="Imach version 0.96a, June 2003, INED-EUROREVES ";
 char fullversion[]="$Revision$ $Date$"; 
 int erreur; /* Error number */
 int nvar;
@@ -205,8 +208,12 @@ char fileresvpl[FILENAMELENGTH];
 char title[MAXLINE];
 char optionfile[FILENAMELENGTH], datafile[FILENAMELENGTH],  filerespl[FILENAMELENGTH];
 char optionfilext[10], optionfilefiname[FILENAMELENGTH], plotcmd[FILENAMELENGTH];
+char tmpout[FILENAMELENGTH]; 
+char command[FILENAMELENGTH];
+int  outcmd=0;
 
 char fileres[FILENAMELENGTH], filerespij[FILENAMELENGTH], filereso[FILENAMELENGTH], rfileres[FILENAMELENGTH];
+char lfileres[FILENAMELENGTH];
 char filelog[FILENAMELENGTH]; /* Log file */
 char filerest[FILENAMELENGTH];
 char fileregp[FILENAMELENGTH];
@@ -1354,7 +1361,7 @@ double funcone( double *x)
       ll[s[mw[mi][i]][i]] += 2*weight[i]*lli;
 /*       printf("i=%6d s1=%1d s2=%1d mi=%1d mw=%1d dh=%3d prob=%10.6f w=%6.4f out=%10.6f sav=%10.6f\n",i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],out[s1][s2],savm[s1][s2]); */
       if(globpr){
-       fprintf(ficresilk,"%ld %6d %1d %1d %1d %1d %3d %10.6f %6.4f\
+       fprintf(ficresilk,"%9d %6d %1d %1d %1d %1d %3d %10.6f %6.4f\
  %10.6f %10.6f %10.6f ", \
                num[i],i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],
                2*weight[i]*lli,out[s1][s2],savm[s1][s2]);
@@ -1376,6 +1383,34 @@ double funcone( double *x)
   return -l;
 }
 
+char *subdirf(char fileres[])
+{
+  
+  strcpy(tmpout,optionfilefiname);
+  strcat(tmpout,"/"); /* Add to the right */
+  strcat(tmpout,fileres);
+  return tmpout;
+}
+
+char *subdirf2(char fileres[], char *preop)
+{
+  
+  strcpy(tmpout,optionfilefiname);
+  strcat(tmpout,"/");
+  strcat(tmpout,preop);
+  strcat(tmpout,fileres);
+  return tmpout;
+}
+char *subdirf3(char fileres[], char *preop, char *preop2)
+{
+  
+  strcpy(tmpout,optionfilefiname);
+  strcat(tmpout,"/");
+  strcat(tmpout,preop);
+  strcat(tmpout,preop2);
+  strcat(tmpout,fileres);
+  return tmpout;
+}
 
 void likelione(FILE *ficres,double p[], int npar, int nlstate, int *globpri, long *ipmx, double *sw, double *fretone, double (*funcone)(double []))
 {
@@ -1386,7 +1421,7 @@ void likelione(FILE *ficres,double p[], int npar, int nlstate, int *globpri, lon
    */
   int k;
 
-  if(*globpri !=0){ /* Just counts and sums no printings */
+  if(*globpri !=0){ /* Just counts and sums, no printings */
     strcpy(fileresilk,"ilk"); 
     strcat(fileresilk,fileres);
     if((ficresilk=fopen(fileresilk,"w"))==NULL) {
@@ -1394,7 +1429,7 @@ void likelione(FILE *ficres,double p[], int npar, int nlstate, int *globpri, lon
       fprintf(ficlog,"Problem with resultfile: %s\n", fileresilk);
     }
     fprintf(ficresilk, "#individual(line's_record) s1 s2 wave# effective_wave# number_of_matrices_product pij weight -2ln(pij)*weight 0pij_x 0pij_(x-stepm) cumulating_loglikeli_by_health_state(reweighted=-2ll*weightXnumber_of_contribs/sum_of_weights) and_total\n");
-    fprintf(ficresilk, "#num_i i s1 s2 mi mw dh likeli weight out sav ");
+    fprintf(ficresilk, "#num_i i s1 s2 mi mw dh likeli weight 2wlli out sav ");
     /*         i,s1,s2,mi,mw[mi][i],dh[mi][i],exp(lli),weight[i],2*weight[i]*lli,out[s1][s2],savm[s1][s2]); */
     for(k=1; k<=nlstate; k++) 
       fprintf(ficresilk," -2*gipw/gsw*weight*ll[%d]++",k);
@@ -1404,12 +1439,13 @@ void likelione(FILE *ficres,double p[], int npar, int nlstate, int *globpri, lon
   *fretone=(*funcone)(p);
   if(*globpri !=0){
     fclose(ficresilk);
-    fprintf(fichtm,"\n<br>File of contributions to the likelihood: <a href=\"%s\">%s</a><br>\n",fileresilk,fileresilk);
+    fprintf(fichtm,"\n<br>File of contributions to the likelihood: <a href=\"%s\">%s</a><br>\n",subdirf(fileresilk),subdirf(fileresilk));
     fflush(fichtm); 
   } 
   return;
 }
 
+
 /*********** Maximum Likelihood Estimation ***************/
 
 void mlikeli(FILE *ficres,double p[], int npar, int ncovmodel, int nlstate, double ftol, double (*func)(double []))
@@ -2365,20 +2401,7 @@ void varevsij(char optionfilefiname[], double ***vareij, double **matcov, double
       fprintf(ficresprobmorprev," w%1d p%-d%-d",i,i,j);
   }  
   fprintf(ficresprobmorprev,"\n");
-  if((ficgp=fopen(optionfilegnuplot,"a"))==NULL) {
-    printf("Problem with gnuplot file: %s\n", optionfilegnuplot);
-    fprintf(ficlog,"Problem with gnuplot file: %s\n", optionfilegnuplot);
-    exit(0);
-  }
-  else{
-    fprintf(ficgp,"\n# Routine varevsij");
-  }
-/*   if((fichtm=fopen(optionfilehtm,"a"))==NULL) { */
-/*     printf("Problem with html file: %s\n", optionfilehtm); */
-/*     fprintf(ficlog,"Problem with html file: %s\n", optionfilehtm); */
-/*     exit(0); */
-/*   } */
-/*   else{ */
+  fprintf(ficgp,"\n# Routine varevsij");
   fprintf(fichtm,"\n<li><h4> Computing probabilities of dying over estepm months as a weighted average (i.e global mortality independent of initial healh state)</h4></li>\n");
   fprintf(fichtm,"\n<br>%s  <br>\n",digitp);
 /*   } */
@@ -2593,14 +2616,15 @@ void varevsij(char optionfilefiname[], double ***vareij, double **matcov, double
 /*   fprintf(ficgp,"\n plot \"%s\"  u 1:($3*%6.3f) not w l 1 ",fileresprobmorprev,YEARM/estepm); */
 /*   fprintf(ficgp,"\n replot \"%s\"  u 1:(($3+1.96*$4)*%6.3f) t \"95\%% interval\" w l 2 ",fileresprobmorprev,YEARM/estepm); */
 /*   fprintf(ficgp,"\n replot \"%s\"  u 1:(($3-1.96*$4)*%6.3f) not w l 2 ",fileresprobmorprev,YEARM/estepm); */
-  fprintf(ficgp,"\n plot \"%s\"  u 1:($3) not w l 1 ",fileresprobmorprev);
-  fprintf(ficgp,"\n replot \"%s\"  u 1:(($3+1.96*$4)) t \"95\%% interval\" w l 2 ",fileresprobmorprev);
-  fprintf(ficgp,"\n replot \"%s\"  u 1:(($3-1.96*$4)) not w l 2 ",fileresprobmorprev);
-  fprintf(fichtm,"\n<br> File (multiple files are possible if covariates are present): <A href=\"%s\">%s</a>\n",fileresprobmorprev,fileresprobmorprev);
-  fprintf(fichtm,"\n<br> Probability is computed over estepm=%d months. <br> <img src=\"varmuptjgr%s%s%s.png\"> <br>\n", estepm,digitp,optionfilefiname,digit);
+  fprintf(ficgp,"\n plot \"%s\"  u 1:($3) not w l 1 ",subdirf(fileresprobmorprev));
+  fprintf(ficgp,"\n replot \"%s\"  u 1:(($3+1.96*$4)) t \"95\%% interval\" w l 2 ",subdirf(fileresprobmorprev));
+  fprintf(ficgp,"\n replot \"%s\"  u 1:(($3-1.96*$4)) not w l 2 ",subdirf(fileresprobmorprev));
+  fprintf(fichtm,"\n<br> File (multiple files are possible if covariates are present): <A href=\"%s\">%s</a>\n",subdirf(fileresprobmorprev),subdirf(fileresprobmorprev));
+  fprintf(fichtm,"\n<br> Probability is computed over estepm=%d months. <br> <img src=\"%s%s.png\"> <br>\n", estepm,subdirf3(optionfilefiname,"varmuptjgr",digitp),digit);
   /*  fprintf(fichtm,"\n<br> Probability is computed over estepm=%d months and then divided by estepm and multiplied by %.0f in order to have the probability to die over a year <br> <img src=\"varmuptjgr%s%s.png\"> <br>\n", stepm,YEARM,digitp,digit);
 */
-  fprintf(ficgp,"\nset out \"varmuptjgr%s%s%s.png\";replot;",digitp,optionfilefiname,digit);
+/*   fprintf(ficgp,"\nset out \"varmuptjgr%s%s%s.png\";replot;",digitp,optionfilefiname,digit); */
+  fprintf(ficgp,"\nset out \"%s%s.png\";replot;",digitp,subdirf3(optionfilefiname,"varmuptjgr",digitp),digit);
 
   free_vector(xp,1,npar);
   free_matrix(doldm,1,nlstate,1,nlstate);
@@ -2610,8 +2634,8 @@ void varevsij(char optionfilefiname[], double ***vareij, double **matcov, double
   free_matrix(varppt,nlstate+1,nlstate+ndeath,nlstate+1,nlstate+ndeath);
   if (mobilav!=0) free_ma3x(mobaverage,1, AGESUP,1,NCOVMAX, 1,NCOVMAX);
   fclose(ficresprobmorprev);
-  fclose(ficgp);
-/*   fclose(fichtm); */
+  fflush(ficgp);
+  fflush(fichtm); 
 }  /* end varevsij */
 
 /************ Variance of prevlim ******************/
@@ -2768,28 +2792,13 @@ void varprob(char optionfilefiname[], double **matcov, double x[], double delti[
   mu=matrix(1,(nlstate)*(nlstate+ndeath), (int) bage, (int)fage);
   varpij=ma3x(1,nlstate*(nlstate+ndeath),1,nlstate*(nlstate+ndeath),(int) bage, (int) fage);
   first=1;
-  if((ficgp=fopen(optionfilegnuplot,"a"))==NULL) {
-    printf("Problem with gnuplot file: %s\n", optionfilegnuplot);
-    fprintf(ficlog,"Problem with gnuplot file: %s\n", optionfilegnuplot);
-    exit(0);
-  }
-  else{
-    fprintf(ficgp,"\n# Routine varprob");
-  }
-/*   if((fichtm=fopen(optionfilehtm,"a"))==NULL) { */
-/*     printf("Problem with html file: %s\n", optionfilehtm); */
-/*     fprintf(ficlog,"Problem with html file: %s\n", optionfilehtm); */
-/*     exit(0); */
-/*   } */
-/*   else{ */
-    fprintf(fichtm,"\n<li><h4> Computing and drawing one step probabilities with their confidence intervals</h4></li>\n");
-    fprintf(fichtm,"\n");
+  fprintf(ficgp,"\n# Routine varprob");
+  fprintf(fichtm,"\n<li><h4> Computing and drawing one step probabilities with their confidence intervals</h4></li>\n");
+  fprintf(fichtm,"\n");
 
-    fprintf(fichtm,"\n<li><h4> Computing matrix of variance-covariance of step probabilities</h4></li>\n");
-    fprintf(fichtm,"\nWe have drawn ellipsoids of confidence around the p<inf>ij</inf>, p<inf>kl</inf> to understand the covariance between two incidences. They are expressed in year<sup>-1</sup> in order to be less dependent of stepm.<br>\n");
-    fprintf(fichtm,"\n<br> We have drawn x'cov<sup>-1</sup>x = 4 where x is the column vector (pij,pkl). It means that if pij and pkl where uncorrelated the (2X2) matrix would have been (1/(var pij), 0 , 0, 1/(var pkl)), and the confidence interval would be 2 standard deviations wide on each axis. <br> When both incidences are correlated we diagonalised the inverse of the covariance matrix and made the appropriate rotation.<br> \n");
-
-/*   } */
+  fprintf(fichtm,"\n<li><h4> Computing matrix of variance-covariance of step probabilities</h4></li>\n");
+  fprintf(fichtm,"\nWe have drawn ellipsoids of confidence around the p<inf>ij</inf>, p<inf>kl</inf> to understand the covariance between two incidences. They are expressed in year<sup>-1</sup> in order to be less dependent of stepm.<br>\n");
+  fprintf(fichtm,"\n<br> We have drawn x'cov<sup>-1</sup>x = 4 where x is the column vector (pij,pkl). It means that if pij and pkl where uncorrelated the (2X2) matrix would have been (1/(var pij), 0 , 0, 1/(var pkl)), and the confidence interval would be 2 standard deviations wide on each axis. <br> When both incidences are correlated we diagonalised the inverse of the covariance matrix and made the appropriate rotation.<br> \n");
 
   cov[1]=1;
   tj=cptcoveff;
@@ -2971,10 +2980,14 @@ void varprob(char optionfilefiname[], double **matcov, double x[], double delti[
                    fprintf(ficgp,"\nset parametric;unset label");
                    fprintf(ficgp,"\nset log y;set log x; set xlabel \"p%1d%1d (year-1)\";set ylabel \"p%1d%1d (year-1)\"",k1,l1,k2,l2);
                    fprintf(ficgp,"\nset ter png small\nset size 0.65,0.65");
-                   fprintf(fichtm,"\n<br>Ellipsoids of confidence cov(p%1d%1d,p%1d%1d) expressed in year<sup>-1</sup> :<a href=\"varpijgr%s%d%1d%1d-%1d%1d.png\">varpijgr%s%d%1d%1d-%1d%1d.png</A>, ",k1,l1,k2,l2,optionfilefiname, j1,k1,l1,k2,l2,optionfilefiname, j1,k1,l1,k2,l2);
-                   fprintf(fichtm,"\n<br><img src=\"varpijgr%s%d%1d%1d-%1d%1d.png\"> ",optionfilefiname, j1,k1,l1,k2,l2);
+                   fprintf(fichtm,"\n<br>Ellipsoids of confidence cov(p%1d%1d,p%1d%1d) expressed in year<sup>-1</sup>\
+ :<a href=\"%s%d%1d%1d-%1d%1d.png\">\
+%s%d%1d%1d-%1d%1d.png</A>, ",k1,l1,k2,l2,\
+                           subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2,\
+                           subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2);
+                   fprintf(fichtm,"\n<br><img src=\"%s%d%1d%1d-%1d%1d.png\"> ",subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2);
                    fprintf(fichtm,"\n<br> Correlation at age %d (%.3f),",(int) age, c12);
-                   fprintf(ficgp,"\nset out \"varpijgr%s%d%1d%1d-%1d%1d.png\"",optionfilefiname, j1,k1,l1,k2,l2);
+                   fprintf(ficgp,"\nset out \"%s%d%1d%1d-%1d%1d.png\"",subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2);
                    fprintf(ficgp,"\nset label \"%d\" at %11.3e,%11.3e center",(int) age, mu1,mu2);
                    fprintf(ficgp,"\n# Age %d, p%1d%1d - p%1d%1d",(int) age, k1,l1,k2,l2);
                    fprintf(ficgp,"\nplot [-pi:pi] %11.3e+ %.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)), %11.3e +%.3f*(%11.3e*%11.3e*cos(t)+%11.3e*%11.3e*sin(t)) not",\
@@ -2991,7 +3004,7 @@ void varprob(char optionfilefiname[], double **matcov, double x[], double delti[
                  }/* if first */
                } /* age mod 5 */
              } /* end loop age */
-             fprintf(ficgp,"\nset out \"varpijgr%s%d%1d%1d-%1d%1d.png\";replot;",optionfilefiname, j1,k1,l1,k2,l2);
+             fprintf(ficgp,"\nset out \"%s%d%1d%1d-%1d%1d.png\";replot;",subdirf2(optionfilefiname,"varpijgr"), j1,k1,l1,k2,l2);
              first=1;
            } /*l12 */
          } /* k12 */
@@ -3005,7 +3018,7 @@ void varprob(char optionfilefiname[], double **matcov, double x[], double delti[
   fclose(ficresprob);
   fclose(ficresprobcov);
   fclose(ficresprobcor);
-  fclose(ficgp);
+  /*  fclose(ficgp);*/
 }
 
 
@@ -3024,12 +3037,15 @@ void printinghtml(char fileres[], char title[], char datafile[], int firstpass,
 /*   } */
 
    fprintf(fichtm,"<ul><li><h4>Result files (first order: no variance)</h4>\n \
- - Observed prevalence in each state (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"p%s\">p%s</a> <br>\n \
- - Estimated transition probabilities over %d (stepm) months: <a href=\"pij%s\">pij%s</a><br>\n \
- - Stable prevalence in each health state: <a href=\"pl%s\">pl%s</a> <br>\n \
+ - Observed prevalence in each state (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"%s\">%s</a> <br>\n \
+ - Estimated transition probabilities over %d (stepm) months: <a href=\"%s\">%s</a><br>\n \
+ - Stable prevalence in each health state: <a href=\"%s\">%s</a> <br>\n \
  - Life expectancies by age and initial health status (estepm=%2d months): \
-   <a href=\"e%s\">e%s</a> <br>\n</li>", \
-  jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,fileres,fileres,stepm,fileres,fileres,fileres,fileres,estepm,fileres,fileres);
+   <a href=\"%s\">%s</a> <br>\n</li>", \
+          jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirf2(fileres,"p"),subdirf2(fileres,"p"),\
+          stepm,subdirf2(fileres,"pij"),subdirf2(fileres,"pij"),\
+          subdirf2(fileres,"pl"),subdirf2(fileres,"pl"),\
+          estepm,subdirf2(fileres,"e"),subdirf2(fileres,"e"));
 
 fprintf(fichtm," \n<ul><li><b>Graphs</b></li><p>");
 
@@ -3047,24 +3063,24 @@ fprintf(fichtm," \n<ul><li><b>Graphs</b></li><p>");
        fprintf(fichtm," ************\n<hr size=\"2\" color=\"#EC5E5E\">");
      }
      /* Pij */
-     fprintf(fichtm,"<br>- Pij or Conditional probabilities to be observed in state j being in state i, %d (stepm) months before: pe%s%d1.png<br> \
-<img src=\"pe%s%d1.png\">",stepm,strtok(optionfile, "."),jj1,strtok(optionfile, "."),jj1);     
+     fprintf(fichtm,"<br>- Pij or Conditional probabilities to be observed in state j being in state i, %d (stepm) months before: %s%d1.png<br> \
+<img src=\"%s%d1.png\">",stepm,subdirf2(optionfilefiname,"pe"),jj1,subdirf2(optionfilefiname,"pe"),jj1);     
      /* Quasi-incidences */
      fprintf(fichtm,"<br>- Pij or Conditional probabilities to be observed in state j being in state i %d (stepm) months\
- before but expressed in per year i.e. quasi incidences if stepm is small and probabilities too: pe%s%d2.png<br> \
-<img src=\"pe%s%d2.png\">",stepm,strtok(optionfile, "."),jj1,strtok(optionfile, "."),jj1); 
+ before but expressed in per year i.e. quasi incidences if stepm is small and probabilities too: %s%d2.png<br> \
+<img src=\"%s%d2.png\">",stepm,subdirf2(optionfilefiname,"pe"),jj1,subdirf2(optionfilefiname,"pe"),jj1); 
        /* Stable prevalence in each health state */
        for(cpt=1; cpt<nlstate;cpt++){
         fprintf(fichtm,"<br>- Stable prevalence in each health state : p%s%d%d.png<br> \
-<img src=\"p%s%d%d.png\">",strtok(optionfile, "."),cpt,jj1,strtok(optionfile, "."),cpt,jj1);
+<img src=\"%s%d%d.png\">",subdirf2(optionfilefiname,"p"),cpt,jj1,subdirf2(optionfilefiname,"p"),cpt,jj1);
        }
      for(cpt=1; cpt<=nlstate;cpt++) {
-        fprintf(fichtm,"\n<br>- Health life expectancies by age and initial health state (%d): exp%s%d%d.png <br> \
-<img src=\"exp%s%d%d.png\">",cpt,strtok(optionfile, "."),cpt,jj1,strtok(optionfile, "."),cpt,jj1);
+        fprintf(fichtm,"\n<br>- Health life expectancies by age and initial health state (%d): %s%d%d.png <br> \
+<img src=\"%s%d%d.png\">",cpt,subdirf2(optionfilefiname,"exo"),cpt,jj1,subdirf2(optionfilefiname,"exp"),cpt,jj1);
      }
      fprintf(fichtm,"\n<br>- Total life expectancy by age and \
-health expectancies in states (1) and (2): e%s%d.png<br>\
-<img src=\"e%s%d.png\">",strtok(optionfile, "."),jj1,strtok(optionfile, "."),jj1);
+health expectancies in states (1) and (2): %s%d.png<br>\
+<img src=\"%s%d.png\">",subdirf2(optionfilefiname,"e"),jj1,subdirf2(optionfilefiname,"e"),jj1);
    } /* end i1 */
  }/* End k1 */
  fprintf(fichtm,"</ul>");
@@ -3072,12 +3088,19 @@ health expectancies in states (1) and (2): e%s%d.png<br>\
 
  fprintf(fichtm,"\n<br><li><h4> Result files (second order: variances)</h4>\n\
  - Parameter file with estimated parameters and covariance matrix: <a href=\"%s\">%s</a> <br>\n\
- - Variance of one-step probabilities: <a href=\"prob%s\">prob%s</a> <br>\n\
- - Variance-covariance of one-step probabilities: <a href=\"probcov%s\">probcov%s</a> <br>\n\
- - Correlation matrix of one-step probabilities: <a href=\"probcor%s\">probcor%s</a> <br>\n\
- - Variances and covariances of life expectancies by age and initial health status (estepm=%d months): <a href=\"v%s\">v%s</a><br>\n\
- - Health expectancies with their variances (no covariance): <a href=\"t%s\">t%s</a> <br>\n\
- - Standard deviation of stable prevalences: <a href=\"vpl%s\">vpl%s</a> <br>\n",rfileres,rfileres,fileres,fileres,fileres,fileres,fileres,fileres, estepm, fileres,fileres,fileres,fileres,fileres,fileres);
+ - Variance of one-step probabilities: <a href=\"%s\">%s</a> <br>\n\
+ - Variance-covariance of one-step probabilities: <a href=\"%s\">%s</a> <br>\n\
+ - Correlation matrix of one-step probabilities: <a href=\"%s\">%s</a> <br>\n\
+ - Variances and covariances of life expectancies by age and initial health status (estepm=%d months): <a href=\"%s\">%s</a><br>\n\
+ - Health expectancies with their variances (no covariance): <a href=\"%s\">%s</a> <br>\n\
+ - Standard deviation of stable prevalences: <a href=\"%s\">%s</a> <br>\n",\
+        rfileres,rfileres,\
+        subdirf2(fileres,"prob"),subdirf2(fileres,"prob"),\
+        subdirf2(fileres,"probcov"),subdirf2(fileres,"probcov"),\
+        subdirf2(fileres,"probcor"),subdirf2(fileres,"probcor"),\
+        estepm, subdirf2(fileres,"v"),subdirf2(fileres,"v"),\
+        subdirf2(fileres,"t"),subdirf2(fileres,"t"),\
+        subdirf2(fileres,"vpl"),subdirf2(fileres,"vpl"));
 
 /*  if(popforecast==1) fprintf(fichtm,"\n */
 /*  - Prevalences forecasting: <a href=\"f%s\">f%s</a> <br>\n */
@@ -3102,8 +3125,8 @@ fprintf(fichtm," <ul><li><b>Graphs</b></li><p>");
      }
      for(cpt=1; cpt<=nlstate;cpt++) {
        fprintf(fichtm,"<br>- Observed and period prevalence (with confident\
-interval) in state (%d): v%s%d%d.png <br>\
-<img src=\"v%s%d%d.png\">",cpt,strtok(optionfile, "."),cpt,jj1,strtok(optionfile, "."),cpt,jj1);  
+interval) in state (%d): %s%d%d.png <br>\
+<img src=\"%s%d%d.png\">",cpt,subdirf2(optionfilefiname,"pe"),cpt,jj1,subdirf2(optionfilefiname,"pe"),cpt,jj1);  
      }
    } /* end i1 */
  }/* End k1 */
@@ -3112,65 +3135,73 @@ interval) in state (%d): v%s%d%d.png <br>\
 }
 
 /******************* Gnuplot file **************/
-void printinggnuplot(char fileres[], double ageminpar, double agemaxpar, double fage , char pathc[], double p[]){
+void printinggnuplot(char fileres[], char optionfilefiname[], double ageminpar, double agemaxpar, double fage , char path[], double p[]){
 
+  char dirfileres[132],optfileres[132];
   int m,cpt,k1,i,k,j,jk,k2,k3,ij,l;
   int ng;
-  if((ficgp=fopen(optionfilegnuplot,"a"))==NULL) {
-    printf("Problem with file %s",optionfilegnuplot);
-    fprintf(ficlog,"Problem with file %s",optionfilegnuplot);
-  }
+/*   if((ficgp=fopen(optionfilegnuplot,"a"))==NULL) { */
+/*     printf("Problem with file %s",optionfilegnuplot); */
+/*     fprintf(ficlog,"Problem with file %s",optionfilegnuplot); */
+/*   } */
 
   /*#ifdef windows */
-    fprintf(ficgp,"cd \"%s\" \n",pathc);
+  fprintf(ficgp,"cd \"%s\" \n",path);
     /*#endif */
-m=pow(2,cptcoveff);
-  
+  m=pow(2,cptcoveff);
+
+  strcpy(dirfileres,optionfilefiname);
+  strcpy(optfileres,"vpl");
  /* 1eme*/
   for (cpt=1; cpt<= nlstate ; cpt ++) {
    for (k1=1; k1<= m ; k1 ++) {
-     fprintf(ficgp,"\nset out \"v%s%d%d.png\" \n",strtok(optionfile, "."),cpt,k1);
-     fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \nset ter png small\nset size 0.65,0.65\nplot [%.f:%.f] \"vpl%s\" every :::%d::%d u 1:2 \"\%%lf",ageminpar,fage,fileres,k1-1,k1-1);
+     fprintf(ficgp,"\nset out \"%s%d%d.png\" \n",subdirf2(optionfilefiname,"v"),cpt,k1);
+     fprintf(ficgp,"\n#set out \"v%s%d%d.png\" \n",optionfilefiname,cpt,k1);
+     fprintf(ficgp,"set xlabel \"Age\" \n\
+set ylabel \"Probability\" \n\
+set ter png small\n\
+set size 0.65,0.65\n\
+plot [%.f:%.f] \"%s\" every :::%d::%d u 1:2 \"\%%lf",ageminpar,fage,subdirf2(fileres,"vpl"),k1-1,k1-1);
 
      for (i=1; i<= nlstate ; i ++) {
        if (i==cpt) fprintf(ficgp," \%%lf (\%%lf)");
        else fprintf(ficgp," \%%*lf (\%%*lf)");
      }
-     fprintf(ficgp,"\" t\"Stable prevalence\" w l 0,\"vpl%s\" every :::%d::%d u 1:($2+1.96*$3) \"\%%lf",fileres,k1-1,k1-1);
+     fprintf(ficgp,"\" t\"Stable prevalence\" w l 0,\"%s\" every :::%d::%d u 1:($2+1.96*$3) \"\%%lf",subdirf2(fileres,"vpl"),k1-1,k1-1);
      for (i=1; i<= nlstate ; i ++) {
        if (i==cpt) fprintf(ficgp," \%%lf (\%%lf)");
        else fprintf(ficgp," \%%*lf (\%%*lf)");
      } 
-     fprintf(ficgp,"\" t\"95\%% CI\" w l 1,\"vpl%s\" every :::%d::%d u 1:($2-1.96*$3) \"\%%lf",fileres,k1-1,k1-1); 
+     fprintf(ficgp,"\" t\"95\%% CI\" w l 1,\"%s\" every :::%d::%d u 1:($2-1.96*$3) \"\%%lf",subdirf2(fileres,"vpl"),k1-1,k1-1); 
      for (i=1; i<= nlstate ; i ++) {
        if (i==cpt) fprintf(ficgp," \%%lf (\%%lf)");
        else fprintf(ficgp," \%%*lf (\%%*lf)");
      }  
-     fprintf(ficgp,"\" t\"\" w l 1,\"p%s\" every :::%d::%d u 1:($%d) t\"Observed prevalence \" w l 2",fileres,k1-1,k1-1,2+4*(cpt-1));
+     fprintf(ficgp,"\" t\"\" w l 1,\"%s\" every :::%d::%d u 1:($%d) t\"Observed prevalence \" w l 2",subdirf2(fileres,"p"),k1-1,k1-1,2+4*(cpt-1));
    }
   }
   /*2 eme*/
   
   for (k1=1; k1<= m ; k1 ++) { 
-    fprintf(ficgp,"\nset out \"e%s%d.png\" \n",strtok(optionfile, "."),k1);
+    fprintf(ficgp,"\nset out \"%s%d.png\" \n",subdirf2(optionfilefiname,"e"),k1);
     fprintf(ficgp,"set ylabel \"Years\" \nset ter png small\nset size 0.65,0.65\nplot [%.f:%.f] ",ageminpar,fage);
     
     for (i=1; i<= nlstate+1 ; i ++) {
       k=2*i;
-      fprintf(ficgp,"\"t%s\" every :::%d::%d u 1:2 \"\%%lf",fileres,k1-1,k1-1);
+      fprintf(ficgp,"\"%s\" every :::%d::%d u 1:2 \"\%%lf",subdirf2(fileres,"t"),k1-1,k1-1);
       for (j=1; j<= nlstate+1 ; j ++) {
        if (j==i) fprintf(ficgp," \%%lf (\%%lf)");
        else fprintf(ficgp," \%%*lf (\%%*lf)");
       }   
       if (i== 1) fprintf(ficgp,"\" t\"TLE\" w l ,");
       else fprintf(ficgp,"\" t\"LE in state (%d)\" w l ,",i-1);
-      fprintf(ficgp,"\"t%s\" every :::%d::%d u 1:($2-$3*2) \"\%%lf",fileres,k1-1,k1-1);
+      fprintf(ficgp,"\"%s\" every :::%d::%d u 1:($2-$3*2) \"\%%lf",subdirf2(fileres,"t"),k1-1,k1-1);
       for (j=1; j<= nlstate+1 ; j ++) {
        if (j==i) fprintf(ficgp," \%%lf (\%%lf)");
        else fprintf(ficgp," \%%*lf (\%%*lf)");
       }   
       fprintf(ficgp,"\" t\"\" w l 0,");
-      fprintf(ficgp,"\"t%s\" every :::%d::%d u 1:($2+$3*2) \"\%%lf",fileres,k1-1,k1-1);
+      fprintf(ficgp,"\"%s\" every :::%d::%d u 1:($2+$3*2) \"\%%lf",subdirf2(fileres,"t"),k1-1,k1-1);
       for (j=1; j<= nlstate+1 ; j ++) {
        if (j==i) fprintf(ficgp," \%%lf (\%%lf)");
        else fprintf(ficgp," \%%*lf (\%%*lf)");
@@ -3185,8 +3216,10 @@ m=pow(2,cptcoveff);
   for (k1=1; k1<= m ; k1 ++) { 
     for (cpt=1; cpt<= nlstate ; cpt ++) {
       k=2+nlstate*(2*cpt-2);
-      fprintf(ficgp,"\nset out \"exp%s%d%d.png\" \n",strtok(optionfile, "."),cpt,k1);
-      fprintf(ficgp,"set ter png small\nset size 0.65,0.65\nplot [%.f:%.f] \"e%s\" every :::%d::%d u 1:%d t \"e%d1\" w l",ageminpar,fage,fileres,k1-1,k1-1,k,cpt);
+      fprintf(ficgp,"\nset out \"%s%d%d.png\" \n",subdirf2(optionfilefiname,"exp"),cpt,k1);
+      fprintf(ficgp,"set ter png small\n\
+set size 0.65,0.65\n\
+plot [%.f:%.f] \"%s\" every :::%d::%d u 1:%d t \"e%d1\" w l",ageminpar,fage,subdirf2(fileres,"e"),k1-1,k1-1,k,cpt);
       /*fprintf(ficgp,",\"e%s\" every :::%d::%d u 1:($%d-2*$%d) \"\%%lf ",fileres,k1-1,k1-1,k,k+1);
        for (i=1; i<= nlstate*2 ; i ++) fprintf(ficgp,"\%%lf (\%%lf) ");
        fprintf(ficgp,"\" t \"e%d1\" w l",cpt);
@@ -3196,7 +3229,7 @@ m=pow(2,cptcoveff);
        
       */
       for (i=1; i< nlstate ; i ++) {
-       fprintf(ficgp," ,\"e%s\" every :::%d::%d u 1:%d t \"e%d%d\" w l",fileres,k1-1,k1-1,k+2*i,cpt,i+1);
+       fprintf(ficgp," ,\"%s\" every :::%d::%d u 1:%d t \"e%d%d\" w l",subdirf2(fileres,"e"),k1-1,k1-1,k+2*i,cpt,i+1);
        
       } 
     }
@@ -3206,15 +3239,17 @@ m=pow(2,cptcoveff);
   for (k1=1; k1<= m ; k1 ++) { 
     for (cpt=1; cpt<=nlstate ; cpt ++) {
       k=3;
-      fprintf(ficgp,"\nset out \"p%s%d%d.png\" \n",strtok(optionfile, "."),cpt,k1);
-      fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \nset ter png small\nset size 0.65,0.65\nplot [%.f:%.f] \"pij%s\" u ($1==%d ? ($3):1/0):($%d/($%d",ageminpar,agemaxpar,fileres,k1,k+cpt+1,k+1);
+      fprintf(ficgp,"\nset out \"%s%d%d.png\" \n",subdirf2(optionfilefiname,"p"),cpt,k1);
+      fprintf(ficgp,"set xlabel \"Age\" \nset ylabel \"Probability\" \n\
+set ter png small\nset size 0.65,0.65\n\
+plot [%.f:%.f] \"%s\" u ($1==%d ? ($3):1/0):($%d/($%d",ageminpar,agemaxpar,subdirf2(fileres,"pij"),k1,k+cpt+1,k+1);
       
       for (i=1; i< nlstate ; i ++)
        fprintf(ficgp,"+$%d",k+i+1);
       fprintf(ficgp,")) t\"prev(%d,%d)\" w l",cpt,cpt+1);
       
       l=3+(nlstate+ndeath)*cpt;
-      fprintf(ficgp,",\"pij%s\" u ($1==%d ? ($3):1/0):($%d/($%d",fileres,k1,l+cpt+1,l+1);
+      fprintf(ficgp,",\"%s\" u ($1==%d ? ($3):1/0):($%d/($%d",subdirf2(fileres,"pij"),k1,l+cpt+1,l+1);
       for (i=1; i< nlstate ; i ++) {
        l=3+(nlstate+ndeath)*cpt;
        fprintf(ficgp,"+$%d",l+i+1);
@@ -3238,7 +3273,7 @@ m=pow(2,cptcoveff);
 
    for(ng=1; ng<=2;ng++){ /* Number of graphics: first is probabilities second is incidence per year*/
      for(jk=1; jk <=m; jk++) {
-       fprintf(ficgp,"\nset out \"pe%s%d%d.png\" \n",strtok(optionfile, "."),jk,ng); 
+       fprintf(ficgp,"\nset out \"%s%d%d.png\" \n",subdirf2(optionfilefiname,"pe"),jk,ng); 
        if (ng==2)
         fprintf(ficgp,"\nset ylabel \"Quasi-incidence per year\"\n");
        else
@@ -3285,7 +3320,7 @@ m=pow(2,cptcoveff);
        } /* end k2 */
      } /* end jk */
    } /* end ng */
-   fclose(ficgp); 
+   fflush(ficgp); 
 }  /* end gnuplot */
 
 
@@ -3625,6 +3660,126 @@ int fileappend(FILE *fichier, char *optionfich)
   fflush(fichier);
   return (1);
 }
+void prwizard(int ncovmodel, int nlstate, int ndeath,  char model[], FILE *ficparo)
+{
+
+  char ca[32], cb[32], cc[32];
+  int i,j, k, l, li, lj, lk, ll, jj, npar, itimes;
+  int numlinepar;
+
+  printf("# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n");
+  fprintf(ficparo,"# Parameters nlstate*nlstate*ncov a12*1 + b12 * age + ...\n");
+  for(i=1; i <=nlstate; i++){
+    jj=0;
+    for(j=1; j <=nlstate+ndeath; j++){
+      if(j==i) continue;
+      jj++;
+      /*ca[0]= k+'a'-1;ca[1]='\0';*/
+      printf("%1d%1d",i,j);
+      fprintf(ficparo,"%1d%1d",i,j);
+      for(k=1; k<=ncovmodel;k++){
+       /*        printf(" %lf",param[i][j][k]); */
+       /*        fprintf(ficparo," %lf",param[i][j][k]); */
+       printf(" 0.");
+       fprintf(ficparo," 0.");
+      }
+      printf("\n");
+      fprintf(ficparo,"\n");
+    }
+  }
+  printf("# Scales (for hessian or gradient estimation)\n");
+  fprintf(ficparo,"# Scales (for hessian or gradient estimation)\n");
+  npar= (nlstate+ndeath-1)*nlstate*ncovmodel; /* Number of parameters*/ 
+  for(i=1; i <=nlstate; i++){
+    jj=0;
+    for(j=1; j <=nlstate+ndeath; j++){
+      if(j==i) continue;
+      jj++;
+      fprintf(ficparo,"%1d%1d",i,j);
+      printf("%1d%1d",i,j);
+      fflush(stdout);
+      for(k=1; k<=ncovmodel;k++){
+       /*      printf(" %le",delti3[i][j][k]); */
+       /*      fprintf(ficparo," %le",delti3[i][j][k]); */
+       printf(" 0.");
+       fprintf(ficparo," 0.");
+      }
+      numlinepar++;
+      printf("\n");
+      fprintf(ficparo,"\n");
+    }
+  }
+  printf("# Covariance matrix\n");
+/* # 121 Var(a12)\n\ */
+/* # 122 Cov(b12,a12) Var(b12)\n\ */
+/* # 131 Cov(a13,a12) Cov(a13,b12, Var(a13)\n\ */
+/* # 132 Cov(b13,a12) Cov(b13,b12, Cov(b13,a13) Var(b13)\n\ */
+/* # 212 Cov(a21,a12) Cov(a21,b12, Cov(a21,a13) Cov(a21,b13) Var(a21)\n\ */
+/* # 212 Cov(b21,a12) Cov(b21,b12, Cov(b21,a13) Cov(b21,b13) Cov(b21,a21) Var(b21)\n\ */
+/* # 232 Cov(a23,a12) Cov(a23,b12, Cov(a23,a13) Cov(a23,b13) Cov(a23,a21) Cov(a23,b21) Var(a23)\n\ */
+/* # 232 Cov(b23,a12) Cov(b23,b12) ... Var (b23)\n" */
+  fflush(stdout);
+  fprintf(ficparo,"# Covariance matrix\n");
+  /* # 121 Var(a12)\n\ */
+  /* # 122 Cov(b12,a12) Var(b12)\n\ */
+  /* #   ...\n\ */
+  /* # 232 Cov(b23,a12)  Cov(b23,b12) ... Var (b23)\n" */
+  
+  for(itimes=1;itimes<=2;itimes++){
+    jj=0;
+    for(i=1; i <=nlstate; i++){
+      for(j=1; j <=nlstate+ndeath; j++){
+       if(j==i) continue;
+       for(k=1; k<=ncovmodel;k++){
+         jj++;
+         ca[0]= k+'a'-1;ca[1]='\0';
+         if(itimes==1){
+           printf("#%1d%1d%d",i,j,k);
+           fprintf(ficparo,"#%1d%1d%d",i,j,k);
+         }else{
+           printf("%1d%1d%d",i,j,k);
+           fprintf(ficparo,"%1d%1d%d",i,j,k);
+           /*  printf(" %.5le",matcov[i][j]); */
+         }
+         ll=0;
+         for(li=1;li <=nlstate; li++){
+           for(lj=1;lj <=nlstate+ndeath; lj++){
+             if(lj==li) continue;
+             for(lk=1;lk<=ncovmodel;lk++){
+               ll++;
+               if(ll<=jj){
+                 cb[0]= lk +'a'-1;cb[1]='\0';
+                 if(ll<jj){
+                   if(itimes==1){
+                     printf(" Cov(%s%1d%1d,%s%1d%1d)",ca,i,j,cb, li,lj);
+                     fprintf(ficparo," Cov(%s%1d%1d,%s%1d%1d)",ca,i,j,cb, li,lj);
+                   }else{
+                     printf(" 0.");
+                     fprintf(ficparo," 0.");
+                   }
+                 }else{
+                   if(itimes==1){
+                     printf(" Var(%s%1d%1d)",ca,i,j);
+                     fprintf(ficparo," Var(%s%1d%1d)",ca,i,j);
+                   }else{
+                     printf(" 0.");
+                     fprintf(ficparo," 0.");
+                   }
+                 }
+               }
+             } /* end lk */
+           } /* end lj */
+         } /* end li */
+         printf("\n");
+         fprintf(ficparo,"\n");
+         numlinepar++;
+       } /* end k*/
+      } /*end j */
+    } /* end i */
+  }
+
+} /* end of prwizard */
+
 /***********************************************/
 /**************** Main Program *****************/
 /***********************************************/
@@ -3633,7 +3788,7 @@ int main(int argc, char *argv[])
 {
   int movingaverage(double ***probs, double bage,double fage, double ***mobaverage, int mobilav);
   int i,j, k, n=MAXN,iter,m,size=100,cptcode, cptcod;
-  int jj;
+  int jj, imk;
   int numlinepar=0; /* Current linenumber of parameter file */
   /*  FILE *fichtm; *//* Html File */
   /* FILE *ficgp;*/ /*Gnuplot File */
@@ -3648,7 +3803,8 @@ int main(int argc, char *argv[])
   double ***mobaverage;
   int *indx;
   char line[MAXLINE], linepar[MAXLINE];
-  char path[132],pathc[132],pathcd[132],pathtot[132],model[132];
+  char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE],model[MAXLINE];
+  char pathr[MAXLINE]; 
   int firstobs=1, lastobs=10;
   int sdeb, sfin; /* Status at beginning and end */
   int c,  h , cpt,l;
@@ -3682,7 +3838,7 @@ int main(int argc, char *argv[])
   char z[1]="c", occ;
 
   char stra[80], strb[80], strc[80], strd[80],stre[80],modelsav[80];
-  char *strt, *strtend;
+  char strstart[80], *strt, strtend[80];
   char *stratrunc;
   int lstra;
 
@@ -3698,9 +3854,9 @@ int main(int argc, char *argv[])
   (void) gettimeofday(&start_time,&tzp);
   tm = *localtime(&start_time.tv_sec);
   tmg = *gmtime(&start_time.tv_sec);
-  strt=asctime(&tm);
+  strcpy(strstart,asctime(&tm));
 
-/*  printf("Localtime (at start)=%s",strt); */
+/*  printf("Localtime (at start)=%s",strstart); */
 /*  tp.tv_sec = tp.tv_sec +86400; */
 /*  tm = *localtime(&start_time.tv_sec); */
 /*   tmg.tm_year=tmg.tm_year +dsign*dyear; */
@@ -3708,12 +3864,12 @@ int main(int argc, char *argv[])
 /*   tmg.tm_hour=tmg.tm_hour + 1; */
 /*   tp.tv_sec = mktime(&tmg); */
 /*   strt=asctime(&tmg); */
-/*   printf("Time(after) =%s",strt);  */
+/*   printf("Time(after) =%s",strstart);  */
 /*  (void) time (&time_value);
 *  printf("time=%d,t-=%d\n",time_value,time_value-86400);
 *  tm = *localtime(&time_value);
-*  strt=asctime(&tm);
-*  printf("tim_value=%d,asctime=%s\n",time_value,strt); 
+*  strstart=asctime(&tm);
+*  printf("tim_value=%d,asctime=%s\n",time_value,strstart); 
 */
 
   getcwd(pathcd, size);
@@ -3726,7 +3882,7 @@ int main(int argc, char *argv[])
   else{
     strcpy(pathtot,argv[1]);
   }
-  /*if(getcwd(pathcd, 132)!= NULL)printf ("Error pathcd\n");*/
+  /*if(getcwd(pathcd, MAXLINE)!= NULL)printf ("Error pathcd\n");*/
   /*cygwin_split_path(pathtot,path,optionfile);
     printf("pathtot=%s, path=%s, optionfile=%s\n",pathtot,path,optionfile);*/
   /* cutv(path,optionfile,pathtot,'\\');*/
@@ -3734,7 +3890,17 @@ int main(int argc, char *argv[])
   split(pathtot,path,optionfile,optionfilext,optionfilefiname);
   printf("pathtot=%s,\npath=%s,\noptionfile=%s \noptionfilext=%s \noptionfilefiname=%s\n",pathtot,path,optionfile,optionfilext,optionfilefiname);
   chdir(path);
-  replace(pathc,path);
+  strcpy(command,"mkdir ");
+  strcat(command,optionfilefiname);
+  if((outcmd=system(command)) != 0){
+    printf("Problem creating directory or it already exists %s%s, err=%d\n",path,optionfilefiname,outcmd);
+    /* fprintf(ficlog,"Problem creating directory %s%s\n",path,optionfilefiname); */
+    /* fclose(ficlog); */
+/*     exit(1); */
+  }
+/*   if((imk=mkdir(optionfilefiname))<0){ */
+/*     perror("mkdir"); */
+/*   } */
 
   /*-------- arguments in the command line --------*/
 
@@ -3748,10 +3914,14 @@ int main(int argc, char *argv[])
   fprintf(ficlog,"Log filename:%s\n",filelog);
   fprintf(ficlog,"\n%s\n%s",version,fullversion);
   fprintf(ficlog,"\nEnter the parameter file name: ");
-  fprintf(ficlog,"pathtot=%s, path=%s, optionfile=%s optionfilext=%s optionfilefiname=%s\n",pathtot,path,optionfile,optionfilext,optionfilefiname);
-
-  printf("Localtime (at start)=%s",strt);
-  fprintf(ficlog,"Localtime (at start)=%s",strt);
+  fprintf(ficlog,"pathtot=%s\n\
+ path=%s \n\
+ optionfile=%s\n\
+ optionfilext=%s\n\
+ optionfilefiname=%s\n",pathtot,path,optionfile,optionfilext,optionfilefiname);
+
+  printf("Localtime (at start):%s",strstart);
+  fprintf(ficlog,"Localtime (at start): %s",strstart);
   fflush(ficlog);
 
   /* */
@@ -3768,9 +3938,11 @@ int main(int argc, char *argv[])
     goto end;
   }
 
+
+
   strcpy(filereso,"o");
   strcat(filereso,fileres);
-  if((ficparo=fopen(filereso,"w"))==NULL) {
+  if((ficparo=fopen(filereso,"w"))==NULL) { /* opened on subdirectory */
     printf("Problem with Output resultfile: %s\n", filereso);
     fprintf(ficlog,"Problem with Output resultfile: %s\n", filereso);
     fflush(ficlog);
@@ -3812,7 +3984,15 @@ int main(int argc, char *argv[])
 
   ncovmodel=2+cptcovn; /*Number of variables = cptcovn + intercept + age */
   nvar=ncovmodel-1; /* Suppressing age as a basic covariate */
-  
+  if(mle==-1){ /* Print a wizard for help writing covariance matrix */
+    prwizard(ncovmodel, nlstate, ndeath, model, ficparo);
+    printf(" You choose mle=-1, look at file %s for a template of covariance matrix \n",filereso);
+    fprintf(ficlog," You choose mle=-1, look at file %s for a template of covariance matrix \n",filereso);
+    fclose (ficparo);
+    fclose (ficlog);
+    exit(0);
+  }
   /* Read guess parameters */
   /* Reads comments: lines beginning with '#' */
   while((c=getc(ficpar))=='#' && c!= EOF){
@@ -4272,7 +4452,7 @@ int main(int argc, char *argv[])
     fprintf(ficgp,"# %s\n", optionfilegnuplot); 
     fprintf(ficgp,"set missing 'NaNq'\n");
   }
-  fclose(ficgp);
+  /*  fclose(ficgp);*/
   /*--------- index.htm --------*/
 
   strcpy(optionfilehtm,optionfilefiname);
@@ -4293,30 +4473,29 @@ Title=%s <br>Datafile=%s Firstpass=%d Lastpass=%d Stepm=%d Weight=%d Model=%s<br
  - Date and time at start: %s</ul>\n",\
          fileres,version,fullversion,title,datafile,firstpass,lastpass,stepm, weightopt,\
          model,fileres,fileres,\
-         filelog,filelog,optionfilegnuplot,optionfilegnuplot,strt);
+         filelog,filelog,optionfilegnuplot,optionfilegnuplot,strstart);
   /*fclose(fichtm);*/
   fflush(fichtm);
 
+  strcpy(pathr,path);
+  strcat(pathr,optionfilefiname);
+  chdir(optionfilefiname); /* Move to directory named optionfile */
+  strcpy(lfileres,fileres);
+  strcat(lfileres,"/");
+  strcat(lfileres,optionfilefiname);
+  
+  /*  replace(pathc,path);*/
+
   /* Calculates basic frequencies. Computes observed prevalence at single age
      and prints on file fileres'p'. */
   freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint);
 
-/*   if((fichtm=fopen(optionfilehtm,"a"))==NULL) { */
-/*     printf("Problem with file: %s\n", optionfilehtm); */
-/*     fprintf(ficlog,"Problem with file: %s\n", optionfilehtm); */
-/*   } */
-
-
-/*   if(fileappend(fichtm, optionfilehtm)){ */
-    fprintf(fichtm,"\n");
-    fprintf(fichtm,"<br>Total number of observations=%d <br>\n\
+  fprintf(fichtm,"\n");
+  fprintf(fichtm,"<br>Total number of observations=%d <br>\n\
 Youngest age at first (selected) pass %.2f, oldest age %.2f<br>\n\
 Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf<br>\n",\
-       imx,agemin,agemax,jmin,jmax,jmean);
-/*     fclose(fichtm); */
-/*   } */
-
-    pmmij= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */
+         imx,agemin,agemax,jmin,jmax,jmean);
+  pmmij= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */
     oldms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */
     newms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */
     savms= matrix(1,nlstate+ndeath,1,nlstate+ndeath); /* creation */
@@ -4504,14 +4683,14 @@ Interval (in months) between two waves: Min=%d Max=%d Mean=%.2lf<br>\n",\
   /*  freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint);*/
   /*,dateprev1,dateprev2,jprev1, mprev1,anprev1,jprev2, mprev2,anprev2);*/
 
-  printinggnuplot(fileres, ageminpar,agemaxpar,fage, pathc,p);
+  printinggnuplot(fileres, optionfilefiname,ageminpar,agemaxpar,fage, path,p);
 
   printinghtml(fileres,title,datafile, firstpass, lastpass, stepm, weightopt,\
               model,imx,jmin,jmax,jmean,rfileres,popforecast,estepm,\
               jprev1,mprev1,anprev1,jprev2,mprev2,anprev2);
  
   /*------------ free_vector  -------------*/
-  chdir(path);
+  /*  chdir(path); */
  
   free_ivector(wav,1,imx);
   free_imatrix(dh,1,lastpass-firstpass+1,1,imx);
@@ -4828,8 +5007,8 @@ ageminpar, agemax, s[lastpass][imx], agev[lastpass][imx], nlstate, imx, mint[las
   free_ivector(Tage,1,15);
   free_ivector(Tcode,1,100);
 
-  /*  fclose(fichtm);*/
-  /*  fclose(ficgp);*/ /* ALready done */
+  fflush(fichtm);
+  fflush(ficgp);
   
 
   if(erreur >0){
@@ -4845,23 +5024,25 @@ ageminpar, agemax, s[lastpass][imx], agev[lastpass][imx], nlstate, imx, mint[las
   (void) gettimeofday(&end_time,&tzp);
   tm = *localtime(&end_time.tv_sec);
   tmg = *gmtime(&end_time.tv_sec);
-  strtend=asctime(&tm);
-  printf("Localtime at start %s and at end=%s",strt, strtend); 
-  fprintf(ficlog,"Localtime at start %s and at end=%s",strt, strtend); 
+  strcpy(strtend,asctime(&tm));
+  printf("Localtime at start %s\nLocaltime at end   %s",strstart, strtend); 
+  fprintf(ficlog,"Localtime at start %s\nLocal time at end   %s",strstart, strtend); 
   /*  printf("Total time used %d Sec\n", asc_time(end_time.tv_sec -start_time.tv_sec);*/
 
   printf("Total time was %d Sec. %d uSec.\n", end_time.tv_sec -start_time.tv_sec, end_time.tv_usec -start_time.tv_usec);
   fprintf(ficlog,"Total time was %d Sec. %d uSec.\n", end_time.tv_sec -start_time.tv_sec, end_time.tv_usec -start_time.tv_usec);
   /*  printf("Total time was %d uSec.\n", total_usecs);*/
 /*   if(fileappend(fichtm,optionfilehtm)){ */
-  fprintf(fichtm,"<br>Localtime at start %s and at end=%s<br>",strt, strtend);
+  fprintf(fichtm,"<br>Local time at start %s<br>Local time at end   %s<br>",strstart, strtend);
   fclose(fichtm);
+  fclose(ficgp);
   /*------ End -----------*/
 
   end:
 #ifdef windows
   /* chdir(pathcd);*/
 #endif 
+  chdir(path);
  /*system("wgnuplot graph.plt");*/
  /*system("../gp37mgw/wgnuplot graph.plt");*/
  /*system("cd ../gp37mgw");*/
@@ -4887,3 +5068,4 @@ ageminpar, agemax, s[lastpass][imx], agev[lastpass][imx], nlstate, imx, mint[las
 }
 
 
+