4
#include "../machine.h"
8
readau(flag,nevprt,t,xd,x,nx,z,nz,tvec,ntvec,rpar,nrpar,
9
ipar,nipar,inptr,insz,nin,outptr,outsz,nout)
11
ipar[1] = lfil : file name length
12
ipar[2:4] = fmt : numbers type ascii code
14
ipar[6] = n : buffer length in number of records
15
ipar[7] = maxvoie : record size
17
ipar[9] = first : first record to read
18
ipar[10:9+lfil] = character codes for file name
20
integer *flag,*nevprt,*nx,*nz,*ntvec,*nrpar,ipar[],*nipar;
21
integer insz[],*nin,outsz[],*nout;
22
double x[],xd[],z[],tvec[],rpar[];
23
double *inptr[],*outptr[],*t;
26
char str[100],type[4];
29
int n, k, kmax, no, lfil, m, i, irep, nm, ierr;
30
double *buffer,*record;
33
/* div_t divt;*/int quot, rem;
34
double SCALE=0.000030517578125;
35
/* int ETAB[8]={0, 132, 396, 924, 1980, 4092, 8316, 16764}; */
44
ETAB[0]=0; ETAB[1]=132; ETAB[2]= 396; ETAB[3]=924; ETAB[4]=1980;
45
ETAB[5]=4092; ETAB[6]=8316; ETAB[7]=16764;
49
fd=(FILE *)(long)z[3];
53
k : record counter within the buffer
54
kmax : number of records in the buffer
60
/* copy current record to output */
61
record=buffer+(k-1)*ipar[7];
72
/* comment out for SUNOS SS 8/10/99
77
quot=mu/16;rem=mu-16*quot;
81
y=ldexp((double)(f),(e+2));
83
y=((double) f) * pow(two, ff); */
87
y=SCALE*(1-2*sig)*(e+y);
94
if (k>=kmax&&kmax==n) {
95
/* read a new buffer */
97
F2C(cvstr)(&three,&(ipar[2]),type,&job);
99
if (type[i]!=' ') { type[i+1]='\0';break;}
101
mget2(fd,ipar[8],buffer,m,type,&ierr);
103
sciprint("Read error!\n");
109
else if (ierr<0) { /* EOF reached */
110
kmax=-(ierr+1)/ipar[7];
123
F2C(cvstr)(&(ipar[1]),&(ipar[10]),str,&job);
125
fd = fopen(str,"rb");
127
sciprint("Could not open the file!\n");
132
/* skip first records */
134
F2C(cvstr)(&three,&(ipar[2]),type,&job);
136
if (type[i]!=' ') { type[i+1]='\0';break;}
137
offset=(ipar[9]-1)*ipar[7]*sizeof(char);
138
irep = fseek(fd,offset,0) ;
141
sciprint("Read error\r\n");
148
/* read first buffer */
150
F2C(cvstr)(&three,&(ipar[2]),type,&job);
152
if (type[i]!=' ') { type[i+1]='\0';break;}
153
mget2(fd,ipar[8],buffer,m,type,&ierr);
155
sciprint("Read error!\n");
161
else if (ierr<0) { /* EOF reached */
162
kmax=-(ierr+1)/ipar[7];