/* ****************************************************************** * * * File : rs.c * * * * Purpose : * * * * Version Number : 1.6 * * * * Revision History : * * * * Date Developer * * ---- --------- * * used to establish levels in a flat file * */ char rs_version[]="rs version 1.6 28 Jan 99"; /* * 28 Jan 99 wjs * * Use path_info_routines to control PATH_INFO; change * * PATH_INFO just before needed; change it back when done * * Add version string; reorder comments * * [Needs path_info_routines 1.1 or later (.c & .h)] * * [Begin 1.6] * * June 1997 grf * * changed sub names to in_xxxx, fixes for v 1.5 * * May 1997 Glenn Flierl * * changed error calls to use error_ in outer.c * * May 21, 1996 clh * * iovalreal change to allow alpha vars to begin with digits * * March 1996 clh * * use minbufsize.h to determine size of buffers * * January 1996 clh * * fixed rsw to respect the re-ordering of variables * * July 1995 clh * * add subroutine to return column widths - iowidth_() * ****************************************************************** */ #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 #include #include #include OPTIONS #include INNEROPTIONS #include "path_info_routines.h" double strtod(); /* #define DEBUG */ int nlevels,nnames; int firstvar[6]; char names[NVAR][VARNAMESIZE]; int fldwidths[NVAR]; int namesize=VARNAMESIZE; char values[NVAR][DATUMSIZE]; char comp[NVAR][DATUMSIZE]; int valuesize=DATUMSIZE; int handle; int minlevelread; char comments[COMMENTSIZE]; char ss[NVAR][DATUMSIZE]; int ns=0; int newlev[NVAR]; int newpntr[NVAR]; int newlpntr[11]; int maxoutlev; void in_getwidth(); 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