CRESTS(ID:1873/cre005)Courtaulds Rapid Extract, Sort and Tabulate SystemReferences: CRESTS is a fast, single pass compiler with simple checkout facilities, which compiles from a source program language consisting of instructions which make initial flow charting of a problem unnecessary. These macro instructions provide facilities for selecting, processing, writing to magnetic tape, printing, looking up codes and sorting items, leaving the programmer with no concern for peripheral handling and machine organization. Time sharing and setting up of work areas is completely automatic. A summary description of all functions available in the language is given here in order to indicate the scope of the CRESTS system. EXTRACTInitiates a loop which will process each item of the input file, sequentially, according to the subsequent instructions. A provision is made for this instruction to read two files simultaneously, so that independent items from the two input files may be collated to produce the output. Thus one file may be a look-up table for the other. A label may also be specified in this instruction for error conditions during execution: for instance, a zero division, or a non-valid table-look-up code. In the case of an error condition being found, the contents of the field specified are then typed out on the console, and the item is rejected.SELECTThis function is a comprehensive range of instructions which may have one of two results. Fields from either input file or previously defined work location can be compared under any conditions (equal, not equal, greater than, etc.) with a constant or any other field, and a chain of AND/OR tests may be built up on these comparisons. If the test succeeds, control passes to the next instruction; if it fails there are the following two possibilities: the item may be wholly rejected, and the next item made available for processing, or the compounded test may be treated as a conditional branch out of the normal sequence of instructions.CALCULATEThis provides the simple arithmetic functions of add, subtract, multiply and divide. Operands may be fields or constants.TABLE LOOK-UPThis function is available in main memory for small tables (as opposed to that for large tables for which the "Extract" instruction will "look-up" from magnetic tape). The table is set up in core by the programmer by means of a special data-formatting instruction. This instruction then replaces a coded input field with a name in "clear."WRITEThis instruction constructs a new magnetic tape, all the fields specified in the instruction being placed in order in the new item. Each item selected from the master tape by the previous "extract" instruction and subsequent selection, forms the basis of each item written on the new tape. When all master items have been processed the file is closed and control passes to the next instruction. The newly created tape may subsequently be used as input for further processing without respecification of data input format.HALTThis instruction provides a temporary halt for tape changing or other operator function. Comments attached to the halt instruction are typed out on the console at execution time.TITLEThis provides a title for a report. It should be used only for heading a printed report, not for printing comments on the high-speed printer.OVERFLOWThis provides a page heading for each new page of the report.CONTROL BREAKUp to nine levels of control break are allowed. A change in the contents of a specified field between one item and the next in sequence interrupts print-out of sequential items to print subtotals, then initiates a new subsequence with a subheading before returning control to the sequential printing. A higher-level control break initiates the printing of subtotals at all lower levels (lowest level first) and then the headings at that level and lower, and then returns to the sequential processing.TOTALSThese instructions specify the level of the total referenced by the control break, and the fields to be printed at this level as totals. Automatic clearing of subtotals may be used; editing is also provided for. Automatic sterling conversion may be specified.HEADINGSHeadings also have a level referenced by the control break. Editing may be used, and a new page may be selected at any particular level of heading.SORTAn entire file of data may be sorted in ascending or descending order of the fields specified. The first field specified is the major sort key, and subsequent fields are more minor sort keys respectively. Up to ten keys may be specified.JUMPThis instruction allows an unconditional jump out of the normal sequence of instructions. Up to 99 labels are available in each segment of the CRESTS program. The JUMP instruction references one of these labels which is attached to an instruction.EXECUTEThis allows a large program to be split into segments for processing. Processing of any one file may not be taken across a segment barrier, but no re-specification of data format is necessary across a barrier. The SORT function automatically forms a segment barrier (this allows SORT to use the maximum core area available) without an EXECUTE directive being specified.ENDThis is an assembly control statement which terminates compilation. In the checkout phase this will direct the machine to halt. In the execution phase, it will pass control immediately to execution unless errors have been discovered in the source program. Instructions which are in error are reproduced on the high-speed printer with an asterisk overwriting the part found faulty. If there are other source program errors such as an unset label, this is indicated at the end of the list of errors. Comments against the END directive are typed out on the console at execution time.Extract: Conclusion ConclusionCRESTS in use appears to have many considerable advantages over all other systems for the particular job of producing "one-off" statistical reports. As a language it is more logical for a programmer to use than the tabulator simulators which require completion of parameter cards. It also has decided advantages in the facilities for sorting and looking up tables, handling two input tapes and producing output tapes. With these considerations in mind, one might be tempted to compare it with COBOL, but it certainly lacks a great deal of the sophistication of COBOL and there are many "commercial" jobs which CRESTS could not be used for. On the other hand, it has the advantage in speed over COBOL. The first real job attempted in CRESTS involved two sorts, extracting a price against a code number from one tape to correlate with another (also indicating codes for which no price was known) and producing three reports depending on a unit code. Each report had different control breaks. Sub-totals with additional handling charges had to be computed. The estimated time to program this job in Easycoder (the H.200 assembly language) was 2 weeks, and in COBOL, three days. In CRESTS the program was running within four hours; it contained two simple program errors and one punch error, which were eli- minated in two attempts. The program compiled in ten seconds, performed two sorts and one "look up" pass on three thousand 80-character items in about four minutes, and then proceeded to print the report at almost maximum printer speed. The last five programs that the author has written in the CRESTS language have all worked first time, all having been written in an afternoon. Acknowledgements must be made to Honeywell software. The entire system of tape handling is under control of the tape control package—the speed of the system is due to its simple facilities for time sharing, and its flexibility has made it very easy to use in the design of the CRESTS system. The system is operated through the Honeywell "MODI" operating system, facilitating the use of other software (for example, the SORT function) within the system, and ensuring the compatibility with all standard forms of input/output. in The Computer Journal 9(1) May 1966 view details Extract: The approach to a solution The approach to a solution In the last few years there has been an increasing interest in general programming systems which attempt to solve this problem by providing some special language or program which takes advantage of the basic similarity of all tasks which consist of extracting and presenting data. Within this broad classification we can however define two main divisions. These we may call Technical Information Retrieval (TIR) exemplified by the retrieval of relevant abstracts from scientific journals and Management Information Retrieval (MIR) exemplified by sales analyses. Table 1 displays the difference between the two types of retrieval situation. A typical TIR request might be: 'Print the complete abstracts of any article written in 1969 and appearing in the Operational Research Quarterly or the Journal of the 0. R. Society of America which deals with the use of simulation or model building in marketing or with the implementation of marketing models, but excluding any article written by J. Smith or any article referring to Dynamic Programming Techniques.' A typical MIR request: 'Print the customer, product, date, sales reference number and value of all invoices with a value of less than £10 for product group X, area Y, during May. Compute the gross margin as a percentage of invoice value and print this next to the value. Sequence the results by date within product within customer and give totals of values and average of gross margin on change of customer or product.' Although most information retrieval programming systems are capable of work in both areas, the impetus for their creation has usually come from one in particular. FIND (I.C.L., 1966) and SPECOL (Smith, 1968), for example, are aimed primarily at Technical Information Retrieval. Systems directed at Management Information Retrieval include NITA and FILETAB (N.C.C., 1969), CRESTS (Craig, 1966), the Sales Management Information Retrieval System of the Metal Box Company (Gearing, Reynolds & Sears, 1968) and all R.P.G. Systems. in The Computer Journal 13(2) 1970 view details |