/************************************************************************************/ /* NOTES: 1. THE DATA FILE SHOULD HAVE FIXED LINE LENGTH. */ /* 2. THE PARAMETER LIST FILE MUST HAVE A SEPARATE LINE FOR EACH LOCATION */ /* AND LENGTH DESCRIPTION. EXAMPLE (ANES 1994): */ /* 768 1 */ /* 1434 1 */ /* 1435 1 */ /* 70 2 */ /* 205 1 */ /* 3. COMMAND LINE IS: getter data.file parameterlist.file output.file */ /************************************************************************************/ #include #define BUFSIZE 1 #define LINELEN 4000 main(argc, argv) int argc; char *argv[]; { int f1, f2, f3, n, i, j; int linesize = 0, counter = 0, numparams = 0; int paramloc[512], paramsize[512]; char buf[BUFSIZE+1], c, temp[10], temp2[10], linebuf[LINELEN]; if (argc != 4) error("getter: You must stipulate input file and variable list"); if ((f1 = open(argv[1], 0)) == -1) error("getter: Can't open %s", argv[1]); if ((f2 = open(argv[2], 0)) == -1) error("getter: Can't open %s", argv[2]); if ((f3 = creat(argv[3], 0644)) == -1) error("getter: Can't create %s",argv[2]); /* READ THE PARAMETER LIST OF VARIABLE LOCATIONS AND SIZES */ while((n = read(f2,buf,BUFSIZE)) > 0 && buf[0] != EOF) { linebuf[linesize] = buf[0]; linesize++; if (buf[0] == '\n') { i = 0; while (linebuf[i] != ' ') { temp[i] = linebuf[i]; i++; } temp[i] = '\0'; i++; paramloc[numparams] = atoi(temp); j=0; while (linebuf[i] != '\n') { temp2[j] = linebuf[i]; i++; j++; } temp2[i] = '\0'; paramsize[numparams] = atoi(temp2); numparams++; linebuf[linesize] = '\0'; linesize = 0; } } /* PRINT OUT THE SEARCH PARAMETERS */ for (i=0;i< numparams; i++) { printf(" paramloc: %d\t",paramloc[i]); printf(" "); printf(" paramsize: %d\t",paramsize[i]); printf("\n"); } /* READ THE INPUT FILE BY LINES */ while ((n = read(f1,buf,BUFSIZE)) > 0 && buf[0] != EOF) { linebuf[linesize] = buf[0]; linesize++; if (buf[0] == '\n') { linebuf[linesize] = '\0'; temp[0] = ' '; for(i=0; i<= numparams-1; i++) { for(j=paramloc[i]-1; j