History of DELIMIT _______ DELIMIT was created when a friend needed to do some budget _______ analysis. The accounting reports were 100 pages long, and we needed to get the department totals into a spread sheet for analysis. There were 3 choices: 1) Ask the computer operators to create an ad hoc report in a difficult to use report writing system, and import it into the spread sheet. They were back logged, so it would have taken a couple of weeks, (and the next time the requirements would have been different, and we would have to wait weeks again.) 2) Import the entire report into the spread sheet, and delete the detail records. (the spread sheet couldn't handle that many lines). 3) Use a text editor to delete the detail lines, and then import it into the spread sheet. This would have been very tedious! We tested parsing 1 page of the accounting report in a spread sheet program. Reading the text file was quick, but parsing it took a long time - it would have literally taken HOURS to parse the hundred pages of data we needed. We didn't need all the columns that were included on the report anyway. DELIMIT v1.00 was created. We could INCLUDE the records we _______ wanted and ignore the rest (Detail parm). We could also select the columns we wanted and ignore the others. The data was either text - surrounded by double quotes, (Character parm) or numbers (Number parm). What would have taken hours to parse took just a few minutes using DELIMIT. The spread sheet program could read _______ the text file quickly, and the time consuming parse was not needed. Several weeks later, we needed to do the same thing, but wanted all the detail records for a 20 page section of the report, not just the totals. There was no unique way to identify the detail records, but we could identify the records we didn't want. This is when the Header parm was added, to select records to EXCLUDE from the processing, and process the rest. Somewhere along the line, someone else needed to DELIMIT a file, _______ but their destination program didn't want text surrounded by double quotes. This is when the Move parameter was created, to select the text, but not surround it with double quotes. Another person saw this and said, "this is great!, but why do I have to print the report first, why can't I just copy the data file from the mini computer?" This represented a two changes. The first change was that the source file was no longer a report. The data file from the mini was fixed format, with NO record separators. This is when the Length parm was created, to be able to read files with no record separators. The second problem was that the records were longer than 255 characters. The input buffers can now work with records up to 4000 bytes. During another project, we needed to bring a data file from a main frame tape, to a Macintosh (Mac). The Mac doesn't understand comma delimited files, it doesn't like double quotes or Carriage Return - Line Feed (CR-LF) for the record separator either. This produced the Separator parm, to be able to use any other character (or string) as a field separator. This also produced the Record separator parm, in able to use any other character (or string) as the record separator. After explaining the program to someone, they said, "how can you understand what all those parm files mean?". This lead to the * comment parm, so parm files can be documented. The latest project has been to acquire data from many diverse sources, and import it into a data base. One mainframe source could only supply data on large reel tape. The numeric fields were signed (the last position not a number it is a letter). This produced the Signed Numeric field. It is faster to create one import program, and many DELIMIT parm _______ files to create the format we need, than to continue to write new import programs for the data base. Also the research analysts don't want to program, but they love to DELIMIT. _______ FUTURE ENHANCEMENTS - A constant parm, to add 'constant' data to every record. During one project, data is reformatted from a fixed format file to be imported into a spread sheet. For formatting purposes, the user wants to create blank columns. Currently we just select an area we know will be blank to give the empty field. - A record count parm. Some data by its nature does not have unique keys. A record count parm could be used to create unique keys. Some data bases require a unique key for storage reasons. - A prettier user interface.