Array-based list-processing for Fortran
Evolution of DYSTAL ported to the 1130, while taking advantage of the manipulation techniques presented by Engeli
This high-level programming language, developed by J. M. Sakoda, is an extension of FORTRAN to include dynamic storage allocation, creation of complex data structures, and list handling, along with the standard features of FORTRAN. It is written in a basic FORTRAN IV so that it has a high degree of machine independence. It has application in many contexts, but is particularly useful for writing statistical programs and packages. The language includes commands (essentially subroutines) to rank a list of variables; to sort a set; and to compute sums, sums of squares, and variances of sets of variables. Also included are commands to form cross-products and correlation matrices. Dynamic storage allocation is an nnportant addition m that it enables statistical routines to be written so that the storage required for a particular run is all that is actually used. DYSTAL II can be very useful for special-purpose statistical routines. It has been implemented on the IBM 360 and 1130
in [ACM] ACM Computing Surveys (CSUR) 4(2) June 1972 view details
DYSTAL began as an effort in 1963 to write a list-processing language in FORTRAN, using IPL-V as a model. In this regard it followed SLIP (Weizenbaum), which had just been released. DYSTAL differed from SLIP in that in place of the chained word list, used by both IPL-V and SLIP, it substitued linear arrays. It was the writer's belief that the linear array, in which words were implicitly rather than explicitly connected,.was the more natural and efficient arrangement of words and more compatible with FORTRAN operations. Use of links prevented the convenience of using address modification to access words of an array and to employ a basic data structure—the matrix. The initial effort on DYSTAL began with a primitive storage allocation system, and list and tree structure operations were worked out. To these were added string handling operations from SNOBOL and COMIT, matrix and statistical operations and sorting and ranking routines to provide general purpose programming capabilities. The first system was implemented on the IBM 7070 and the DYSTAL MANUAL was put out in 1964 (Sakoda, 1964).
In 1967 DYSTAL was presented at the IFIP Working Conference on Symbol Manipulation Languages at Pisa (Sakoda, 1968). After the conference work was begun on making arrays relocatable by accessing them indirectly through a directory, using an approach adopted by Engeli (1968) in writing SYMBAL, a formula manipulation language. This step led to expandable arrays and virtual memory or two-level store using a disk file as secondary storage. The most recent work on DYSTAL 2 has been carried out in Basic FORTRAN for the IBM 1130, permitting it to operate on a relatively small system. For the IBM 1130 a half-word integer version of the storage allocator was written, to increase the amount of usable space. This was used to write various versions of XTAB9, a statistical package with crosstabulation and data modification as the main statistical procedures. XTAB9 was implemented on the IBM 360/67 system and modified to handle hierarchically structured files (Sakoda, 1976). Otherwise, the DYSTAL system has been in relative disuse.
A few years ago one might have anticipated FORTRAN simply to disappear because of the development of many sophisticated specialized languages and the appearance of PL/I, a complex general purpose language. But PL/I's complexity has been self-defeating, and the announcement of FORTRAN 77 appears to have revived interest in FORTRAN as a language with a future. DYSTAL may now be of interest to FORTRAN programmers, who feel the need for its dynamic storage allocation and data structuring capabilities, and do not want to wait for the development of FORTRAN 82 or change to a language like PL/I. For those working on revisions of FORTRAN 77, DYSTAL may serve as a prototype for some of the enhancements.
in SIGPLAN Notices 14(01) January 1979 view details