CRESTS(ID:1873/cre005)

Courtaulds Rapid Extract, Sort and Tabulate System 





References:
  • Craig, T. K. "CRESTS—Courtaulds Rapid Extract, Sort and Tabulate System" view details Abstract: A language has been devised and a compiler written for the Honeywell 200 series in order to facilitate production of statistical reports. Speed in program writing, compiling, and program execution has been the prime criterion in the design of the system. The language is described in this paper mainly by example. External link: Online copy Extract:
    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.

    EXTRACT

    Initiates 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.

    SELECT

    This 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.

    CALCULATE

    This provides the simple arithmetic functions of add, subtract, multiply and divide. Operands may be fields or constants.

    TABLE LOOK-UP

    This 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."

    WRITE

    This 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.

    HALT

    This 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.

    TITLE

    This 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.

    OVERFLOW

    This provides a page heading for each new page of the report.

    PRINT

    This provides facilities for printing of any input data fields, work locations, constants or results of calculations, with editing and group printing as required. Group printing means that printing of a field is suppressed if the field contains the same data as in the previously printed item. Up to nine lines of print-out are permitted for each item. Incoming data may control the print format, and any number of print formats may be specified; the complete format must be specified for each type.

    CONTROL BREAK

    Up 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.

    TOTALS

    These 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.

    HEADINGS

    Headings 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.

    SORT

    An 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.

    JUMP

    This 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.

    EXECUTE

    This 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.

    END

    This 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

    Conclusion


    CRESTS 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
  • Humphrey, AL and Munro WG "Management information retrieval" The Computer Journal 13(2) 1970 pp127-130 view details Abstract: Computer systems are well-known hoarders of valuable information. The retrieval problem is discussed under the twin headings of Management and Technical Information Retrieval. A General Analysis System is described which has been designed to meet the requirements for management information retrieval in a commercial/industrial data-processing environment.

    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