|
|
| version 1.106, 2006/01/19 13:24:36 | version 1.114, 2006/02/26 12:57:58 |
|---|---|
| Line 1 | Line 1 |
| /* $Id$ | /* $Id$ |
| $State$ | $State$ |
| $Log$ | $Log$ |
| Revision 1.114 2006/02/26 12:57:58 brouard | |
| (Module): Some improvements in processing parameter | |
| filename with strsep. | |
| Revision 1.113 2006/02/24 14:20:24 brouard | |
| (Module): Memory leaks checks with valgrind and: | |
| datafile was not closed, some imatrix were not freed and on matrix | |
| allocation too. | |
| Revision 1.112 2006/01/30 09:55:26 brouard | |
| (Module): Back to gnuplot.exe instead of wgnuplot.exe | |
| Revision 1.111 2006/01/25 20:38:18 brouard | |
| (Module): Lots of cleaning and bugs added (Gompertz) | |
| (Module): Comments can be added in data file. Missing date values | |
| can be a simple dot '.'. | |
| Revision 1.110 2006/01/25 00:51:50 brouard | |
| (Module): Lots of cleaning and bugs added (Gompertz) | |
| Revision 1.109 2006/01/24 19:37:15 brouard | |
| (Module): Comments (lines starting with a #) are allowed in data. | |
| Revision 1.108 2006/01/19 18:05:42 lievre | |
| Gnuplot problem appeared... | |
| To be fixed | |
| Revision 1.107 2006/01/19 16:20:37 brouard | |
| Test existence of gnuplot in imach path | |
| Revision 1.106 2006/01/19 13:24:36 brouard | Revision 1.106 2006/01/19 13:24:36 brouard |
| Some cleaning and links added in html output | Some cleaning and links added in html output |
| Line 227 | Line 257 |
| #include <string.h> | #include <string.h> |
| #include <unistd.h> | #include <unistd.h> |
| #include <limits.h> | |
| #include <sys/types.h> | |
| #include <sys/stat.h> | |
| #include <errno.h> | |
| extern int errno; | |
| /* #include <sys/time.h> */ | /* #include <sys/time.h> */ |
| #include <time.h> | #include <time.h> |
| #include "timeval.h" | #include "timeval.h" |
| Line 235 | Line 271 |
| /* #define _(String) gettext (String) */ | /* #define _(String) gettext (String) */ |
| #define MAXLINE 256 | #define MAXLINE 256 |
| #define GNUPLOTPROGRAM "gnuplot" | #define GNUPLOTPROGRAM "gnuplot" |
| /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ | /*#define GNUPLOTPROGRAM "..\\gp37mgw\\wgnuplot"*/ |
| #define FILENAMELENGTH 132 | #define FILENAMELENGTH 132 |
| /*#define DEBUG*/ | |
| /*#define windows*/ | |
| #define GLOCK_ERROR_NOPATH -1 /* empty path */ | #define GLOCK_ERROR_NOPATH -1 /* empty path */ |
| #define GLOCK_ERROR_GETCWD -2 /* cannot get cwd */ | #define GLOCK_ERROR_GETCWD -2 /* cannot get cwd */ |
| Line 257 | Line 293 |
| #define AGEGOMP 10. /* Minimal age for Gompertz adjustment */ | #define AGEGOMP 10. /* Minimal age for Gompertz adjustment */ |
| #ifdef UNIX | #ifdef UNIX |
| #define DIRSEPARATOR '/' | #define DIRSEPARATOR '/' |
| #define CHARSEPARATOR "/" | |
| #define ODIRSEPARATOR '\\' | #define ODIRSEPARATOR '\\' |
| #else | #else |
| #define DIRSEPARATOR '\\' | #define DIRSEPARATOR '\\' |
| #define CHARSEPARATOR "\\" | |
| #define ODIRSEPARATOR '/' | #define ODIRSEPARATOR '/' |
| #endif | #endif |
| /* $Id$ */ | /* $Id$ */ |
| /* $State$ */ | /* $State$ */ |
| char version[]="Imach version 0.98a, January 2006, INED-EUROREVES "; | char version[]="Imach version 0.98b, January 2006, INED-EUROREVES "; |
| char fullversion[]="$Revision$ $Date$"; | char fullversion[]="$Revision$ $Date$"; |
| int erreur, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */ | int erreur, nberr=0, nbwarn=0; /* Error number, number of errors number of warnings */ |
| int nvar; | int nvar; |
| Line 280 int popbased=0; | Line 318 int popbased=0; |
| int *wav; /* Number of waves for this individuual 0 is possible */ | int *wav; /* Number of waves for this individuual 0 is possible */ |
| int maxwav; /* Maxim number of waves */ | int maxwav; /* Maxim number of waves */ |
| int jmin, jmax; /* min, max spacing between 2 waves */ | int jmin, jmax; /* min, max spacing between 2 waves */ |
| int ijmin, ijmax; /* Individuals having jmin and jmax */ | |
| int gipmx, gsw; /* Global variables on the number of contributions | int gipmx, gsw; /* Global variables on the number of contributions |
| to the likelihood and the sum of weights (done by funcone)*/ | to the likelihood and the sum of weights (done by funcone)*/ |
| int mle, weightopt; | int mle, weightopt; |
| Line 310 FILE *ficresvpl; | Line 349 FILE *ficresvpl; |
| char fileresvpl[FILENAMELENGTH]; | char fileresvpl[FILENAMELENGTH]; |
| char title[MAXLINE]; | char title[MAXLINE]; |
| char optionfile[FILENAMELENGTH], datafile[FILENAMELENGTH], filerespl[FILENAMELENGTH]; | char optionfile[FILENAMELENGTH], datafile[FILENAMELENGTH], filerespl[FILENAMELENGTH]; |
| char optionfilext[10], optionfilefiname[FILENAMELENGTH], plotcmd[FILENAMELENGTH]; | char optionfilext[10], optionfilefiname[FILENAMELENGTH], plotcmd[FILENAMELENGTH], pplotcmd[FILENAMELENGTH]; |
| char tmpout[FILENAMELENGTH], tmpout2[FILENAMELENGTH]; | char tmpout[FILENAMELENGTH], tmpout2[FILENAMELENGTH]; |
| char command[FILENAMELENGTH]; | char command[FILENAMELENGTH]; |
| int outcmd=0; | int outcmd=0; |
| Line 332 long time_value; | Line 371 long time_value; |
| extern long time(); | extern long time(); |
| char strcurr[80], strfor[80]; | char strcurr[80], strfor[80]; |
| char *endptr; | |
| long lval; | |
| #define NR_END 1 | #define NR_END 1 |
| #define FREE_ARG char* | #define FREE_ARG char* |
| #define FTOL 1.0e-10 | #define FTOL 1.0e-10 |
| Line 388 double ftolhess; /* Tolerance for comput | Line 430 double ftolhess; /* Tolerance for comput |
| /**************** split *************************/ | /**************** split *************************/ |
| static int split( char *path, char *dirc, char *name, char *ext, char *finame ) | static int split( char *path, char *dirc, char *name, char *ext, char *finame ) |
| { | { |
| /* From a file name with full path (either Unix or Windows) we extract the directory (dirc) | /* From a file name with (full) path (either Unix or Windows) we extract the directory (dirc) |
| the name of the file (name), its extension only (ext) and its first part of the name (finame) | the name of the file (name), its extension only (ext) and its first part of the name (finame) |
| */ | */ |
| char *ss; /* pointer */ | char *ss; /* pointer */ |
| Line 397 static int split( char *path, char *dirc | Line 439 static int split( char *path, char *dirc |
| l1 = strlen(path ); /* length of path */ | l1 = strlen(path ); /* length of path */ |
| if ( l1 == 0 ) return( GLOCK_ERROR_NOPATH ); | if ( l1 == 0 ) return( GLOCK_ERROR_NOPATH ); |
| ss= strrchr( path, DIRSEPARATOR ); /* find last / */ | ss= strrchr( path, DIRSEPARATOR ); /* find last / */ |
| if ( ss == NULL ) { /* no directory, so use current */ | if ( ss == NULL ) { /* no directory, so determine current directory */ |
| strcpy( name, path ); /* we got the fullname name because no directory */ | |
| /*if(strrchr(path, ODIRSEPARATOR )==NULL) | /*if(strrchr(path, ODIRSEPARATOR )==NULL) |
| printf("Warning you should use %s as a separator\n",DIRSEPARATOR);*/ | printf("Warning you should use %s as a separator\n",DIRSEPARATOR);*/ |
| /* get current working directory */ | /* get current working directory */ |
| Line 405 static int split( char *path, char *dirc | Line 448 static int split( char *path, char *dirc |
| if ( getcwd( dirc, FILENAME_MAX ) == NULL ) { | if ( getcwd( dirc, FILENAME_MAX ) == NULL ) { |
| return( GLOCK_ERROR_GETCWD ); | return( GLOCK_ERROR_GETCWD ); |
| } | } |
| strcpy( name, path ); /* we've got it */ | /* got dirc from getcwd*/ |
| printf(" DIRC = %s \n",dirc); | |
| } else { /* strip direcotry from path */ | } else { /* strip direcotry from path */ |
| ss++; /* after this, the filename */ | ss++; /* after this, the filename */ |
| l2 = strlen( ss ); /* length of filename */ | l2 = strlen( ss ); /* length of filename */ |
| Line 413 static int split( char *path, char *dirc | Line 457 static int split( char *path, char *dirc |
| strcpy( name, ss ); /* save file name */ | strcpy( name, ss ); /* save file name */ |
| strncpy( dirc, path, l1 - l2 ); /* now the directory */ | strncpy( dirc, path, l1 - l2 ); /* now the directory */ |
| dirc[l1-l2] = 0; /* add zero */ | dirc[l1-l2] = 0; /* add zero */ |
| printf(" DIRC2 = %s \n",dirc); | |
| } | } |
| /* We add a separator at the end of dirc if not exists */ | |
| l1 = strlen( dirc ); /* length of directory */ | l1 = strlen( dirc ); /* length of directory */ |
| /*#ifdef windows | if( dirc[l1-1] != DIRSEPARATOR ){ |
| if ( dirc[l1-1] != '\\' ) { dirc[l1] = '\\'; dirc[l1+1] = 0; } | dirc[l1] = DIRSEPARATOR; |
| #else | dirc[l1+1] = 0; |
| if ( dirc[l1-1] != '/' ) { dirc[l1] = '/'; dirc[l1+1] = 0; } | printf(" DIRC3 = %s \n",dirc); |
| #endif | } |
| */ | |
| ss = strrchr( name, '.' ); /* find last / */ | ss = strrchr( name, '.' ); /* find last / */ |
| if (ss >0){ | if (ss >0){ |
| ss++; | ss++; |
| Line 430 static int split( char *path, char *dirc | Line 475 static int split( char *path, char *dirc |
| strncpy( finame, name, l1-l2); | strncpy( finame, name, l1-l2); |
| finame[l1-l2]= 0; | finame[l1-l2]= 0; |
| } | } |
| return( 0 ); /* we're done */ | return( 0 ); /* we're done */ |
| } | } |
| Line 2176 void concatwav(int wav[], int **dh, int | Line 2222 void concatwav(int wav[], int **dh, int |
| if(mi==0){ | if(mi==0){ |
| nbwarn++; | nbwarn++; |
| if(first==0){ | if(first==0){ |
| printf("Warning! None valid information for:%ld line=%d (skipped) and may be others, see log file\n",num[i],i); | printf("Warning! No valid information for individual %ld line=%d (skipped) and may be others, see log file\n",num[i],i); |
| first=1; | first=1; |
| } | } |
| if(first==1){ | if(first==1){ |
| fprintf(ficlog,"Warning! None valid information for:%ld line=%d (skipped)\n",num[i],i); | fprintf(ficlog,"Warning! No valid information for individual %ld line=%d (skipped)\n",num[i],i); |
| } | } |
| } /* end mi==0 */ | } /* end mi==0 */ |
| } /* End individuals */ | } /* End individuals */ |
| Line 2203 void concatwav(int wav[], int **dh, int | Line 2249 void concatwav(int wav[], int **dh, int |
| fprintf(ficlog," We assumed that the date of interview was correct (and not the date of death) and postponed the death %d month(s) (one stepm) after the interview. You MUST fix the contradiction between dates.\n",stepm); | fprintf(ficlog," We assumed that the date of interview was correct (and not the date of death) and postponed the death %d month(s) (one stepm) after the interview. You MUST fix the contradiction between dates.\n",stepm); |
| } | } |
| k=k+1; | k=k+1; |
| if (j >= jmax) jmax=j; | if (j >= jmax){ |
| if (j <= jmin) jmin=j; | jmax=j; |
| ijmax=i; | |
| } | |
| if (j <= jmin){ | |
| jmin=j; | |
| ijmin=i; | |
| } | |
| sum=sum+j; | sum=sum+j; |
| /*if (j<0) printf("j=%d num=%d \n",j,i);*/ | /*if (j<0) printf("j=%d num=%d \n",j,i);*/ |
| /* printf("%d %d %d %d\n", s[mw[mi][i]][i] ,s[mw[mi+1][i]][i],j,i);*/ | /* printf("%d %d %d %d\n", s[mw[mi][i]][i] ,s[mw[mi+1][i]][i],j,i);*/ |
| Line 2215 void concatwav(int wav[], int **dh, int | Line 2267 void concatwav(int wav[], int **dh, int |
| /* if (j<0) printf("%d %lf %lf %d %d %d\n", i,agev[mw[mi+1][i]][i], agev[mw[mi][i]][i],j,s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]); */ | /* if (j<0) printf("%d %lf %lf %d %d %d\n", i,agev[mw[mi+1][i]][i], agev[mw[mi][i]][i],j,s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]); */ |
| k=k+1; | k=k+1; |
| if (j >= jmax) jmax=j; | if (j >= jmax) { |
| else if (j <= jmin)jmin=j; | jmax=j; |
| ijmax=i; | |
| } | |
| else if (j <= jmin){ | |
| jmin=j; | |
| ijmin=i; | |
| } | |
| /* if (j<10) printf("j=%d jmin=%d num=%d ",j,jmin,i); */ | /* if (j<10) printf("j=%d jmin=%d num=%d ",j,jmin,i); */ |
| /*printf("%d %lf %d %d %d\n", i,agev[mw[mi][i]][i],j,s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]);*/ | /*printf("%d %lf %d %d %d\n", i,agev[mw[mi][i]][i],j,s[mw[mi][i]][i] ,s[mw[mi+1][i]][i]);*/ |
| if(j<0){ | if(j<0){ |
| Line 2259 void concatwav(int wav[], int **dh, int | Line 2317 void concatwav(int wav[], int **dh, int |
| } /* end wave */ | } /* end wave */ |
| } | } |
| jmean=sum/k; | jmean=sum/k; |
| printf("Delay (in months) between two waves Min=%d Max=%d Mean=%f\n\n ",jmin, jmax,jmean); | printf("Delay (in months) between two waves Min=%d (for indiviudal %ld) Max=%d (%ld) Mean=%f\n\n ",jmin, num[ijmin], jmax, num[ijmax], jmean); |
| fprintf(ficlog,"Delay (in months) between two waves Min=%d Max=%d Mean=%f\n\n ",jmin, jmax,jmean); | fprintf(ficlog,"Delay (in months) between two waves Min=%d (for indiviudal %ld) Max=%d (%ld) Mean=%f\n\n ",jmin, ijmin, jmax, ijmax, jmean); |
| } | } |
| /*********** Tricode ****************************/ | /*********** Tricode ****************************/ |
| Line 3185 To be simple, these graphs help to under | Line 3243 To be simple, these graphs help to under |
| } | } |
| 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); |
| free_matrix(doldm,1,(nlstate)*(nlstate+ndeath),1,(nlstate)*(nlstate+ndeath)); | |
| free_matrix(dnewm,1,(nlstate)*(nlstate+ndeath),1,npar); | |
| free_vector(xp,1,npar); | free_vector(xp,1,npar); |
| fclose(ficresprob); | fclose(ficresprob); |
| fclose(ficresprobcov); | fclose(ficresprobcov); |
| Line 3203 void printinghtml(char fileres[], char t | Line 3263 void printinghtml(char fileres[], char t |
| double jprev2, double mprev2,double anprev2){ | double jprev2, double mprev2,double anprev2){ |
| int jj1, k1, i1, cpt; | int jj1, k1, i1, cpt; |
| fprintf(fichtm,"<ul><li><a> href="#firstorder">Result files (first order: no variance)</a>\n \ | fprintf(fichtm,"<ul><li><a href='#firstorder'>Result files (first order: no variance)</a>\n \ |
| <li><a> href="#secondorder">Result files (second order (variance)</a>\n \ | <li><a href='#secondorder'>Result files (second order (variance)</a>\n \ |
| </ul>"); | </ul>"); |
| fprintf(fichtm,"<ul><li><h4><a name="firstorder">Result files (first order: no variance)</a></h4>\n \ | fprintf(fichtm,"<ul><li><h4><a name='firstorder'>Result files (first order: no variance)</a></h4>\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 ", | - Observed prevalence in each state (during the period defined between %.lf/%.lf/%.lf and %.lf/%.lf/%.lf): <a href=\"%s\">%s</a> <br>\n ", |
| jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirf2(fileres,"p"),subdirf2(fileres,"p")); | jprev1, mprev1,anprev1,jprev2, mprev2,anprev2,subdirf2(fileres,"p"),subdirf2(fileres,"p")); |
| fprintf(fichtm,"\ | fprintf(fichtm,"\ |
| Line 3257 fprintf(fichtm," \n<ul><li><b>Graphs</b> | Line 3317 fprintf(fichtm," \n<ul><li><b>Graphs</b> |
| fprintf(fichtm,"\ | fprintf(fichtm,"\ |
| \n<br><li><h4> <a name="secondorder">Result files (second order: variances)</a></h4>\n\ | \n<br><li><h4> <a name='secondorder'>Result files (second order: variances)</a></h4>\n\ |
| - Parameter file with estimated parameters and covariance matrix: <a href=\"%s\">%s</a> <br>\n", rfileres,rfileres); | - Parameter file with estimated parameters and covariance matrix: <a href=\"%s\">%s</a> <br>\n", rfileres,rfileres); |
| fprintf(fichtm," - Variance of one-step probabilities: <a href=\"%s\">%s</a> <br>\n", | fprintf(fichtm," - Variance of one-step probabilities: <a href=\"%s\">%s</a> <br>\n", |
| Line 3971 double gompertz(double x[]) | Line 4031 double gompertz(double x[]) |
| { | { |
| double A,B,L=0.0,sump=0.,num=0.; | double A,B,L=0.0,sump=0.,num=0.; |
| int i,n=0; /* n is the size of the sample */ | int i,n=0; /* n is the size of the sample */ |
| for (i=0;i<=imx-1 ; i++) { | for (i=0;i<=imx-1 ; i++) { |
| sump=sump+weight[i]; | sump=sump+weight[i]; |
| /* sump=sump+1;*/ | /* sump=sump+1;*/ |
| Line 3983 double gompertz(double x[]) | Line 4044 double gompertz(double x[]) |
| for (i=1;i<=imx ; i++) | for (i=1;i<=imx ; i++) |
| { | { |
| if (cens[i]==1 & wav[i]>1) | if (cens[i] == 1 && wav[i]>1) |
| A=-x[1]/(x[2])*(exp(x[2]*(agecens[i]-agegomp))-exp(x[2]*(ageexmed[i]-agegomp))); | A=-x[1]/(x[2])*(exp(x[2]*(agecens[i]-agegomp))-exp(x[2]*(ageexmed[i]-agegomp))); |
| if (cens[i]==0 & wav[i]>1) | if (cens[i] == 0 && wav[i]>1) |
| A=-x[1]/(x[2])*(exp(x[2]*(agedc[i]-agegomp))-exp(x[2]*(ageexmed[i]-agegomp))) | A=-x[1]/(x[2])*(exp(x[2]*(agedc[i]-agegomp))-exp(x[2]*(ageexmed[i]-agegomp))) |
| +log(x[1]/YEARM)+x[2]*(agedc[i]-agegomp)+log(YEARM); | +log(x[1]/YEARM)+x[2]*(agedc[i]-agegomp)+log(YEARM); |
| if (wav[i]>1 & agecens[i]>15) { | /*if (wav[i] > 1 && agecens[i] > 15) {*/ /* ??? */ |
| if (wav[i] > 1 ) { /* ??? */ | |
| L=L+A*weight[i]; | L=L+A*weight[i]; |
| /* printf("\ni=%d A=%f L=%lf x[1]=%lf x[2]=%lf ageex=%lf agecens=%lf cens=%d agedc=%lf weight=%lf\n",i,A,L,x[1],x[2],ageexmed[i]*12,agecens[i]*12,cens[i],agedc[i]*12,weight[i]);*/ | /* printf("\ni=%d A=%f L=%lf x[1]=%lf x[2]=%lf ageex=%lf agecens=%lf cens=%d agedc=%lf weight=%lf\n",i,A,L,x[1],x[2],ageexmed[i]*12,agecens[i]*12,cens[i],agedc[i]*12,weight[i]);*/ |
| } | } |
| Line 4059 int main(int argc, char *argv[]) | Line 4121 int main(int argc, char *argv[]) |
| { | { |
| int movingaverage(double ***probs, double bage,double fage, double ***mobaverage, int mobilav); | 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 i,j, k, n=MAXN,iter,m,size=100,cptcode, cptcod; |
| int linei, month, year,iout; | |
| int jj, ll, li, lj, lk, imk; | int jj, ll, li, lj, lk, imk; |
| int numlinepar=0; /* Current linenumber of parameter file */ | int numlinepar=0; /* Current linenumber of parameter file */ |
| int itimes; | int itimes; |
| int NDIM=2; | int NDIM=2; |
| char ca[32], cb[32], cc[32]; | char ca[32], cb[32], cc[32]; |
| char dummy[]=" "; | |
| /* FILE *fichtm; *//* Html File */ | /* FILE *fichtm; *//* Html File */ |
| /* FILE *ficgp;*/ /*Gnuplot File */ | /* FILE *ficgp;*/ /*Gnuplot File */ |
| struct stat info; | |
| double agedeb, agefin,hf; | double agedeb, agefin,hf; |
| 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; |
| Line 4080 int main(int argc, char *argv[]) | Line 4145 int main(int argc, char *argv[]) |
| char line[MAXLINE], linepar[MAXLINE]; | char line[MAXLINE], linepar[MAXLINE]; |
| char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE],model[MAXLINE]; | char path[MAXLINE],pathc[MAXLINE],pathcd[MAXLINE],pathtot[MAXLINE],model[MAXLINE]; |
| char pathr[MAXLINE], pathimach[MAXLINE]; | char pathr[MAXLINE], pathimach[MAXLINE]; |
| char **bp, *tok, *val; /* pathtot */ | |
| int firstobs=1, lastobs=10; | int firstobs=1, lastobs=10; |
| int sdeb, sfin; /* Status at beginning and end */ | int sdeb, sfin; /* Status at beginning and end */ |
| int c, h , cpt,l; | int c, h , cpt,l; |
| Line 4157 int main(int argc, char *argv[]) | Line 4223 int main(int argc, char *argv[]) |
| printf("\n%s\n%s",version,fullversion); | printf("\n%s\n%s",version,fullversion); |
| if(argc <=1){ | if(argc <=1){ |
| printf("\nEnter the parameter file name: "); | printf("\nEnter the parameter file name: "); |
| scanf("%s",pathtot); | fgets(pathr,FILENAMELENGTH,stdin); |
| i=strlen(pathr); | |
| if(pathr[i-1]=='\n') | |
| pathr[i-1]='\0'; | |
| for (tok = pathr; tok != NULL; ){ | |
| printf("Pathr |%s|\n",pathr); | |
| while ((val = strsep(&tok, "\"" )) != NULL && *val == '\0'); | |
| printf("val= |%s| pathr=%s\n",val,pathr); | |
| strcpy (pathtot, val); | |
| if(pathr[0] == '\0') break; /* Un peu sale */ | |
| } | |
| } | } |
| else{ | else{ |
| strcpy(pathtot,argv[1]); | strcpy(pathtot,argv[1]); |
| Line 4167 int main(int argc, char *argv[]) | Line 4243 int main(int argc, char *argv[]) |
| printf("pathtot=%s, path=%s, optionfile=%s\n",pathtot,path,optionfile);*/ | printf("pathtot=%s, path=%s, optionfile=%s\n",pathtot,path,optionfile);*/ |
| /* cutv(path,optionfile,pathtot,'\\');*/ | /* cutv(path,optionfile,pathtot,'\\');*/ |
| /* Split argv[0], imach program to get pathimach */ | |
| printf("\nargv[0]=%s argv[1]=%s, \n",argv[0],argv[1]); | |
| split(argv[0],pathimach,optionfile,optionfilext,optionfilefiname); | split(argv[0],pathimach,optionfile,optionfilext,optionfilefiname); |
| printf("\nargv[0]=%s pathimach=%s, \noptionfile=%s \noptionfilext=%s \noptionfilefiname=%s\n",argv[0],pathimach,optionfile,optionfilext,optionfilefiname); | |
| /* strcpy(pathimach,argv[0]); */ | /* strcpy(pathimach,argv[0]); */ |
| /* Split argv[1]=pathtot, parameter file name to get path, optionfile, extension and name */ | |
| split(pathtot,path,optionfile,optionfilext,optionfilefiname); | split(pathtot,path,optionfile,optionfilext,optionfilefiname); |
| printf("pathimach=%s, pathtot=%s,\npath=%s,\noptionfile=%s \noptionfilext=%s \noptionfilefiname=%s\n",pathimach,pathtot,path,optionfile,optionfilext,optionfilefiname); | printf("\npathtot=%s,\npath=%s,\noptionfile=%s \noptionfilext=%s \noptionfilefiname=%s\n",pathtot,path,optionfile,optionfilext,optionfilefiname); |
| chdir(path); | chdir(path); |
| strcpy(command,"mkdir "); | strcpy(command,"mkdir "); |
| strcat(command,optionfilefiname); | strcat(command,optionfilefiname); |
| Line 4337 int main(int argc, char *argv[]) | Line 4417 int main(int argc, char *argv[]) |
| } | } |
| fflush(ficlog); | fflush(ficlog); |
| p=param[1][1]; | p=param[1][1]; |
| /* Reads comments: lines beginning with '#' */ | /* Reads comments: lines beginning with '#' */ |
| Line 4461 int main(int argc, char *argv[]) | Line 4540 int main(int argc, char *argv[]) |
| ncodemax=ivector(1,8); | ncodemax=ivector(1,8); |
| i=1; | i=1; |
| while (fgets(line, MAXLINE, fic) != NULL) { | linei=0; |
| if ((i >= firstobs) && (i <=lastobs)) { | while ((fgets(line, MAXLINE, fic) != NULL) &&((i >= firstobs) && (i <=lastobs))) { |
| for(j=0; line[j] != '\n';j++){ /* Untabifies line */ | linei=linei+1; |
| if(line[j] == '\t') | for(j=strlen(line); j>=0;j--){ /* Untabifies line */ |
| line[j] = ' '; | if(line[j] == '\t') |
| } | line[j] = ' '; |
| for (j=maxwav;j>=1;j--){ | } |
| cutv(stra, strb,line,' '); s[j][i]=atoi(strb); | for(j=strlen(line)-1; (line[j]==' ')||(line[j]==10)||(line[j]==13);j--){ |
| strcpy(line,stra); | ; |
| cutv(stra, strb,line,'/'); anint[j][i]=(double)(atoi(strb)); strcpy(line,stra); | }; |
| cutv(stra, strb,line,' '); mint[j][i]=(double)(atoi(strb)); strcpy(line,stra); | line[j+1]=0; /* Trims blanks at end of line */ |
| if(line[0]=='#'){ | |
| fprintf(ficlog,"Comment line\n%s\n",line); | |
| printf("Comment line\n%s\n",line); | |
| continue; | |
| } | |
| for (j=maxwav;j>=1;j--){ | |
| cutv(stra, strb,line,' '); | |
| errno=0; | |
| lval=strtol(strb,&endptr,10); | |
| /* if (errno == ERANGE && (lval == LONG_MAX || lval == LONG_MIN))*/ | |
| if( strb[0]=='\0' || (*endptr != '\0')){ | |
| printf("Error reading data around '%d' at line number %d %s for individual %d, '%s'\nShould be a status of wave %d. Setting maxwav=%d might be wrong. Exiting.\n", strb, linei,i,line,j,maxwav); | |
| exit(1); | |
| } | } |
| s[j][i]=lval; | |
| cutv(stra, strb,line,'/'); andc[i]=(double)(atoi(strb)); strcpy(line,stra); | |
| cutv(stra, strb,line,' '); moisdc[i]=(double)(atoi(strb)); strcpy(line,stra); | strcpy(line,stra); |
| cutv(stra, strb,line,' '); | |
| cutv(stra, strb,line,'/'); annais[i]=(double)(atoi(strb)); strcpy(line,stra); | if(iout=sscanf(strb,"%d/%d",&month, &year) != 0){ |
| cutv(stra, strb,line,' '); moisnais[i]=(double)(atoi(strb)); strcpy(line,stra); | } |
| else if(iout=sscanf(strb,"%s.") != 0){ | |
| cutv(stra, strb,line,' '); weight[i]=(double)(atoi(strb)); strcpy(line,stra); | month=99; |
| for (j=ncovcol;j>=1;j--){ | year=9999; |
| cutv(stra, strb,line,' '); covar[j][i]=(double)(atoi(strb)); strcpy(line,stra); | }else{ |
| } | printf("Error reading data around '%s' at line number %ld %s for individual %d, '%s'\nShould be a date of interview (mm/yyyy or .) at wave %d. Exiting.\n",strb, linei,i, line,j); |
| lstra=strlen(stra); | exit(1); |
| if(lstra > 9){ /* More than 2**32 or max of what printf can write with %ld */ | } |
| stratrunc = &(stra[lstra-9]); | anint[j][i]= (double) year; |
| num[i]=atol(stratrunc); | mint[j][i]= (double)month; |
| strcpy(line,stra); | |
| } /* ENd Waves */ | |
| cutv(stra, strb,line,' '); | |
| if(iout=sscanf(strb,"%d/%d",&month, &year) != 0){ | |
| } | |
| else if(iout=sscanf(strb,"%s.",dummy) != 0){ | |
| month=99; | |
| year=9999; | |
| }else{ | |
| printf("Error reading data around '%s' at line number %ld %s for individual %d, '%s'\nShould be a date of death (mm/yyyy or .). Exiting.\n",strb, linei,i,line); | |
| exit(1); | |
| } | |
| andc[i]=(double) year; | |
| moisdc[i]=(double) month; | |
| strcpy(line,stra); | |
| cutv(stra, strb,line,' '); | |
| if(iout=sscanf(strb,"%d/%d",&month, &year) != 0){ | |
| } | |
| else if(iout=sscanf(strb,"%s.") != 0){ | |
| month=99; | |
| year=9999; | |
| }else{ | |
| printf("Error reading data around '%s' at line number %ld %s for individual %d, '%s'\nShould be a date of birth (mm/yyyy or .). Exiting.\n",strb, linei,i,line,j); | |
| exit(1); | |
| } | |
| annais[i]=(double)(year); | |
| moisnais[i]=(double)(month); | |
| strcpy(line,stra); | |
| cutv(stra, strb,line,' '); | |
| errno=0; | |
| lval=strtol(strb,&endptr,10); | |
| if( strb[0]=='\0' || (*endptr != '\0')){ | |
| printf("Error reading data around '%d' at line number %ld %s for individual %d\nShould be a weight. Exiting.\n",lval, i,line,linei); | |
| exit(1); | |
| } | |
| weight[i]=(double)(lval); | |
| strcpy(line,stra); | |
| for (j=ncovcol;j>=1;j--){ | |
| cutv(stra, strb,line,' '); | |
| errno=0; | |
| lval=strtol(strb,&endptr,10); | |
| if( strb[0]=='\0' || (*endptr != '\0')){ | |
| printf("Error reading data around '%d' at line number %ld %s for individual %d, '%s'\nShould be a covar (meaning 0 for the reference or 1). Exiting.\n",lval, linei,i, line); | |
| exit(1); | |
| } | |
| if(lval <-1 || lval >1){ | |
| printf("Error reading data around '%d' at line number %ld %s for individual %d, '%s'\nShould be a value of the %d covar (meaning 0 for the reference or 1. IMaCh does not build design variables, do it your self). Exiting.\n",lval,linei, i,line,j); | |
| exit(1); | |
| } | } |
| else | covar[j][i]=(double)(lval); |
| num[i]=atol(stra); | strcpy(line,stra); |
| } | |
| /*if((s[2][i]==2) && (s[3][i]==-1)&&(s[4][i]==9)){ | lstra=strlen(stra); |
| printf("%ld %.lf %.lf %.lf %.lf/%.lf %.lf/%.lf %.lf/%.lf %d %.lf/%.lf %d %.lf/%.lf %d %.lf/%.lf %d\n",num[i],(covar[1][i]), (covar[2][i]),weight[i], (moisnais[i]), (annais[i]), (moisdc[i]), (andc[i]), (mint[1][i]), (anint[1][i]), (s[1][i]), (mint[2][i]), (anint[2][i]), (s[2][i]), (mint[3][i]), (anint[3][i]), (s[3][i]), (mint[4][i]), (anint[4][i]), (s[4][i])); ij=ij+1;}*/ | |
| if(lstra > 9){ /* More than 2**32 or max of what printf can write with %ld */ | |
| i=i+1; | stratrunc = &(stra[lstra-9]); |
| } | num[i]=atol(stratrunc); |
| } | } |
| else | |
| num[i]=atol(stra); | |
| /*if((s[2][i]==2) && (s[3][i]==-1)&&(s[4][i]==9)){ | |
| printf("%ld %.lf %.lf %.lf %.lf/%.lf %.lf/%.lf %.lf/%.lf %d %.lf/%.lf %d %.lf/%.lf %d %.lf/%.lf %d\n",num[i],(covar[1][i]), (covar[2][i]),weight[i], (moisnais[i]), (annais[i]), (moisdc[i]), (andc[i]), (mint[1][i]), (anint[1][i]), (s[1][i]), (mint[2][i]), (anint[2][i]), (s[2][i]), (mint[3][i]), (anint[3][i]), (s[3][i]), (mint[4][i]), (anint[4][i]), (s[4][i])); ij=ij+1;}*/ | |
| i=i+1; | |
| } /* End loop reading data */ | |
| fclose(fic); | |
| /* printf("ii=%d", ij); | /* printf("ii=%d", ij); |
| scanf("%d",i);*/ | scanf("%d",i);*/ |
| imx=i-1; /* Number of individuals */ | imx=i-1; /* Number of individuals */ |
| Line 4595 int main(int argc, char *argv[]) | Line 4748 int main(int argc, char *argv[]) |
| printf("cptcovprod=%d ", cptcovprod); | printf("cptcovprod=%d ", cptcovprod); |
| fprintf(ficlog,"cptcovprod=%d ", cptcovprod); | fprintf(ficlog,"cptcovprod=%d ", cptcovprod); |
| scanf("%d ",i); | scanf("%d ",i);*/ |
| fclose(fic);*/ | |
| /* if(mle==1){*/ | /* if(mle==1){*/ |
| if (weightopt != 1) { /* Maximisation without weights*/ | if (weightopt != 1) { /* Maximisation without weights*/ |
| Line 4645 int main(int argc, char *argv[]) | Line 4797 int main(int argc, char *argv[]) |
| } | } |
| } | } |
| 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 | years but with the precision of a month */ |
| month */ | |
| agev[m][i]=(mint[m][i]/12.+1./24.+anint[m][i])-(moisnais[i]/12.+1./24.+annais[i]); | agev[m][i]=(mint[m][i]/12.+1./24.+anint[m][i])-(moisnais[i]/12.+1./24.+annais[i]); |
| if((int)mint[m][i]==99 || (int)anint[m][i]==9999) | if((int)mint[m][i]==99 || (int)anint[m][i]==9999) |
| agev[m][i]=1; | agev[m][i]=1; |
| Line 4822 Interval (in months) between two waves: | Line 4973 Interval (in months) between two waves: |
| p=param[1][1]; /* *(*(*(param +1)+1)+0) */ | p=param[1][1]; /* *(*(*(param +1)+1)+0) */ |
| globpr=0; /* To get the number ipmx of contributions and the sum of weights*/ | globpr=0; /* To get the number ipmx of contributions and the sum of weights*/ |
| if (mle==-3){ | if (mle==-3){ |
| ximort=matrix(1,NDIM,1,NDIM); | ximort=matrix(1,NDIM,1,NDIM); |
| cens=ivector(1,n); | cens=ivector(1,n); |
| Line 4831 Interval (in months) between two waves: | Line 4983 Interval (in months) between two waves: |
| for (i=1; i<=imx; i++){ | for (i=1; i<=imx; i++){ |
| dcwave[i]=-1; | dcwave[i]=-1; |
| for (j=1; j<=lastpass; j++) | for (m=firstpass; m<=lastpass; m++) |
| if (s[j][i]>nlstate) { | if (s[m][i]>nlstate) { |
| dcwave[i]=j; | dcwave[i]=m; |
| /* printf("i=%d j=%d s=%d dcwave=%d\n",i,j, s[j][i],dcwave[i]);*/ | /* printf("i=%d j=%d s=%d dcwave=%d\n",i,j, s[j][i],dcwave[i]);*/ |
| break; | break; |
| } | } |
| Line 4842 Interval (in months) between two waves: | Line 4994 Interval (in months) between two waves: |
| for (i=1; i<=imx; i++) { | for (i=1; i<=imx; i++) { |
| if (wav[i]>0){ | if (wav[i]>0){ |
| ageexmed[i]=agev[mw[1][i]][i]; | ageexmed[i]=agev[mw[1][i]][i]; |
| j=wav[i];agecens[i]=1.; | j=wav[i]; |
| if (ageexmed[i]>1 & wav[i]>0) agecens[i]=agev[mw[j][i]][i]; | agecens[i]=1.; |
| cens[i]=1; | |
| if (ageexmed[i]> 1 && wav[i] > 0){ | |
| if (ageexmed[i]<1) cens[i]=-1; | agecens[i]=agev[mw[j][i]][i]; |
| if (agedc[i]< AGESUP & agedc[i]>1 & dcwave[i]>firstpass & dcwave[i]<=lastpass) cens[i]=0 ; | cens[i]= 1; |
| }else if (ageexmed[i]< 1) | |
| cens[i]= -1; | |
| if (agedc[i]< AGESUP && agedc[i]>1 && dcwave[i]>firstpass && dcwave[i]<=lastpass) | |
| cens[i]=0 ; | |
| } | } |
| else cens[i]=-1; | else cens[i]=-1; |
| } | } |
| Line 4856 Interval (in months) between two waves: | Line 5012 Interval (in months) between two waves: |
| for (j=1;j<=NDIM;j++) | for (j=1;j<=NDIM;j++) |
| ximort[i][j]=(i == j ? 1.0 : 0.0); | ximort[i][j]=(i == j ? 1.0 : 0.0); |
| } | } |
| p[1]=0.1; p[2]=0.1; | p[1]=0.0268; p[NDIM]=0.083; |
| /*printf("%lf %lf", p[1], p[2]);*/ | /*printf("%lf %lf", p[1], p[2]);*/ |
| printf("Powell\n"); fprintf(ficlog,"Powell\n"); | printf("Powell\n"); fprintf(ficlog,"Powell\n"); |
| strcpy(filerespow,"pow-mort"); | strcpy(filerespow,"pow-mort"); |
| strcat(filerespow,fileres); | strcat(filerespow,fileres); |
| if((ficrespow=fopen(filerespow,"w"))==NULL) { | if((ficrespow=fopen(filerespow,"w"))==NULL) { |
| printf("Problem with resultfile: %s\n", filerespow); | printf("Problem with resultfile: %s\n", filerespow); |
| fprintf(ficlog,"Problem with resultfile: %s\n", filerespow); | fprintf(ficlog,"Problem with resultfile: %s\n", filerespow); |
| } | } |
| fprintf(ficrespow,"# Powell\n# iter -2*LL"); | fprintf(ficrespow,"# Powell\n# iter -2*LL"); |
| /* for (i=1;i<=nlstate;i++) | /* for (i=1;i<=nlstate;i++) |
| for(j=1;j<=nlstate+ndeath;j++) | for(j=1;j<=nlstate+ndeath;j++) |
| if(j!=i)fprintf(ficrespow," p%1d%1d",i,j); | if(j!=i)fprintf(ficrespow," p%1d%1d",i,j); |
| */ | */ |
| fprintf(ficrespow,"\n"); | fprintf(ficrespow,"\n"); |
| powell(p,ximort,NDIM,ftol,&iter,&fret,gompertz); | powell(p,ximort,NDIM,ftol,&iter,&fret,gompertz); |
| fclose(ficrespow); | fclose(ficrespow); |
| hesscov(matcov, p, NDIM,delti, 1e-4, gompertz); | hesscov(matcov, p, NDIM, delti, 1e-4, gompertz); |
| for(i=1; i <=NDIM; i++) | for(i=1; i <=NDIM; i++) |
| for(j=i+1;j<=NDIM;j++) | for(j=i+1;j<=NDIM;j++) |
| Line 4896 Interval (in months) between two waves: | Line 5052 Interval (in months) between two waves: |
| for (i=1;i<=NDIM;i++) | for (i=1;i<=NDIM;i++) |
| printf("%f [%f ; %f]\n",p[i],p[i]-2*sqrt(matcov[i][i]),p[i]+2*sqrt(matcov[i][i])); | printf("%f [%f ; %f]\n",p[i],p[i]-2*sqrt(matcov[i][i]),p[i]+2*sqrt(matcov[i][i])); |
| lsurv=vector(1,AGESUP); | lsurv=vector(1,AGESUP); |
| lpop=vector(1,AGESUP); | lpop=vector(1,AGESUP); |
| tpop=vector(1,AGESUP); | tpop=vector(1,AGESUP); |
| lsurv[agegomp]=100000; | lsurv[agegomp]=100000; |
| for (k=agegomp;k<=AGESUP;k++) { | for (k=agegomp;k<=AGESUP;k++) { |
| agemortsup=k; | agemortsup=k; |
| if (p[1]*exp(p[2]*(k-agegomp))>1) break; | if (p[1]*exp(p[2]*(k-agegomp))>1) break; |
| } | } |
| for (k=agegomp;k<agemortsup;k++) | for (k=agegomp;k<agemortsup;k++) |
| lsurv[k+1]=lsurv[k]-lsurv[k]*(p[1]*exp(p[2]*(k-agegomp))); | lsurv[k+1]=lsurv[k]-lsurv[k]*(p[1]*exp(p[2]*(k-agegomp))); |
| for (k=agegomp;k<agemortsup;k++){ | for (k=agegomp;k<agemortsup;k++){ |
| lpop[k]=(lsurv[k]+lsurv[k+1])/2.; | lpop[k]=(lsurv[k]+lsurv[k+1])/2.; |
| sumlpop=sumlpop+lpop[k]; | sumlpop=sumlpop+lpop[k]; |
| } | } |
| tpop[agegomp]=sumlpop; | tpop[agegomp]=sumlpop; |
| for (k=agegomp;k<(agemortsup-3);k++){ | for (k=agegomp;k<(agemortsup-3);k++){ |
| /* tpop[k+1]=2;*/ | /* tpop[k+1]=2;*/ |
| tpop[k+1]=tpop[k]-lpop[k]; | tpop[k+1]=tpop[k]-lpop[k]; |
| } | } |
| printf("\nAge lx qx dx Lx Tx e(x)\n"); | printf("\nAge lx qx dx Lx Tx e(x)\n"); |
| for (k=agegomp;k<(agemortsup-2);k++) | for (k=agegomp;k<(agemortsup-2);k++) |
| printf("%d %.0lf %lf %.0lf %.0lf %.0lf %lf\n",k,lsurv[k],p[1]*exp(p[2]*(k-agegomp)),(p[1]*exp(p[2]*(k-agegomp)))*lsurv[k],lpop[k],tpop[k],tpop[k]/lsurv[k]); | printf("%d %.0lf %lf %.0lf %.0lf %.0lf %lf\n",k,lsurv[k],p[1]*exp(p[2]*(k-agegomp)),(p[1]*exp(p[2]*(k-agegomp)))*lsurv[k],lpop[k],tpop[k],tpop[k]/lsurv[k]); |
| replace_back_to_slash(pathc,path); /* Even gnuplot wants a / */ | replace_back_to_slash(pathc,path); /* Even gnuplot wants a / */ |
| printinggnuplotmort(fileres, optionfilefiname,ageminpar,agemaxpar,fage, pathc,p); | printinggnuplotmort(fileres, optionfilefiname,ageminpar,agemaxpar,fage, pathc,p); |
| printinghtmlmort(fileres,title,datafile, firstpass, lastpass, \ | printinghtmlmort(fileres,title,datafile, firstpass, lastpass, \ |
| stepm, weightopt,\ | stepm, weightopt,\ |
| model,imx,p,matcov,agemortsup); | model,imx,p,matcov,agemortsup); |
| free_vector(lsurv,1,AGESUP); | free_vector(lsurv,1,AGESUP); |
| free_vector(lpop,1,AGESUP); | free_vector(lpop,1,AGESUP); |
| free_vector(tpop,1,AGESUP); | free_vector(tpop,1,AGESUP); |
| } /* Endof if mle==-3 */ | } /* Endof if mle==-3 */ |
| else{ /* For mle >=1 */ | else{ /* For mle >=1 */ |
| likelione(ficres, p, npar, nlstate, &globpr, &ipmx, &sw, &fretone, funcone); /* Prints the contributions to the likelihood */ | likelione(ficres, p, npar, nlstate, &globpr, &ipmx, &sw, &fretone, funcone); /* Prints the contributions to the likelihood */ |
| Line 5476 lsurv=vector(1,AGESUP); | Line 5632 lsurv=vector(1,AGESUP); |
| free_ma3x(probs,1,AGESUP,1,NCOVMAX, 1,NCOVMAX); | free_ma3x(probs,1,AGESUP,1,NCOVMAX, 1,NCOVMAX); |
| } /* mle==-3 arrives here for freeing */ | } /* mle==-3 arrives here for freeing */ |
| free_matrix(prlim,1,nlstate,1,nlstate); | |
| free_matrix(pmmij,1,nlstate+ndeath,1,nlstate+ndeath); | free_matrix(pmmij,1,nlstate+ndeath,1,nlstate+ndeath); |
| free_matrix(oldms, 1,nlstate+ndeath,1,nlstate+ndeath); | free_matrix(oldms, 1,nlstate+ndeath,1,nlstate+ndeath); |
| free_matrix(newms, 1,nlstate+ndeath,1,nlstate+ndeath); | free_matrix(newms, 1,nlstate+ndeath,1,nlstate+ndeath); |
| free_matrix(savms, 1,nlstate+ndeath,1,nlstate+ndeath); | free_matrix(savms, 1,nlstate+ndeath,1,nlstate+ndeath); |
| free_matrix(covar,0,NCOVMAX,1,n); | free_matrix(covar,0,NCOVMAX,1,n); |
| free_matrix(matcov,1,npar,1,npar); | free_matrix(matcov,1,npar,1,npar); |
| /*free_vector(delti,1,npar);*/ | /*free_vector(delti,1,npar);*/ |
| Line 5495 lsurv=vector(1,AGESUP); | Line 5651 lsurv=vector(1,AGESUP); |
| free_ivector(Tage,1,15); | free_ivector(Tage,1,15); |
| free_ivector(Tcode,1,100); | free_ivector(Tcode,1,100); |
| free_imatrix(nbcode,0,NCOVMAX,0,NCOVMAX); | |
| free_imatrix(codtab,1,100,1,10); | |
| fflush(fichtm); | fflush(fichtm); |
| fflush(ficgp); | fflush(ficgp); |
| Line 5530 lsurv=vector(1,AGESUP); | Line 5687 lsurv=vector(1,AGESUP); |
| /*------ End -----------*/ | /*------ End -----------*/ |
| chdir(path); | chdir(path); |
| strcpy(plotcmd,"\""); | /*strcat(plotcmd,CHARSEPARATOR);*/ |
| strcat(plotcmd,pathimach); | sprintf(plotcmd,"gnuplot"); |
| strcat(plotcmd,GNUPLOTPROGRAM); | #ifndef UNIX |
| strcat(plotcmd,"\""); | sprintf(plotcmd,"\"%sgnuplot.exe\"",pathimach); |
| strcat(plotcmd," "); | #endif |
| strcat(plotcmd,optionfilegnuplot); | if(!stat(plotcmd,&info)){ |
| printf("Starting graphs with: %s",plotcmd);fflush(stdout); | printf("Error gnuplot program not found: %s\n",plotcmd);fflush(stdout); |
| if(!stat(getenv("GNUPLOTBIN"),&info)){ | |
| printf("Error gnuplot program not found: %s Environment GNUPLOTBIN not set.\n",plotcmd);fflush(stdout); | |
| }else | |
| strcpy(pplotcmd,plotcmd); | |
| #ifdef UNIX | |
| strcpy(plotcmd,GNUPLOTPROGRAM); | |
| if(!stat(plotcmd,&info)){ | |
| printf("Error gnuplot program not found: %s\n",plotcmd);fflush(stdout); | |
| }else | |
| strcpy(pplotcmd,plotcmd); | |
| #endif | |
| }else | |
| strcpy(pplotcmd,plotcmd); | |
| sprintf(plotcmd,"%s %s",pplotcmd, optionfilegnuplot); | |
| printf("Starting graphs with: %s\n",plotcmd);fflush(stdout); | |
| if((outcmd=system(plotcmd)) != 0){ | if((outcmd=system(plotcmd)) != 0){ |
| printf(" Problem with gnuplot\n"); | printf("\n Problem with gnuplot\n"); |
| } | } |
| printf(" Wait..."); | printf(" Wait..."); |
| while (z[0] != 'q') { | while (z[0] != 'q') { |