/* $Id$
$State$
$Log$
+ 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
#include <string.h>
#include <unistd.h>
+#include <limits.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
extern long time();
char strcurr[80], strfor[80];
+char *endptr;
+long lval;
+
#define NR_END 1
#define FREE_ARG char*
#define FTOL 1.0e-10
{
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 linei;
int jj, ll, li, lj, lk, imk;
int numlinepar=0; /* Current linenumber of parameter file */
int itimes;
}
fflush(ficlog);
-
p=param[1][1];
/* Reads comments: lines beginning with '#' */
ncodemax=ivector(1,8);
i=1;
- while (fgets(line, MAXLINE, fic) != NULL) {
- if ((i >= firstobs) && (i <=lastobs)) {
- for(j=0; line[j] != '\n';j++){ /* Untabifies line */
+ linei=0;
+ while ((fgets(line, MAXLINE, fic) != NULL) ||((i >= firstobs) && (i <=lastobs))) {
+ linei=linei+1;
+ printf("IIIII= %d linei=%d\n",i,linei);
+ for(j=strlen(line); j>=0;j--){ /* Untabifies line */
if(line[j] == '\t')
line[j] = ' ';
}
+ for(j=strlen(line)-1; (line[j]==' ')||(line[j]==10);j--){;};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,' '); s[j][i]=atoi(strb);
+ 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\nShould be a status of wave %d. Setting maxwav=%d might be wrong. Exiting.\n",lval, i,line,linei,j,maxwav);
+ exit(1);
+ }
+ s[j][i]=lval;
+
+ 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 year of exam at wave %d. Exiting.\n",lval, i,line,linei,j);
+ exit(1);
+ }
+ anint[j][i]=(double)(lval);
+
+ 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 month of exam at wave %d. Exiting.\n",lval, i,line, linei,j);
+ exit(1);
+ }
+ mint[j][i]=(double)(lval);
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);
}
- cutv(stra, strb,line,'/'); andc[i]=(double)(atoi(strb)); strcpy(line,stra);
- cutv(stra, strb,line,' '); moisdc[i]=(double)(atoi(strb)); strcpy(line,stra);
-
- cutv(stra, strb,line,'/'); annais[i]=(double)(atoi(strb)); strcpy(line,stra);
- cutv(stra, strb,line,' '); moisnais[i]=(double)(atoi(strb)); 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 year of death. Exiting.\n",lval, i,line,linei);
+ exit(1);
+ }
+ andc[i]=(double)(lval);
+ 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 month of death. Exiting.\n",lval,i,line, linei);
+ exit(1);
+ }
+ moisdc[i]=(double)(lval);
+
+ 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 year of birth. Exiting.\n",lval, i,line, linei);
+ exit(1);
+ }
+ annais[i]=(double)(lval);
+
+ 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 month of birth. Exiting.\n",lval,i,line,linei);
+ exit(1);
+ }
+ moisnais[i]=(double)(lval);
+ 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);
- cutv(stra, strb,line,' '); weight[i]=(double)(atoi(strb)); strcpy(line,stra);
for (j=ncovcol;j>=1;j--){
- cutv(stra, strb,line,' '); covar[j][i]=(double)(atoi(strb)); 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 covar (meaning 0 for the reference or 1). Exiting.\n",lval, i,line,linei);
+ exit(1);
+ }
+ if(lval <0 || lval >1){
+ printf("Error reading data around '%d' at line number %ld %s for individual %d\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,i,line,linei,j);
+ exit(1);
+ }
+ covar[j][i]=(double)(lval);
+ strcpy(line,stra);
}
lstra=strlen(stra);
+
if(lstra > 9){ /* More than 2**32 or max of what printf can write with %ld */
stratrunc = &(stra[lstra-9]);
num[i]=atol(stratrunc);
}
else
num[i]=atol(stra);
-
+ printf ("num [i] %ld %d\n",i, num[i]);fflush(stdout);
/*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 */
/* printf("ii=%d", ij);
scanf("%d",i);*/
imx=i-1; /* Number of individuals */