]> henry.ined.fr Git - .git/commitdiff
Summary: Fixing data parameter line
authorN. Brouard <brouard@ined.fr>
Wed, 8 Mar 2017 07:13:00 +0000 (07:13 +0000)
committerN. Brouard <brouard@ined.fr>
Wed, 8 Mar 2017 07:13:00 +0000 (07:13 +0000)
src/imach.c

index f67de2a4fddb883b65c30010030514702ac28715..2520bd6a4832220c5ccf5c7d354cb889cd5d4924 100644 (file)
@@ -1,6 +1,9 @@
 /* $Id$
   $State$
   $Log$
+  Revision 1.253  2016/12/15 11:59:41  brouard
+  Summary: 0.99 in progress
+
   Revision 1.252  2016/09/15 21:15:37  brouard
   *** empty log message ***
 
@@ -11111,68 +11114,127 @@ Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpa
     fprintf(ficparo,"agemin=%.0f agemax=%.0f bage=%.0f fage=%.0f estepm=%d, ftolpl=%e\n",ageminpar,agemaxpar,bage,fage, estepm, ftolpl);
                
     /* Other stuffs, more or less useful */    
-    while((c=getc(ficpar))=='#' && c!= EOF){
-      ungetc(c,ficpar);
-      fgets(line, MAXLINE, ficpar);
-      fputs(line,stdout);
-      fputs(line,ficparo);
+    while(fgets(line, MAXLINE, ficpar)) {
+      /* If line starts with a # it is a comment */
+      if (line[0] == '#') {
+       numlinepar++;
+       fputs(line,stdout);
+       fputs(line,ficparo);
+       fputs(line,ficlog);
+       continue;
+      }else
+       break;
     }
-    ungetc(c,ficpar);
-    
-    fscanf(ficpar,"begin-prev-date=%lf/%lf/%lf end-prev-date=%lf/%lf/%lf mov_average=%d\n",&jprev1, &mprev1,&anprev1,&jprev2, &mprev2,&anprev2,&mobilav);
-    fprintf(ficparo,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
-    fprintf(ficres,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
-    printf("begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
-    fprintf(ficlog,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
-    
-    while((c=getc(ficpar))=='#' && c!= EOF){
-      ungetc(c,ficpar);
-      fgets(line, MAXLINE, ficpar);
-      fputs(line,stdout);
-      fputs(line,ficparo);
+
+    if((num_filled=sscanf(line,"begin-prev-date=%lf/%lf/%lf end-prev-date=%lf/%lf/%lf mov_average=%d\n",&jprev1, &mprev1,&anprev1,&jprev2, &mprev2,&anprev2,&mobilav)) !=EOF){
+      
+      if (num_filled != 7) {
+       printf("Error: Not 7 (data)parameters in line but %d, for example:begin-prev-date=1/1/1990 end-prev-date=1/6/2004  mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
+       fprintf(ficlog,"Error: Not 7 (data)parameters in line but %d, for example:begin-prev-date=1/1/1990 end-prev-date=1/6/2004  mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
+       goto end;
+      }
+    /* fscanf(ficpar,"begin-prev-date=%lf/%lf/%lf end-prev-date=%lf/%lf/%lf mov_average=%d\n",&jprev1, &mprev1,&anprev1,&jprev2, &mprev2,&anprev2,&mobilav); */
+      printf("begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
+      fprintf(ficparo,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
+      fprintf(ficres,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
+      printf("begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
+      fprintf(ficlog,"begin-prev-date=%.lf/%.lf/%.lf end-prev-date=%.lf/%.lf/%.lf mov_average=%d\n",jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,mobilav);
+    }
+
+    while(fgets(line, MAXLINE, ficpar)) {
+      /* If line starts with a # it is a comment */
+      if (line[0] == '#') {
+       numlinepar++;
+       fputs(line,stdout);
+       fputs(line,ficparo);
+       fputs(line,ficlog);
+       continue;
+      }else
+       break;
     }
-    ungetc(c,ficpar);
     
     
     dateprev1=anprev1+(mprev1-1)/12.+(jprev1-1)/365.;
     dateprev2=anprev2+(mprev2-1)/12.+(jprev2-1)/365.;
     
-    fscanf(ficpar,"pop_based=%d\n",&popbased);
-    fprintf(ficlog,"pop_based=%d\n",popbased);
-    fprintf(ficparo,"pop_based=%d\n",popbased);   
-    fprintf(ficres,"pop_based=%d\n",popbased);   
-    
-    while((c=getc(ficpar))=='#' && c!= EOF){
-      ungetc(c,ficpar);
-      fgets(line, MAXLINE, ficpar);
-      fputs(line,stdout);
-      fputs(line,ficres);
-      fputs(line,ficparo);
+    if((num_filled=sscanf(line,"pop_based=%d\n",&popbased)) !=EOF){
+      if (num_filled != 1) {
+       printf("Error: Not 1 (data)parameters in line but %d, for example:pop_based=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
+       fprintf(ficlog,"Error: Not 1 (data)parameters in line but %d, for example: pop_based=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
+       goto end;
+      }
+      printf("pop_based=%d\n",popbased);
+      fprintf(ficlog,"pop_based=%d\n",popbased);
+      fprintf(ficparo,"pop_based=%d\n",popbased);   
+      fprintf(ficres,"pop_based=%d\n",popbased);   
     }
-    ungetc(c,ficpar);
+     
+    while(fgets(line, MAXLINE, ficpar)) {
+      /* If line starts with a # it is a comment */
+      if (line[0] == '#') {
+       numlinepar++;
+       fputs(line,stdout);
+       fputs(line,ficparo);
+       fputs(line,ficlog);
+       continue;
+      }else
+       break;
+    }
+   /* while((c=getc(ficpar))=='#' && c!= EOF){ */
+   /*    ungetc(c,ficpar); */
+   /*    fgets(line, MAXLINE, ficpar); */
+   /*    fputs(line,stdout); */
+   /*    fputs(line,ficres); */
+   /*    fputs(line,ficparo); */
+   /*  } */
+   /*  ungetc(c,ficpar); */
     
-    fscanf(ficpar,"prevforecast=%d starting-proj-date=%lf/%lf/%lf final-proj-date=%lf/%lf/%lf mobil_average=%d\n",&prevfcast,&jproj1,&mproj1,&anproj1,&jproj2,&mproj2,&anproj2,&mobilavproj);
-    fprintf(ficparo,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);
-    printf("prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);
-    fprintf(ficlog,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);
-    fprintf(ficres,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);
+    /* fscanf(ficpar,"prevforecast=%d starting-proj-date=%lf/%lf/%lf final-proj-date=%lf/%lf/%lf mobil_average=%d\n",&prevfcast,&jproj1,&mproj1,&anproj1,&jproj2,&mproj2,&anproj2,&mobilavproj); */
+    if((num_filled=sscanf(line,"prevforecast=%d starting-proj-date=%lf/%lf/%lf final-proj-date=%lf/%lf/%lf mobil_average=%d\n",&prevfcast,&jproj1,&mproj1,&anproj1,&jproj2,&mproj2,&anproj2,&mobilavproj)) !=EOF){
+      if (num_filled != 8) {
+       printf("Error: Not 8 (data)parameters in line but %d, for example:prevforecast=1 starting-proj-date=1/1/1990 final-proj-date=1/1/2000 mobil_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
+       fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:prevforecast=1 starting-proj-date=1/1/1990 final-proj-date=1/1/2000 mov_average=0\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
+       goto end;
+      }
+     fprintf(ficparo,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);
+     printf("prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);
+     fprintf(ficlog,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);
+     fprintf(ficres,"prevforecast=%d starting-proj-date=%.lf/%.lf/%.lf final-proj-date=%.lf/%.lf/%.lf mobil_average=%d\n",prevfcast,jproj1,mproj1,anproj1,jproj2,mproj2,anproj2,mobilavproj);
     /* day and month of proj2 are not used but only year anproj2.*/
-    
-    while((c=getc(ficpar))=='#' && c!= EOF){
-      ungetc(c,ficpar);
-      fgets(line, MAXLINE, ficpar);
-      fputs(line,stdout);
-      fputs(line,ficparo);
-      fputs(line,ficres);
     }
-    ungetc(c,ficpar);
+     while(fgets(line, MAXLINE, ficpar)) {
+      /* If line starts with a # it is a comment */
+      if (line[0] == '#') {
+       numlinepar++;
+       fputs(line,stdout);
+       fputs(line,ficparo);
+       fputs(line,ficlog);
+       continue;
+      }else
+       break;
+    }
+    /* while((c=getc(ficpar))=='#' && c!= EOF){ */
+    /*   ungetc(c,ficpar); */
+    /*   fgets(line, MAXLINE, ficpar); */
+    /*   fputs(line,stdout); */
+    /*   fputs(line,ficparo); */
+    /*   fputs(line,ficres); */
+    /* } */
+    /* ungetc(c,ficpar); */
     
     fscanf(ficpar,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj);
-    fprintf(ficparo,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);
-    fprintf(ficlog,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);
-    fprintf(ficres,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);
+    if((num_filled=sscanf(line,"backcast=%d starting-back-date=%lf/%lf/%lf final-back-date=%lf/%lf/%lf mobil_average=%d\n",&backcast,&jback1,&mback1,&anback1,&jback2,&mback2,&anback2,&mobilavproj)) !=EOF){
+      if (num_filled != 8) {
+       printf("Error: Not 8 (data)parameters in line but %d, for example:backcast=1 starting-back-date=1/1/1990 finloal-back-date=1/1/1970 mobil_average=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
+       fprintf(ficlog,"Error: Not 8 (data)parameters in line but %d, for example:backcast=1 starting-back-date=1/1/1990 finloal-back-date=1/1/1970 mobil_average=1\n, your line=%s . Probably you are running an older format.\n",num_filled,line);
+       goto end;
+      }
+      printf("backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);
+      fprintf(ficparo,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);
+      fprintf(ficlog,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);
+      fprintf(ficres,"backcast=%d starting-back-date=%.lf/%.lf/%.lf final-back-date=%.lf/%.lf/%.lf mobil_average=%d\n",backcast,jback1,mback1,anback1,jback2,mback2,anback2,mobilavproj);
     /* day and month of proj2 are not used but only year anproj2.*/
-    
+    }
     /* Results */
     nresult=0;
     while(fgets(line, MAXLINE, ficpar)) {