version 1.164, 2014/12/16 10:52:11
|
version 1.178, 2015/01/04 09:35:48
|
Line 1
|
Line 1
|
/* $Id$ |
/* $Id$ |
$State$ |
$State$ |
$Log$ |
$Log$ |
|
Revision 1.178 2015/01/04 09:35:48 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.177 2015/01/03 18:40:56 brouard |
|
Summary: Still testing ilc32 on OSX |
|
|
|
Revision 1.176 2015/01/03 16:45:04 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.175 2015/01/03 16:33:42 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.174 2015/01/03 16:15:49 brouard |
|
Summary: Still in cross-compilation |
|
|
|
Revision 1.173 2015/01/03 12:06:26 brouard |
|
Summary: trying to detect cross-compilation |
|
|
|
Revision 1.172 2014/12/27 12:07:47 brouard |
|
Summary: Back from Visual Studio and Intel, options for compiling for Windows XP |
|
|
|
Revision 1.171 2014/12/23 13:26:59 brouard |
|
Summary: Back from Visual C |
|
|
|
Still problem with utsname.h on Windows |
|
|
|
Revision 1.170 2014/12/23 11:17:12 brouard |
|
Summary: Cleaning some \%% back to %% |
|
|
|
The escape was mandatory for a specific compiler (which one?), but too many warnings. |
|
|
|
Revision 1.169 2014/12/22 23:08:31 brouard |
|
Summary: 0.98p |
|
|
|
Outputs some informations on compiler used, OS etc. Testing on different platforms. |
|
|
|
Revision 1.168 2014/12/22 15:17:42 brouard |
|
Summary: update |
|
|
|
Revision 1.167 2014/12/22 13:50:56 brouard |
|
Summary: Testing uname and compiler version and if compiled 32 or 64 |
|
|
|
Testing on Linux 64 |
|
|
|
Revision 1.166 2014/12/22 11:40:47 brouard |
|
*** empty log message *** |
|
|
|
Revision 1.165 2014/12/16 11:20:36 brouard |
|
Summary: After compiling on Visual C |
|
|
|
* imach.c (Module): Merging 1.61 to 1.162 |
|
|
Revision 1.164 2014/12/16 10:52:11 brouard |
Revision 1.164 2014/12/16 10:52:11 brouard |
Summary: Merging with Visual C after suppressing some warnings for unused variables. Also fixing Saito's bug 0.98Xn |
Summary: Merging with Visual C after suppressing some warnings for unused variables. Also fixing Saito's bug 0.98Xn |
|
|
Line 497
|
Line 549
|
end |
end |
*/ |
*/ |
|
|
|
#define POWELL /* Instead of NLOPT */ |
|
|
|
|
|
|
#include <math.h> |
#include <math.h> |
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
Line 507
|
Line 558
|
|
|
#ifdef _WIN32 |
#ifdef _WIN32 |
#include <io.h> |
#include <io.h> |
|
#include <windows.h> |
|
#include <tchar.h> |
#else |
#else |
#include <unistd.h> |
#include <unistd.h> |
#endif |
#endif |
|
|
#include <limits.h> |
#include <limits.h> |
#include <sys/types.h> |
#include <sys/types.h> |
|
|
|
#if defined(__GNUC__) |
|
#include <sys/utsname.h> /* Doesn't work on Windows */ |
|
#endif |
|
|
#include <sys/stat.h> |
#include <sys/stat.h> |
#include <errno.h> |
#include <errno.h> |
/* extern int errno; */ |
/* extern int errno; */ |
Line 531
|
Line 589
|
#include <gsl/gsl_multimin.h> |
#include <gsl/gsl_multimin.h> |
#endif |
#endif |
|
|
|
|
#ifdef NLOPT |
#ifdef NLOPT |
#include <nlopt.h> |
#include <nlopt.h> |
typedef struct { |
typedef struct { |
Line 576 typedef struct {
|
Line 635 typedef struct {
|
/* $Id$ */ |
/* $Id$ */ |
/* $State$ */ |
/* $State$ */ |
|
|
char version[]="Imach version 0.99, September 2014,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121)"; |
char version[]="Imach version 0.98p, December 2014,INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121), Intel Software 2015"; |
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 691 static double maxarg1,maxarg2;
|
Line 750 static double maxarg1,maxarg2;
|
|
|
#define SIGN(a,b) ((b)>0.0 ? fabs(a) : -fabs(a)) |
#define SIGN(a,b) ((b)>0.0 ? fabs(a) : -fabs(a)) |
#define rint(a) floor(a+0.5) |
#define rint(a) floor(a+0.5) |
|
/* http://www.thphys.uni-heidelberg.de/~robbers/cmbeasy/doc/html/myutils_8h-source.html */ |
|
/* #define mytinydouble 1.0e-16 */ |
|
/* #define DEQUAL(a,b) (fabs((a)-(b))<mytinydouble) */ |
|
/* http://www.thphys.uni-heidelberg.de/~robbers/cmbeasy/doc/html/mynrutils_8h-source.html */ |
|
/* static double dsqrarg; */ |
|
/* #define DSQR(a) (DEQUAL((dsqrarg=(a)),0.0) ? 0.0 : dsqrarg*dsqrarg) */ |
static double sqrarg; |
static double sqrarg; |
#define SQR(a) ((sqrarg=(a)) == 0.0 ? 0.0 :sqrarg*sqrarg) |
#define SQR(a) ((sqrarg=(a)) == 0.0 ? 0.0 :sqrarg*sqrarg) |
#define SWAP(a,b) {temp=(a);(a)=(b);(b)=temp;} |
#define SWAP(a,b) {temp=(a);(a)=(b);(b)=temp;} |
Line 1483 void powell(double p[], double **xi, int
|
Line 1547 void powell(double p[], double **xi, int
|
xi[j][n]=xit[j]; /* and nth direction by the extrapolated */ |
xi[j][n]=xit[j]; /* and nth direction by the extrapolated */ |
} |
} |
printf("Gaining to use average direction of P0 P%d instead of biggest increase direction %d :\n",n,ibig); |
printf("Gaining to use average direction of P0 P%d instead of biggest increase direction %d :\n",n,ibig); |
fprintf(ficlog,"Gaining to use average direction of P0 P%d instead of biggest increase direction :\n",n,ibig); |
fprintf(ficlog,"Gaining to use average direction of P0 P%d instead of biggest increase direction %d :\n",n,ibig); |
|
|
#ifdef DEBUG |
#ifdef DEBUG |
printf("Direction changed last moved %d in place of ibig=%d, new last is the average:\n",n,ibig); |
printf("Direction changed last moved %d in place of ibig=%d, new last is the average:\n",n,ibig); |
Line 1506 double **prevalim(double **prlim, int nl
|
Line 1570 double **prevalim(double **prlim, int nl
|
{ |
{ |
/* Computes the prevalence limit in each live state at age x by left multiplying the unit |
/* Computes the prevalence limit in each live state at age x by left multiplying the unit |
matrix by transitions matrix until convergence is reached */ |
matrix by transitions matrix until convergence is reached */ |
|
|
int i, ii,j,k; |
int i, ii,j,k; |
double min, max, maxmin, maxmax,sumnew=0.; |
double min, max, maxmin, maxmax,sumnew=0.; |
/* double **matprod2(); */ /* test */ |
/* double **matprod2(); */ /* test */ |
double **out, cov[NCOVMAX+1], **pmij(); |
double **out, cov[NCOVMAX+1], **pmij(); |
double **newm; |
double **newm; |
double agefin, delaymax=50 ; /* Max number of years to converge */ |
double agefin, delaymax=50 ; /* Max number of years to converge */ |
|
|
for (ii=1;ii<=nlstate+ndeath;ii++) |
for (ii=1;ii<=nlstate+ndeath;ii++) |
for (j=1;j<=nlstate+ndeath;j++){ |
for (j=1;j<=nlstate+ndeath;j++){ |
oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
oldm[ii][j]=(ii==j ? 1.0 : 0.0); |
} |
} |
|
|
cov[1]=1.; |
cov[1]=1.; |
|
|
/* Even if hstepm = 1, at least one multiplication by the unit matrix */ |
/* Even if hstepm = 1, at least one multiplication by the unit matrix */ |
for(agefin=age-stepm/YEARM; agefin>=age-delaymax; agefin=agefin-stepm/YEARM){ |
for(agefin=age-stepm/YEARM; agefin>=age-delaymax; agefin=agefin-stepm/YEARM){ |
newm=savm; |
newm=savm; |
/* Covariates have to be included here again */ |
/* Covariates have to be included here again */ |
Line 1558 double **prevalim(double **prlim, int nl
|
Line 1622 double **prevalim(double **prlim, int nl
|
} |
} |
maxmin=max-min; |
maxmin=max-min; |
maxmax=FMAX(maxmax,maxmin); |
maxmax=FMAX(maxmax,maxmin); |
} |
} /* j loop */ |
if(maxmax < ftolpl){ |
if(maxmax < ftolpl){ |
return prlim; |
return prlim; |
} |
} |
} |
} /* age loop */ |
|
return prlim; /* should not reach here */ |
} |
} |
|
|
/*************** transition probabilities ***************/ |
/*************** transition probabilities ***************/ |
Line 2147 void likelione(FILE *ficres,double p[],
|
Line 2212 void likelione(FILE *ficres,double p[],
|
|
|
void mlikeli(FILE *ficres,double p[], int npar, int ncovmodel, int nlstate, double ftol, double (*func)(double [])) |
void mlikeli(FILE *ficres,double p[], int npar, int ncovmodel, int nlstate, double ftol, double (*func)(double [])) |
{ |
{ |
int i,j, iter; |
int i,j, iter=0; |
double **xi; |
double **xi; |
double fret; |
double fret; |
double fretone; /* Only one call to likelihood */ |
double fretone; /* Only one call to likelihood */ |
Line 2511 void freqsummary(char fileres[], int ia
|
Line 2576 void freqsummary(char fileres[], int ia
|
|
|
first=1; |
first=1; |
|
|
/* for(k1=1; k1<=j ; k1++){ /* Loop on covariates */ |
/* for(k1=1; k1<=j ; k1++){ */ /* Loop on covariates */ |
/* for(i1=1; i1<=ncodemax[k1];i1++){ /* Now it is 2 */ |
/* for(i1=1; i1<=ncodemax[k1];i1++){ */ /* Now it is 2 */ |
/* j1++; |
/* j1++; */ |
*/ |
|
for (j1 = 1; j1 <= (int) pow(2,cptcoveff); j1++){ |
for (j1 = 1; j1 <= (int) pow(2,cptcoveff); j1++){ |
/*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); |
/*printf("cptcoveff=%d Tvaraff=%d", cptcoveff,Tvaraff[1]); |
scanf("%d", i);*/ |
scanf("%d", i);*/ |
Line 2891 void tricode(int *Tvar, int **nbcode, in
|
Line 2955 void tricode(int *Tvar, int **nbcode, in
|
{ |
{ |
/**< Uses cptcovn+2*cptcovprod as the number of covariates */ |
/**< Uses cptcovn+2*cptcovprod as the number of covariates */ |
/* Tvar[i]=atoi(stre); find 'n' in Vn and stores in Tvar. If model=V2+V1 Tvar[1]=2 and Tvar[2]=1 |
/* Tvar[i]=atoi(stre); find 'n' in Vn and stores in Tvar. If model=V2+V1 Tvar[1]=2 and Tvar[2]=1 |
/* Boring subroutine which should only output nbcode[Tvar[j]][k] |
* Boring subroutine which should only output nbcode[Tvar[j]][k] |
* Tvar[5] in V2+V1+V3*age+V2*V4 is 2 (V2) |
* Tvar[5] in V2+V1+V3*age+V2*V4 is 2 (V2) |
/* nbcode[Tvar[j]][1]= |
* nbcode[Tvar[j]][1]= |
*/ |
*/ |
|
|
int ij=1, k=0, j=0, i=0, maxncov=NCOVMAX; |
int ij=1, k=0, j=0, i=0, maxncov=NCOVMAX; |
Line 3321 void varevsij(char optionfilefiname[], d
|
Line 3385 void varevsij(char optionfilefiname[], d
|
/* Variance of health expectancies */ |
/* Variance of health expectancies */ |
/* double **prevalim(double **prlim, int nlstate, double *xp, double age, double **oldm, double ** savm,double ftolpl);*/ |
/* double **prevalim(double **prlim, int nlstate, double *xp, double age, double **oldm, double ** savm,double ftolpl);*/ |
/* double **newm;*/ |
/* double **newm;*/ |
|
/* int movingaverage(double ***probs, double bage,double fage, double ***mobaverage, int mobilav)*/ |
|
|
|
int movingaverage(); |
double **dnewm,**doldm; |
double **dnewm,**doldm; |
double **dnewmp,**doldmp; |
double **dnewmp,**doldmp; |
int i, j, nhstepm, hstepm, h, nstepm ; |
int i, j, nhstepm, hstepm, h, nstepm ; |
Line 3598 void varevsij(char optionfilefiname[], d
|
Line 3665 void varevsij(char optionfilefiname[], d
|
/* 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) 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 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 lt 1 ",subdirf(fileresprobmorprev)); |
fprintf(ficgp,"\n plot \"%s\" u 1:($3) not w l lt 1 ",subdirf(fileresprobmorprev)); |
fprintf(ficgp,"\n replot \"%s\" u 1:(($3+1.96*$4)) t \"95\%% interval\" w l lt 2 ",subdirf(fileresprobmorprev)); |
fprintf(ficgp,"\n replot \"%s\" u 1:(($3+1.96*$4)) t \"95%% interval\" w l lt 2 ",subdirf(fileresprobmorprev)); |
fprintf(ficgp,"\n replot \"%s\" u 1:(($3-1.96*$4)) not w l lt 2 ",subdirf(fileresprobmorprev)); |
fprintf(ficgp,"\n replot \"%s\" u 1:(($3-1.96*$4)) not w l lt 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> 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. <br> <img src=\"%s%s.png\"> <br>\n", estepm,subdirf3(optionfilefiname,"varmuptjgr",digitp),digit); |
Line 4019 To be simple, these graphs help to under
|
Line 4086 To be simple, these graphs help to under
|
} /* k12 */ |
} /* k12 */ |
} /*l1 */ |
} /*l1 */ |
}/* k1 */ |
}/* k1 */ |
/* } /* loop covariates */ |
/* } */ /* loop covariates */ |
} |
} |
free_ma3x(varpij,1,nlstate,1,nlstate+ndeath,(int) bage, (int)fage); |
free_ma3x(varpij,1,nlstate,1,nlstate+ndeath,(int) bage, (int)fage); |
free_matrix(mu,1,(nlstate+ndeath)*(nlstate+ndeath),(int) bage, (int)fage); |
free_matrix(mu,1,(nlstate+ndeath)*(nlstate+ndeath),(int) bage, (int)fage); |
Line 4087 fprintf(fichtm," \n<ul><li><b>Graphs</b>
|
Line 4154 fprintf(fichtm," \n<ul><li><b>Graphs</b>
|
<img src=\"%s%d_2.png\">",stepm,subdirf2(optionfilefiname,"pe"),jj1,subdirf2(optionfilefiname,"pe"),jj1,subdirf2(optionfilefiname,"pe"),jj1); |
<img src=\"%s%d_2.png\">",stepm,subdirf2(optionfilefiname,"pe"),jj1,subdirf2(optionfilefiname,"pe"),jj1,subdirf2(optionfilefiname,"pe"),jj1); |
/* Period (stable) prevalence in each health state */ |
/* Period (stable) prevalence in each health state */ |
for(cpt=1; cpt<=nlstate;cpt++){ |
for(cpt=1; cpt<=nlstate;cpt++){ |
fprintf(fichtm,"<br>- Convergence from cross-sectional prevalence in each state (1 to %d) to period (stable) prevalence in specific state %d <a href=\"%s%d_%d.png\">%s%d_%d.png</a><br> \ |
fprintf(fichtm,"<br>- Convergence to period (stable) prevalence in state %d. Or probability to be in state %d being in state (1 to %d) at different ages. <a href=\"%s%d_%d.png\">%s%d_%d.png</a><br> \ |
<img src=\"%s%d_%d.png\">",nlstate, cpt, subdirf2(optionfilefiname,"p"),cpt,jj1,subdirf2(optionfilefiname,"p"),cpt,jj1,subdirf2(optionfilefiname,"p"),cpt,jj1); |
<img src=\"%s%d_%d.png\">", cpt, cpt, nlstate, subdirf2(optionfilefiname,"p"),cpt,jj1,subdirf2(optionfilefiname,"p"),cpt,jj1,subdirf2(optionfilefiname,"p"),cpt,jj1); |
} |
} |
for(cpt=1; cpt<=nlstate;cpt++) { |
for(cpt=1; cpt<=nlstate;cpt++) { |
fprintf(fichtm,"\n<br>- Life expectancy by health state (%d) at initial age and its decomposition into health expectancies in each alive state (1 to %d) : <a href=\"%s%d%d.png\">%s%d%d.png</a> <br> \ |
fprintf(fichtm,"\n<br>- Life expectancy by health state (%d) at initial age and its decomposition into health expectancies in each alive state (1 to %d) : <a href=\"%s%d%d.png\">%s%d%d.png</a> <br> \ |
Line 4196 void printinggnuplot(char fileres[], cha
|
Line 4263 void printinggnuplot(char fileres[], cha
|
fprintf(ficgp,"set xlabel \"Age\" \n\ |
fprintf(ficgp,"set xlabel \"Age\" \n\ |
set ylabel \"Probability\" \n\ |
set ylabel \"Probability\" \n\ |
set ter png small size 320, 240\n\ |
set ter png small size 320, 240\n\ |
plot [%.f:%.f] \"%s\" every :::%d::%d u 1:2 \"\%%lf",ageminpar,fage,subdirf2(fileres,"vpl"),k1-1,k1-1); |
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 ++) { |
for (i=1; i<= nlstate ; i ++) { |
if (i==cpt) fprintf(ficgp," \%%lf (\%%lf)"); |
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
else fprintf(ficgp," \%%*lf (\%%*lf)"); |
else fprintf(ficgp," %%*lf (%%*lf)"); |
} |
} |
fprintf(ficgp,"\" t\"Period (stable) prevalence\" w l lt 0,\"%s\" every :::%d::%d u 1:($2+1.96*$3) \"\%%lf",subdirf2(fileres,"vpl"),k1-1,k1-1); |
fprintf(ficgp,"\" t\"Period (stable) prevalence\" w l lt 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 ++) { |
for (i=1; i<= nlstate ; i ++) { |
if (i==cpt) fprintf(ficgp," \%%lf (\%%lf)"); |
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
else fprintf(ficgp," \%%*lf (\%%*lf)"); |
else fprintf(ficgp," %%*lf (%%*lf)"); |
} |
} |
fprintf(ficgp,"\" t\"95\%% CI\" w l lt 1,\"%s\" every :::%d::%d u 1:($2-1.96*$3) \"\%%lf",subdirf2(fileres,"vpl"),k1-1,k1-1); |
fprintf(ficgp,"\" t\"95%% CI\" w l lt 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 ++) { |
for (i=1; i<= nlstate ; i ++) { |
if (i==cpt) fprintf(ficgp," \%%lf (\%%lf)"); |
if (i==cpt) fprintf(ficgp," %%lf (%%lf)"); |
else fprintf(ficgp," \%%*lf (\%%*lf)"); |
else fprintf(ficgp," %%*lf (%%*lf)"); |
} |
} |
fprintf(ficgp,"\" t\"\" w l lt 1,\"%s\" every :::%d::%d u 1:($%d) t\"Observed prevalence \" w l lt 2",subdirf2(fileres,"p"),k1-1,k1-1,2+4*(cpt-1)); |
fprintf(ficgp,"\" t\"\" w l lt 1,\"%s\" every :::%d::%d u 1:($%d) t\"Observed prevalence \" w l lt 2",subdirf2(fileres,"p"),k1-1,k1-1,2+4*(cpt-1)); |
} |
} |
Line 4223 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
Line 4290 plot [%.f:%.f] \"%s\" every :::%d::%d u
|
|
|
for (i=1; i<= nlstate+1 ; i ++) { |
for (i=1; i<= nlstate+1 ; i ++) { |
k=2*i; |
k=2*i; |
fprintf(ficgp,"\"%s\" every :::%d::%d u 1:2 \"\%%lf",subdirf2(fileres,"t"),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 ++) { |
for (j=1; j<= nlstate+1 ; j ++) { |
if (j==i) fprintf(ficgp," \%%lf (\%%lf)"); |
if (j==i) fprintf(ficgp," %%lf (%%lf)"); |
else fprintf(ficgp," \%%*lf (\%%*lf)"); |
else fprintf(ficgp," %%*lf (%%*lf)"); |
} |
} |
if (i== 1) fprintf(ficgp,"\" t\"TLE\" w l ,"); |
if (i== 1) fprintf(ficgp,"\" t\"TLE\" w l ,"); |
else fprintf(ficgp,"\" t\"LE in state (%d)\" w l ,",i-1); |
else fprintf(ficgp,"\" t\"LE in state (%d)\" w l ,",i-1); |
fprintf(ficgp,"\"%s\" every :::%d::%d u 1:($2-$3*2) \"\%%lf",subdirf2(fileres,"t"),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 ++) { |
for (j=1; j<= nlstate+1 ; j ++) { |
if (j==i) fprintf(ficgp," \%%lf (\%%lf)"); |
if (j==i) fprintf(ficgp," %%lf (%%lf)"); |
else fprintf(ficgp," \%%*lf (\%%*lf)"); |
else fprintf(ficgp," %%*lf (%%*lf)"); |
} |
} |
fprintf(ficgp,"\" t\"\" w l lt 0,"); |
fprintf(ficgp,"\" t\"\" w l lt 0,"); |
fprintf(ficgp,"\"%s\" every :::%d::%d u 1:($2+$3*2) \"\%%lf",subdirf2(fileres,"t"),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 ++) { |
for (j=1; j<= nlstate+1 ; j ++) { |
if (j==i) fprintf(ficgp," \%%lf (\%%lf)"); |
if (j==i) fprintf(ficgp," %%lf (%%lf)"); |
else fprintf(ficgp," \%%*lf (\%%*lf)"); |
else fprintf(ficgp," %%*lf (%%*lf)"); |
} |
} |
if (i== (nlstate+1)) fprintf(ficgp,"\" t\"\" w l lt 0"); |
if (i== (nlstate+1)) fprintf(ficgp,"\" t\"\" w l lt 0"); |
else fprintf(ficgp,"\" t\"\" w l lt 0,"); |
else fprintf(ficgp,"\" t\"\" w l lt 0,"); |
Line 4407 int movingaverage(double ***probs, doubl
|
Line 4474 int movingaverage(double ***probs, doubl
|
|
|
|
|
/************** Forecasting ******************/ |
/************** Forecasting ******************/ |
prevforecast(char fileres[], double anproj1, double mproj1, double jproj1, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double bage, double fage, int firstpass, int lastpass, double anproj2, double p[], int cptcoveff){ |
void prevforecast(char fileres[], double anproj1, double mproj1, double jproj1, double ageminpar, double agemax, double dateprev1, double dateprev2, int mobilav, double bage, double fage, int firstpass, int lastpass, double anproj2, double p[], int cptcoveff){ |
/* proj1, year, month, day of starting projection |
/* proj1, year, month, day of starting projection |
agemin, agemax range of age |
agemin, agemax range of age |
dateprev1 dateprev2 range of dates during which prevalence is computed |
dateprev1 dateprev2 range of dates during which prevalence is computed |
Line 4530 prevforecast(char fileres[], double anpr
|
Line 4597 prevforecast(char fileres[], double anpr
|
} |
} |
|
|
/************** Forecasting *****not tested NB*************/ |
/************** Forecasting *****not tested NB*************/ |
populforecast(char fileres[], double anpyram,double mpyram,double jpyram,double ageminpar, double agemax,double dateprev1, double dateprev2, int mobilav, double agedeb, double fage, int popforecast, char popfile[], double anpyram1,double p[], int i2){ |
void populforecast(char fileres[], double anpyram,double mpyram,double jpyram,double ageminpar, double agemax,double dateprev1, double dateprev2, int mobilav, double agedeb, double fage, int popforecast, char popfile[], double anpyram1,double p[], int i2){ |
|
|
int cpt, stepsize, hstepm, nhstepm, j,k,c, cptcod, i,h; |
int cpt, stepsize, hstepm, nhstepm, j,k,c, cptcod, i,h; |
int *popage; |
int *popage; |
Line 5006 int readdata(char datafile[], int firsto
|
Line 5073 int readdata(char datafile[], int firsto
|
|
|
strcpy(line,stra); |
strcpy(line,stra); |
cutv(stra, strb,line,' '); |
cutv(stra, strb,line,' '); |
if(iout=sscanf(strb,"%d/%d",&month, &year) != 0){ |
if( (iout=sscanf(strb,"%d/%d",&month, &year)) != 0){ |
} |
} |
else if(iout=sscanf(strb,"%s.",dummy) != 0){ |
else if( (iout=sscanf(strb,"%s.",dummy)) != 0){ |
month=99; |
month=99; |
year=9999; |
year=9999; |
}else{ |
}else{ |
Line 5022 int readdata(char datafile[], int firsto
|
Line 5089 int readdata(char datafile[], int firsto
|
} /* ENd Waves */ |
} /* ENd Waves */ |
|
|
cutv(stra, strb,line,' '); |
cutv(stra, strb,line,' '); |
if(iout=sscanf(strb,"%d/%d",&month, &year) != 0){ |
if( (iout=sscanf(strb,"%d/%d",&month, &year)) != 0){ |
} |
} |
else if(iout=sscanf(strb,"%s.",dummy) != 0){ |
else if( (iout=sscanf(strb,"%s.",dummy)) != 0){ |
month=99; |
month=99; |
year=9999; |
year=9999; |
}else{ |
}else{ |
Line 5037 int readdata(char datafile[], int firsto
|
Line 5104 int readdata(char datafile[], int firsto
|
strcpy(line,stra); |
strcpy(line,stra); |
|
|
cutv(stra, strb,line,' '); |
cutv(stra, strb,line,' '); |
if(iout=sscanf(strb,"%d/%d",&month, &year) != 0){ |
if( (iout=sscanf(strb,"%d/%d",&month, &year)) != 0){ |
} |
} |
else if(iout=sscanf(strb,"%s.", dummy) != 0){ |
else if( (iout=sscanf(strb,"%s.", dummy)) != 0){ |
month=99; |
month=99; |
year=9999; |
year=9999; |
}else{ |
}else{ |
Line 5137 void removespace(char *str) {
|
Line 5204 void removespace(char *str) {
|
do |
do |
while (*p2 == ' ') |
while (*p2 == ' ') |
p2++; |
p2++; |
while (*p1++ = *p2++); |
while (*p1++ == *p2++); |
} |
} |
|
|
int decodemodel ( char model[], int lastobs) /**< This routine decode the model and returns: |
int decodemodel ( char model[], int lastobs) /**< This routine decode the model and returns: |
Line 5167 int decodemodel ( char model[], int last
|
Line 5234 int decodemodel ( char model[], int last
|
cptcovs=j+1-j1; /**< Number of simple covariates V1+V2*age+V3 +V3*V4=> V1 + V3 =2 */ |
cptcovs=j+1-j1; /**< Number of simple covariates V1+V2*age+V3 +V3*V4=> V1 + V3 =2 */ |
cptcovt= j+1; /* Number of total covariates in the model V1 + V2*age+ V3 + V3*V4=> 4*/ |
cptcovt= j+1; /* Number of total covariates in the model V1 + V2*age+ V3 + V3*V4=> 4*/ |
/* including age products which are counted in cptcovage. |
/* including age products which are counted in cptcovage. |
/* but the covariates which are products must be treated separately: ncovn=4- 2=2 (V1+V3). */ |
* but the covariates which are products must be treated separately: ncovn=4- 2=2 (V1+V3). */ |
cptcovprod=j1; /**< Number of products V1*V2 +v3*age = 2 */ |
cptcovprod=j1; /**< Number of products V1*V2 +v3*age = 2 */ |
cptcovprodnoage=0; /**< Number of covariate products without age: V3*V4 =1 */ |
cptcovprodnoage=0; /**< Number of covariate products without age: V3*V4 =1 */ |
strcpy(modelsav,model); |
strcpy(modelsav,model); |
Line 5309 int decodemodel ( char model[], int last
|
Line 5376 int decodemodel ( char model[], int last
|
return (1); |
return (1); |
} |
} |
|
|
calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr, int *nbwarn ) |
int calandcheckages(int imx, int maxwav, double *agemin, double *agemax, int *nberr, int *nbwarn ) |
{ |
{ |
int i, m; |
int i, m; |
|
|
Line 5320 calandcheckages(int imx, int maxwav, dou
|
Line 5387 calandcheckages(int imx, int maxwav, dou
|
s[m][i]=-1; |
s[m][i]=-1; |
} |
} |
if((int)moisdc[i]==99 && (int)andc[i]==9999 && s[m][i]>nlstate){ |
if((int)moisdc[i]==99 && (int)andc[i]==9999 && s[m][i]>nlstate){ |
*nberr++; |
*nberr = *nberr + 1; |
printf("Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results are biased\n",(int)moisdc[i],(int)andc[i],num[i],i); |
printf("Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results are biased (%d)\n",(int)moisdc[i],(int)andc[i],num[i],i, *nberr); |
fprintf(ficlog,"Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results are biased\n",(int)moisdc[i],(int)andc[i],num[i],i); |
fprintf(ficlog,"Error! Date of death (month %2d and year %4d) of individual %ld on line %d was unknown, you must set an arbitrary year of death or he/she is skipped and results are biased (%d)\n",(int)moisdc[i],(int)andc[i],num[i],i, *nberr); |
s[m][i]=-1; |
s[m][i]=-1; |
} |
} |
if((int)moisdc[i]==99 && (int)andc[i]!=9999 && s[m][i]>nlstate){ |
if((int)moisdc[i]==99 && (int)andc[i]!=9999 && s[m][i]>nlstate){ |
*nberr++; |
(*nberr)++; |
printf("Error! Month of death of individual %ld on line %d was unknown %2d, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,(int)moisdc[i]); |
printf("Error! Month of death of individual %ld on line %d was unknown %2d, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,(int)moisdc[i]); |
fprintf(ficlog,"Error! Month of death of individual %ld on line %d was unknown %f, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,moisdc[i]); |
fprintf(ficlog,"Error! Month of death of individual %ld on line %d was unknown %f, you should set it otherwise the information on the death is skipped and results are biased.\n",num[i],i,moisdc[i]); |
s[m][i]=-1; /* We prefer to skip it (and to skip it in version 0.8a1 too */ |
s[m][i]=-1; /* We prefer to skip it (and to skip it in version 0.8a1 too */ |
Line 5339 calandcheckages(int imx, int maxwav, dou
|
Line 5406 calandcheckages(int imx, int maxwav, dou
|
for(m=firstpass; (m<= lastpass); m++){ |
for(m=firstpass; (m<= lastpass); m++){ |
if(s[m][i] >0 || s[m][i]==-2 || s[m][i]==-4 || s[m][i]==-5){ |
if(s[m][i] >0 || s[m][i]==-2 || s[m][i]==-4 || s[m][i]==-5){ |
if (s[m][i] >= nlstate+1) { |
if (s[m][i] >= nlstate+1) { |
if(agedc[i]>0) |
if(agedc[i]>0){ |
if((int)moisdc[i]!=99 && (int)andc[i]!=9999) |
if((int)moisdc[i]!=99 && (int)andc[i]!=9999){ |
agev[m][i]=agedc[i]; |
agev[m][i]=agedc[i]; |
/*if(moisdc[i]==99 && andc[i]==9999) s[m][i]=-1;*/ |
/*if(moisdc[i]==99 && andc[i]==9999) s[m][i]=-1;*/ |
else { |
}else { |
if ((int)andc[i]!=9999){ |
if ((int)andc[i]!=9999){ |
nbwarn++; |
nbwarn++; |
printf("Warning negative age at death: %ld line:%d\n",num[i],i); |
printf("Warning negative age at death: %ld line:%d\n",num[i],i); |
Line 5351 calandcheckages(int imx, int maxwav, dou
|
Line 5418 calandcheckages(int imx, int maxwav, dou
|
agev[m][i]=-1; |
agev[m][i]=-1; |
} |
} |
} |
} |
|
} /* agedc > 0 */ |
} |
} |
else if(s[m][i] !=9){ /* Standard case, age in fractional |
else if(s[m][i] !=9){ /* Standard case, age in fractional |
years but with the precision of a month */ |
years but with the precision of a month */ |
Line 5381 calandcheckages(int imx, int maxwav, dou
|
Line 5449 calandcheckages(int imx, int maxwav, dou
|
for (i=1; i<=imx; i++) { |
for (i=1; i<=imx; i++) { |
for(m=firstpass; (m<=lastpass); m++){ |
for(m=firstpass; (m<=lastpass); m++){ |
if (s[m][i] > (nlstate+ndeath)) { |
if (s[m][i] > (nlstate+ndeath)) { |
*nberr++; |
(*nberr)++; |
printf("Error: on wave %d of individual %d status %d > (nlstate+ndeath)=(%d+%d)=%d\n",m,i,s[m][i],nlstate, ndeath, nlstate+ndeath); |
printf("Error: on wave %d of individual %d status %d > (nlstate+ndeath)=(%d+%d)=%d\n",m,i,s[m][i],nlstate, ndeath, nlstate+ndeath); |
fprintf(ficlog,"Error: on wave %d of individual %d status %d > (nlstate+ndeath)=(%d+%d)=%d\n",m,i,s[m][i],nlstate, ndeath, nlstate+ndeath); |
fprintf(ficlog,"Error: on wave %d of individual %d status %d > (nlstate+ndeath)=(%d+%d)=%d\n",m,i,s[m][i],nlstate, ndeath, nlstate+ndeath); |
return 1; |
return 1; |
Line 5406 calandcheckages(int imx, int maxwav, dou
|
Line 5474 calandcheckages(int imx, int maxwav, dou
|
return (1); |
return (1); |
} |
} |
|
|
|
#if defined(_MSC_VER) |
|
/*printf("Visual C++ compiler: %s \n;", _MSC_FULL_VER);*/ |
|
/*fprintf(ficlog, "Visual C++ compiler: %s \n;", _MSC_FULL_VER);*/ |
|
//#include "stdafx.h" |
|
//#include <stdio.h> |
|
//#include <tchar.h> |
|
//#include <windows.h> |
|
//#include <iostream> |
|
typedef BOOL(WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); |
|
|
|
LPFN_ISWOW64PROCESS fnIsWow64Process; |
|
|
|
BOOL IsWow64() |
|
{ |
|
BOOL bIsWow64 = FALSE; |
|
|
|
//typedef BOOL (APIENTRY *LPFN_ISWOW64PROCESS) |
|
// (HANDLE, PBOOL); |
|
|
|
//LPFN_ISWOW64PROCESS fnIsWow64Process; |
|
|
|
HMODULE module = GetModuleHandle(_T("kernel32")); |
|
const char funcName[] = "IsWow64Process"; |
|
fnIsWow64Process = (LPFN_ISWOW64PROCESS) |
|
GetProcAddress(module, funcName); |
|
|
|
if (NULL != fnIsWow64Process) |
|
{ |
|
if (!fnIsWow64Process(GetCurrentProcess(), |
|
&bIsWow64)) |
|
//throw std::exception("Unknown error"); |
|
printf("Unknown error\n"); |
|
} |
|
return bIsWow64 != FALSE; |
|
} |
|
#endif |
|
|
|
void syscompilerinfo() |
|
{ |
|
/* #include "syscompilerinfo.h"*/ |
|
|
|
#if defined __INTEL_COMPILER |
|
#if defined(__GNUC__) |
|
struct utsname sysInfo; /* For Intel on Linux and OS/X */ |
|
#endif |
|
#elif defined(__GNUC__) |
|
#include <gnu/libc-version.h> /* Only on gnu */ |
|
struct utsname sysInfo; |
|
int cross = CROSS; |
|
if (cross){ |
|
printf("Cross-"); |
|
fprintf(ficlog, "Cross-"); |
|
} |
|
#endif |
|
|
|
#include <stdint.h> |
|
|
|
printf("Compiled with:");fprintf(ficlog,"Compiled with:"); |
|
#if defined(__clang__) |
|
printf(" Clang/LLVM");fprintf(ficlog," Clang/LLVM"); /* Clang/LLVM. ---------------------------------------------- */ |
|
#endif |
|
#if defined(__ICC) || defined(__INTEL_COMPILER) |
|
printf(" Intel ICC/ICPC");fprintf(ficlog," Intel ICC/ICPC");/* Intel ICC/ICPC. ------------------------------------------ */ |
|
#endif |
|
#if defined(__GNUC__) || defined(__GNUG__) |
|
printf(" GNU GCC/G++");fprintf(ficlog," GNU GCC/G++");/* GNU GCC/G++. --------------------------------------------- */ |
|
#endif |
|
#if defined(__HP_cc) || defined(__HP_aCC) |
|
printf(" Hewlett-Packard C/aC++");fprintf(fcilog," Hewlett-Packard C/aC++"); /* Hewlett-Packard C/aC++. ---------------------------------- */ |
|
#endif |
|
#if defined(__IBMC__) || defined(__IBMCPP__) |
|
printf(" IBM XL C/C++"); fprintf(ficlog," IBM XL C/C++");/* IBM XL C/C++. -------------------------------------------- */ |
|
#endif |
|
#if defined(_MSC_VER) |
|
printf(" Microsoft Visual Studio");fprintf(ficlog," Microsoft Visual Studio");/* Microsoft Visual Studio. --------------------------------- */ |
|
#endif |
|
#if defined(__PGI) |
|
printf(" Portland Group PGCC/PGCPP");fprintf(ficlog," Portland Group PGCC/PGCPP");/* Portland Group PGCC/PGCPP. ------------------------------- */ |
|
#endif |
|
#if defined(__SUNPRO_C) || defined(__SUNPRO_CC) |
|
printf(" Oracle Solaris Studio");fprintf(ficlog," Oracle Solaris Studio\n");/* Oracle Solaris Studio. ----------------------------------- */ |
|
#endif |
|
printf(" for ");fprintf(ficlog," for "); |
|
|
|
// http://stackoverflow.com/questions/4605842/how-to-identify-platform-compiler-from-preprocessor-macros |
|
#ifdef _WIN32 // note the underscore: without it, it's not msdn official! |
|
// Windows (x64 and x86) |
|
printf("Windows (x64 and x86) ");fprintf(ficlog,"Windows (x64 and x86) "); |
|
#elif __unix__ // all unices, not all compilers |
|
// Unix |
|
printf("Unix ");fprintf(ficlog,"Unix "); |
|
#elif __linux__ |
|
// linux |
|
printf("linux ");fprintf(ficlog,"linux "); |
|
#elif __APPLE__ |
|
// Mac OS, not sure if this is covered by __posix__ and/or __unix__ though.. |
|
printf("Mac OS ");fprintf(ficlog,"Mac OS "); |
|
#endif |
|
|
|
/* __MINGW32__ */ |
|
/* __CYGWIN__ */ |
|
/* __MINGW64__ */ |
|
// http://msdn.microsoft.com/en-us/library/b0084kay.aspx |
|
/* _MSC_VER //the Visual C++ compiler is 17.00.51106.1, the _MSC_VER macro evaluates to 1700. Type cl /? */ |
|
/* _MSC_FULL_VER //the Visual C++ compiler is 15.00.20706.01, the _MSC_FULL_VER macro evaluates to 150020706 */ |
|
/* _WIN64 // Defined for applications for Win64. */ |
|
/* _M_X64 // Defined for compilations that target x64 processors. */ |
|
/* _DEBUG // Defined when you compile with /LDd, /MDd, and /MTd. */ |
|
|
|
#if UINTPTR_MAX == 0xffffffff |
|
printf(" 32-bit"); fprintf(ficlog," 32-bit");/* 32-bit */ |
|
#elif UINTPTR_MAX == 0xffffffffffffffff |
|
printf(" 64-bit"); fprintf(ficlog," 64-bit");/* 64-bit */ |
|
#else |
|
printf(" wtf-bit"); fprintf(ficlog," wtf-bit");/* wtf */ |
|
#endif |
|
|
|
#if defined(__GNUC__) |
|
# if defined(__GNUC_PATCHLEVEL__) |
|
# define __GNUC_VERSION__ (__GNUC__ * 10000 \ |
|
+ __GNUC_MINOR__ * 100 \ |
|
+ __GNUC_PATCHLEVEL__) |
|
# else |
|
# define __GNUC_VERSION__ (__GNUC__ * 10000 \ |
|
+ __GNUC_MINOR__ * 100) |
|
# endif |
|
printf(" using GNU C version %d.\n", __GNUC_VERSION__); |
|
fprintf(ficlog, " using GNU C version %d.\n", __GNUC_VERSION__); |
|
|
|
if (uname(&sysInfo) != -1) { |
|
printf("Running on: %s %s %s %s %s\n",sysInfo.sysname, sysInfo.nodename, sysInfo.release, sysInfo.version, sysInfo.machine); |
|
fprintf(ficlog,"Running on: %s %s %s %s %s\n ",sysInfo.sysname, sysInfo.nodename, sysInfo.release, sysInfo.version, sysInfo.machine); |
|
} |
|
else |
|
perror("uname() error"); |
|
#ifndef __INTEL_COMPILER |
|
printf("GNU libc version: %s\n", gnu_get_libc_version()); |
|
fprintf(ficlog,"GNU libc version: %s\n", gnu_get_libc_version()); |
|
#endif |
|
#endif |
|
|
|
// void main() |
|
// { |
|
#if defined(_MSC_VER) |
|
if (IsWow64()){ |
|
printf("The program (probably compiled for 32bit) is running under WOW64 (64bit) emulation.\n"); |
|
fprintf(ficlog, "The program (probably compiled for 32bit) is running under WOW64 (64bit) emulation.\n"); |
|
} |
|
else{ |
|
printf("The process is not running under WOW64 (i.e probably on a 64bit Windows).\n"); |
|
fprintf(ficlog,"The programm is not running under WOW64 (i.e probably on a 64bit Windows).\n"); |
|
} |
|
// printf("\nPress Enter to continue..."); |
|
// getchar(); |
|
// } |
|
|
|
#endif |
|
|
|
|
|
} |
|
|
/***********************************************/ |
/***********************************************/ |
/**************** Main Program *****************/ |
/**************** Main Program *****************/ |
Line 5436 int main(int argc, char *argv[])
|
Line 5664 int main(int argc, char *argv[])
|
double agedeb; |
double agedeb; |
double ageminpar=1.e20,agemin=1.e20, agemaxpar=-1.e20, agemax=-1.e20; |
double ageminpar=1.e20,agemin=1.e20, agemaxpar=-1.e20, agemax=-1.e20; |
|
|
|
double fret; |
double dum; /* Dummy variable */ |
double dum; /* Dummy variable */ |
double ***p3mat; |
double ***p3mat; |
double ***mobaverage; |
double ***mobaverage; |
Line 5556 int main(int argc, char *argv[])
|
Line 5784 int main(int argc, char *argv[])
|
strcpy(command,"mkdir "); |
strcpy(command,"mkdir "); |
strcat(command,optionfilefiname); |
strcat(command,optionfilefiname); |
if((outcmd=system(command)) != 0){ |
if((outcmd=system(command)) != 0){ |
printf("Problem creating directory or it already exists %s%s, err=%d\n",path,optionfilefiname,outcmd); |
printf("Directory already exists (or can't create it) %s%s, err=%d\n",path,optionfilefiname,outcmd); |
/* fprintf(ficlog,"Problem creating directory %s%s\n",path,optionfilefiname); */ |
/* fprintf(ficlog,"Problem creating directory %s%s\n",path,optionfilefiname); */ |
/* fclose(ficlog); */ |
/* fclose(ficlog); */ |
/* exit(1); */ |
/* exit(1); */ |
Line 5583 int main(int argc, char *argv[])
|
Line 5811 int main(int argc, char *argv[])
|
optionfilext=%s\n\ |
optionfilext=%s\n\ |
optionfilefiname='%s'\n",pathimach,pathtot,path,optionfile,optionfilext,optionfilefiname); |
optionfilefiname='%s'\n",pathimach,pathtot,path,optionfile,optionfilext,optionfilefiname); |
|
|
|
syscompilerinfo(); |
|
|
printf("Local time (at start):%s",strstart); |
printf("Local time (at start):%s",strstart); |
fprintf(ficlog,"Local time (at start): %s",strstart); |
fprintf(ficlog,"Local time (at start): %s",strstart); |
fflush(ficlog); |
fflush(ficlog); |