Diff for /imach/src/imach.c between versions 1.306 and 1.308

version 1.306, 2021/02/20 15:44:02 version 1.308, 2021/03/31 13:11:57
Line 1 Line 1
 /* $Id$  /* $Id$
   $State$    $State$
   $Log$    $Log$
     Revision 1.308  2021/03/31 13:11:57  brouard
     Summary: Version 0.99r23
   
   
     * imach.c (Module): Still bugs in the result loop. Thank to Holly Benett
   
     Revision 1.307  2021/03/08 18:11:32  brouard
     Summary: 0.99r22 fixed bug on result:
   
   Revision 1.306  2021/02/20 15:44:02  brouard    Revision 1.306  2021/02/20 15:44:02  brouard
   Summary: Version 0.99r21    Summary: Version 0.99r21
   
Line 1145  typedef struct { Line 1154  typedef struct {
 /* $State$ */  /* $State$ */
 #include "version.h"  #include "version.h"
 char version[]=__IMACH_VERSION__;  char version[]=__IMACH_VERSION__;
 char copyright[]="Feb 2021,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015-2020, INED 2000-2021";  char copyright[]="March 2021,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015-2020, Nihon University 2021, INED 2000-2021";
 char fullversion[]="$Revision$ $Date$";   char fullversion[]="$Revision$ $Date$"; 
 char strstart[80];  char strstart[80];
 char optionfilext[10], optionfilefiname[FILENAMELENGTH];  char optionfilext[10], optionfilefiname[FILENAMELENGTH];
Line 9591  int decoderesult ( char resultline[], in Line 9600  int decoderesult ( char resultline[], in
   char stra[80], strb[80], strc[80], strd[80],stre[80];    char stra[80], strb[80], strc[80], strd[80],stre[80];
   
   removefirstspace(&resultline);    removefirstspace(&resultline);
   printf("decoderesult:%s\n",resultline);  
   
   if (strstr(resultline,"v") !=0){    if (strstr(resultline,"v") !=0){
     printf("Error. 'v' must be in upper case 'V' result: %s ",resultline);      printf("Error. 'v' must be in upper case 'V' result: %s ",resultline);
Line 9606  int decoderesult ( char resultline[], in Line 9614  int decoderesult ( char resultline[], in
     TKresult[nres]=0; /* Combination for the nresult and the model */      TKresult[nres]=0; /* Combination for the nresult and the model */
     return (0);      return (0);
   }    }
       
   if( j != cptcovs ){ /* Be careful if a variable is in a product but not single */    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);      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);      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);
Line 12417  Please run with mle=-1 to get a correct Line 12424  Please run with mle=-1 to get a correct
     }      }
             
     /* Results */      /* Results */
       endishere=0;
     nresult=0;      nresult=0;
       parameterline=0;
     do{      do{
       if(!fgets(line, MAXLINE, ficpar)){        if(!fgets(line, MAXLINE, ficpar)){
         endishere=1;          endishere=1;
         parameterline=14;          parameterline=15;
       }else if (line[0] == '#') {        }else if (line[0] == '#') {
         /* If line starts with a # it is a comment */          /* If line starts with a # it is a comment */
         numlinepar++;          numlinepar++;
Line 12434  Please run with mle=-1 to get a correct Line 12443  Please run with mle=-1 to get a correct
         parameterline=11;          parameterline=11;
       else if(sscanf(line,"prevbackcast=%[^\n]\n",modeltemp))        else if(sscanf(line,"prevbackcast=%[^\n]\n",modeltemp))
         parameterline=12;          parameterline=12;
       else if(sscanf(line,"result:%[^\n]\n",modeltemp))        else if(sscanf(line,"result:%[^\n]\n",modeltemp)){
         parameterline=13;          parameterline=13;
         }
       else{        else{
         parameterline=14;          parameterline=14;
       }        }
       switch (parameterline){         switch (parameterline){ /* =0 only if only comments */
       case 11:        case 11:
         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 && (num_filled == 8)){          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 && (num_filled == 8)){
                   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);                    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);
Line 12487  Please run with mle=-1 to get a correct Line 12497  Please run with mle=-1 to get a correct
         }          }
         break;          break;
       case 13:        case 13:
         if((num_filled=sscanf(line,"result:%[^\n]\n",resultline)) !=EOF){          num_filled=sscanf(line,"result:%[^\n]\n",resultline);
           if (num_filled == 0){          nresult++; /* Sum of resultlines */
             resultline[0]='\0';          printf("Result %d: result:%s\n",nresult, resultline);
             printf("Warning %d: no result line! It should be at minimum 'result: V2=0 V1=1 or result:.\n%s\n", num_filled, line);          if(nresult > MAXRESULTLINES){
             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);            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);
             break;            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);
           } else if (num_filled != 1){            goto end;
             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 */  
         }          }
           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;
         case 15:
           printf("End of resultlines.\n");
           fprintf(ficlog,"End of resultlines.\n");
           break;
         default: /* parameterline =0 */
           nresult=1;
           decoderesult(".",nresult ); /* No covariate */
       } /* End switch parameterline */        } /* End switch parameterline */
     }while(endishere==0); /* End do */      }while(endishere==0); /* End do */
           

Removed from v.1.306  
changed lines
  Added in v.1.308


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>