/* rsw - regrouping method version 1.0 grf used to establish levels in a flat file version 1.1 clh add subroutine to return column widths - iowidth_() version 1.11 clh fixed rsw to respect the re-ordering of variables */ #if HP || IBM #define jdbopen_ jdbopen #define jdbreada_ jdbreada #define jdbread_ jdbread #define jdbclose_ jdbclose #define jdbcomments_ jdbcomments #define jdblevel_ jdblevel #define jdbattributes_ jdbattributes #endif #include #include double atof(); #include /* #define DEBUG */ #define TOKEN 40 #define NVAR 250 #define COMMSIZE 2048 int nlevels,nnames; int firstvar[6]; char names[NVAR][TOKEN]; int fldwidths[NVAR]; int namesize=TOKEN; char values[NVAR][TOKEN]; char comp[NVAR][TOKEN]; int valuesize=TOKEN; int handle; int minlevelread; char comments[COMMSIZE]; #define TOK2 42 char ss[NVAR][TOK2]; int ns=0; int newlev[NVAR]; int newpntr[NVAR]; int newlpntr[11]; int maxoutlev; int ioreadrec_(level) int *level; { int clevel,i; if(*level == minlevelread) { minlevelread= *level+1; return 1; } else if(*level >minlevelread) return 0; while(1){ clevel=jdbreada_(&handle,values,&valuesize); /* printf("clevel %d\n",clevel); */ if(clevel<0){ minlevelread= -1; return 0; }; for(i=firstvar[clevel];i='0' && s[i][0]<='9' && s[i][1]==':'){ strcpy(ss[ns++],s[i]); s[i][0]='\0'; }; j=0; firstvar[j]=0; for(i=0;ij) firstvar[++j]=i; }; maxoutlev= -1; m=0; for(k=0;kmaxoutlev){maxoutlev=i;newlpntr[maxoutlev]=m;}; if(tmp[2]=='*'){ for(j=0;j