November 1976 - Vol. 19 No. 11
![November 1976 issue cover image](https://cacm.acm.org/wp-content/uploads/1976/11/360363.cover_.jpg?w=129)
Features
At every standards meeting, in clear view on the table there should be a small plaque engraved: “Do it once, do it right, do it internationally.” The many contributions of Douglas Ross exemplify this directive. If, for example, you look at the ASCII standard, ANSI-X3.4-1968, you will find that D.T. Ross represented ACM on the ANSI X3 Committee at that time. This paper is part of an argument that well-founded standards go hand in hand with an effective systems methodology.
When first submitted for refereeing, “Homilies for Humble Standards” was oriented toward Computer Aided Manufacturing (CAM) applications. As it is now published, the context is elevated to consider all applications. In a similar manner, we can broaden the scope to show that it is the concern of all ACM members. Manufacturing is the application of tools and processes on materials to create a product. Languages are our tools; algorithms and procedures are our processes; data is our material. The product is an enhancement of the power and span of control of the customer.
I commend this paper for your reading as one of the relatively few in ACM publications which tell why ACM and its members should be “involved”; it discusses an unsolved problem, rather than a solution looking for a problem.
A sample set of Cobol programming standards is offered. These standards constrain code to be developed in a “structured” form for both data and control structures. They do not require syntax beyond the existing Cobol language and in fact utilize a typical limited subset of the 1974 ANS Cobol standard. These standards have proved extremely valuable in practice and have reduced the cost and time to produce and maintain large software systems that have been deployed in live multiple customer environments.
The design and implementation of a table driven, interactive diagnostic programming system
CAPS is a highly interactive diagnostic compiler/interpreter that allows beginning programmers to prepare, debug, and execute fairly simple programs at a graphics display terminal. Complete syntax checking and most semantic analysis is performed as the program is entered and as it is subsequently edited. Analysis is performed character by character.
The most remarkable feature of CAPS is its ability to automatically diagnose errors both at compile time and at run time. Errors are not automatically corrected. Instead, CAPS interacts with the student to help him find the cause of his error.
Most components of CAPS are table driven, both to reduce the space needed for implementation and to increase the flexibility of the multilingual system. Over 500 students have used CAPS to learn Fortran, PL/I, or Cobol in conjunction with a computer assisted course on introductory computer science.
Experiments in text file compression
A system for the compression of data files, viewed as strings of characters, is presented. The method is general, and applies equally well to English, to PL/I, or to digital data. The system consists of an encoder, an analysis program, and a decoder. Two algorithms for encoding a string differ slightly from earlier proposals. The analysis program attempts to find an optimal set of codes for representing substrings of the file. Four new algorithms for this operation are described and compared. Various parameters in the algorithms are optimized to obtain a high degree of compression for sample texts.
The notions of consistency and predicate locks in a database system
In database systems, users access shared data under the assumption that the data satisfies certain consistency constraints. This paper defines the concepts of transaction, consistency and schedule and shows that consistency requires that a transaction cannot request new locks after releasing a lock. Then it is argued that a transaction needs to lock a logical rather than a physical subset of the database. These subsets may be specified by predicates. An implementation of predicate locks which satisfies the consistency condition is suggested.
Optimal reorganization of distributed space disk files
In most database organizations, the cost of accessing the database will increase due to structural changes caused by updates and insertions. By reorganizing the database, the access costs can be reduced. A basic problem is to establish the proper tradeoff between performance, storage costs, and reorganization costs. This paper considers the optimum points at which to reorganize a database. A disk file organization which allows for distributed free space is described. A cost function describing the excess costs due to physical disorganization is defined, and this function is minimized to obtain the optimum reorganization points. Numerical examples based on the characteristics of existing disk storage devices are given.
High-level binding with low-level linkers
An easy to implement scheme is described by which a compiler can enforce agreement between complex data types in separately compiled modules. The scheme is designed to work with any existing link editor or linking loader, no matter how deficient. Obscure runtime errors caused by inconsistent usages are forestalled by static errors detected at linking time.