]> henry.ined.fr Git - .git/commitdiff
Summary: 0.99r22 fixed bug on result:
authorN. Brouard <brouard@ined.fr>
Mon, 8 Mar 2021 18:11:32 +0000 (18:11 +0000)
committerN. Brouard <brouard@ined.fr>
Mon, 8 Mar 2021 18:11:32 +0000 (18:11 +0000)
src/imach.c

index ded84846c627843957177f7d9e8aca52dac0c7c6..b97664aa1b3835983f852a3d5852aa63753a7d2e 100644 (file)
@@ -1,6 +1,12 @@
 /* $Id$
   $State$
   $Log$
+  Revision 1.306  2021/02/20 15:44:02  brouard
+  Summary: Version 0.99r21
+
+  * imach.c (Module): Fix bug on quitting after result lines!
+  (Module): Version 0.99r21
+
   Revision 1.305  2021/02/20 15:28:30  brouard
   * imach.c (Module): Fix bug on quitting after result lines!
 
@@ -9585,7 +9591,6 @@ int decoderesult ( char resultline[], int nres)
   char stra[80], strb[80], strc[80], strd[80],stre[80];
 
   removefirstspace(&resultline);
-  printf("decoderesult:%s\n",resultline);
 
   if (strstr(resultline,"v") !=0){
     printf("Error. 'v' must be in upper case 'V' result: %s ",resultline);
@@ -9600,7 +9605,6 @@ int decoderesult ( char resultline[], int nres)
     TKresult[nres]=0; /* Combination for the nresult and the model */
     return (0);
   }
-    
   if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */
     printf("ERROR: the number of variable in the resultline, %d, differs from the number of variable used in the model line, %d.\n",j, cptcovs);
     fprintf(ficlog,"ERROR: the number of variable in the resultline, %d, differs from the number of variable used in the model line, %d.\n",j, cptcovs);
@@ -12411,11 +12415,11 @@ Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpa
     }
      
     /* Results */
+    endishere=0;
     nresult=0;
     do{
       if(!fgets(line, MAXLINE, ficpar)){
        endishere=1;
-       parameterline=14;
       }else if (line[0] == '#') {
        /* If line starts with a # it is a comment */
        numlinepar++;
@@ -12428,8 +12432,9 @@ Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpa
        parameterline=11;
       else if(sscanf(line,"prevbackcast=%[^\n]\n",modeltemp))
        parameterline=12;
-      else if(sscanf(line,"result:%[^\n]\n",modeltemp))
+      else if(sscanf(line,"result:%[^\n]\n",modeltemp)){
        parameterline=13;
+      }
       else{
        parameterline=14;
       }
@@ -12481,42 +12486,33 @@ Please run with mle=-1 to get a correct covariance matrix.\n",ageminpar,agemaxpa
        }
        break;
       case 13:
-       if((num_filled=sscanf(line,"result:%[^\n]\n",resultline)) !=EOF){
-         if (num_filled == 0){
-           resultline[0]='\0';
-           printf("Warning %d: no result line! It should be at minimum 'result: V2=0 V1=1 or result:.\n%s\n", num_filled, line);
-           fprintf(ficlog,"Warning %d: no result line! It should be at minimum 'result: V2=0 V1=1 or result:.\n%s\n", num_filled, line);
-           break;
-         } else if (num_filled != 1){
-           printf("ERROR %d: result line! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",num_filled, line);
-           fprintf(ficlog,"ERROR %d: result line! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",num_filled, line);
-         }
-         nresult++; /* Sum of resultlines */
-         printf("Result %d: result=%s\n",nresult, resultline);
-         if(nresult > MAXRESULTLINES){
-           printf("ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\n",MAXRESULTLINES,nresult);
-           fprintf(ficlog,"ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\n",MAXRESULTLINES,nresult);
-           goto end;
-         }
-         decoderesult(resultline, nresult); /* Fills TKresult[nresult] combination and Tresult[nresult][k4+1] combination values */
-         fprintf(ficparo,"result: %s\n",resultline);
-         fprintf(ficres,"result: %s\n",resultline);
-         fprintf(ficlog,"result: %s\n",resultline);
-         break;
-       case 14:
-         printf("Error: Unknown command '%s'\n",line);
-         fprintf(ficlog,"Error: Unknown command '%s'\n",line);
-         if(ncovmodel >=2 && nresult==0 ){
-           printf("ERROR: no result lines! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",line);
-           fprintf(ficlog,"ERROR: no result lines! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",line);
-         }
-         /* goto end; */
-         break;
-       default:
-         nresult=1;
-         decoderesult(".",nresult ); /* No covariate */
+       num_filled=sscanf(line,"result:%[^\n]\n",resultline);
+       nresult++; /* Sum of resultlines */
+       printf("Result %d: result:%s\n",nresult, resultline);
+       if(nresult > MAXRESULTLINES){
+         printf("ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\nYou can use the 'r' parameter file '%s' which uses option mle=0 to get other results. ",MAXRESULTLINES,nresult,rfileres);
+         fprintf(ficlog,"ERROR: Current version of IMaCh limits the number of resultlines to %d, you used %d\nYou can use the 'r' parameter file '%s' which uses option mle=0 to get other results. ",MAXRESULTLINES,nresult,rfileres);
+         goto end;
+       }
+       decoderesult(resultline, nresult); /* Fills TKresult[nresult] combination and Tresult[nresult][k4+1] combination values */
+       fprintf(ficparo,"result: %s\n",resultline);
+       fprintf(ficres,"result: %s\n",resultline);
+       fprintf(ficlog,"result: %s\n",resultline);
+       break;
+      case 14:
+       printf("Error: Unknown command '%s'\n",line);
+       fprintf(ficlog,"Error: Unknown command '%s'\n",line);
+       if(ncovmodel >=2 && nresult==0 ){
+         printf("ERROR: no result lines! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",line);
+         fprintf(ficlog,"ERROR: no result lines! It should be at minimum 'result: V2=0 V1=1 or result:.' %s\n",line);
        }
+       /* goto end; */
+       break;
+      default:
+       nresult=1;
+       decoderesult(".",nresult ); /* No covariate */
       } /* End switch parameterline */
+      parameterline=0;
     }while(endishere==0); /* End do */
     
     /* freqsummary(fileres, agemin, agemax, s, agev, nlstate, imx,Tvaraff,nbcode, ncodemax,mint,anint); */