FOREDECAL(ID:8441/)for FORMAC DESk CALculator Interactive FORMAC subset developed by Laplace at Grenoble. Unclear if it is a descendant or evolution of IBM's Desktop FORMAC Related languages
References: I 'EY OF PL/]-FO C FORMAC is not a pure language, it may be considered as an extension of a, host language (PL/I or FORTRAN). Formac allows, in addition to numeric evaluations, formal manipulations of mathematical expressions. PL/I-FORI~C contains the whole set of PL/1 instructions {5 ] and specific Formac statements [6 ]. In batch processing a PL/1-FORHAC program unit is submitted to four steps. This program unit is given first to a preprocessor which will "translate" the pure Formac statements into legal PL/I statements. The PL/I source module thus obtained will be passed then to the compiler and the linkage editor, and finally executed. During the linkage editor step two libraries are called : standard PL/i library and FORMAC run time routires library. For example the statement : LET(A = B + C) ; given to the preprocessor becomes : CALL DENFMCI('A=B+C'); The string appearing as argument of DE:IFI4C1 routine will not be altered during th~ compilation. During the execution ~f this statement, the Formac system will buil~ a tree which shall be the internal representation of the expression : A=B+C I B ~ C All Formac run time routines work upo'. trees and generally admit as argun~nts alphanumeric strings. Extract: FORDECAL DESCRIPTION OF FORDECAL We have seen (§ 2) that a Formac statement is first translated into a PL/i statement. All the problem is to have a go)d preprocessor in view of extending Formac capabilities. So it would be possible "easily" to write procedures with Formac arguments, to have the notion of block in Formac, .... But one of th~ particularities of Formac lies in the fast that each Formac variable is of "universal" domain of definition. This imple; that it is impossible to have the block notion, and the recursion problem will be hard to be solved. It is nevertheless possible to write a more "flexible" rreprocessor allowing recursion and particularly Formac variables with LOCAL attribute. An elementary interactive system could consist of a very short PL/I program which while reading a string gives it to the run time routine DENFMC2 (1) and gives back control to the user. We have develop considerab]y such a system by putting in near the whole set of OS/FORV~C "statements" with the appearence of corresponding run time routines calling sequence. We must, in a f i r s t step, provide a set of "commands" whose syntax must be very near of the usual mathematical writing. In a second step we have introduced the notion of "program unit' by the introduction of blocks and of procedures. The syntax of the commands of FORDECAL has been chosen as near as possibl~ to the syntax of the "equivalent" PL/I statement. Thus the command : A = B + 5 ; is the "equivalence" of the PL/I assignment statement : A = B + 5 ; apart the fact the system works only with Formac variables. The FORDECAL system consists of an int~rpreter~ written in PL/i; and of a run t i - me program library obtained from the PL/I and 0S/360 PL/i-FORI.~C librari~.;. Formac run time routines have not been altered in the part concerning formula manipulations, llowever some modules have been re-written either to take into account the CI.IS environment under which Fordecal is running or to introduce new possibilities. The user, once in the Fordecal environment, dialogues with the system by means of the provided commands. These are submitted to two phases : - one of "reading-interpretation", - one of execution. It is also possible ~ divide ~he commands into three categories : - elementary command, - macro-command, - declare command and DEBUG facility command. The action taken by the system during the two phases may differ according to the command category. For an elementary command, the execution is immediate. For example : ~A= FAC(iO) ; This co,and will ca]cu}ate i0i, affect the result to the variable A and print this result according to the standard printing of PL/I-FORMAC. The input phase consists of : - recovering the input string '~A=FAC(IO)' - detecting the character <$> in the f i r s t position of the string, - going to the execution sequence corresponding to the print out command. Th( execution phase of this command consists in giving to the run time routine DE~FI4C2 the arQument 'A=FAC(IO)'. This routine provokes the evaluation of 10! ev(ntually builds a "repword" for A, attaches the value 10! to this repword ant then prints out the result. Introduction: The simple past. The first version of FORMAC was written for the IBM 7090/94 as an extension of FORTRAN IV running under the IBM IBSYS-IBJOB monitor. It was an experimental programming system to assist in the symbolic manipulation of mathematical expressions and provided such capabilities as symbolic differentiation, expansion, substitution, comparison and evaluation of expressions. The project originated in August 1962 and the system was released in November 1964. References are given in [27]. Comments of users initialized the design and implementation of PL/I-FORMAC, a more flexible system based on the same principles. The first version was released in 1967, the second in September 1969, [27]. The PL/I-FORMAC interpreter, an extension of the OS/360 PL/I(F) compiler, was originally designed to run on an IBM S360 H-level model 40 and above. It consists of two modules of assembled routines whi6h are added to a system's library: the preprocessor and the objecttime library. In March 1970 the SHARE SMC project (now LASM project) composed a list of known errors and proposed extensions of the IBM preprocessor, [21]. In April 1970 a new preprocessor became available. It was developed at KFA-Julich, Germany-West, by R. Schwerdt, [19]. The errors were corrected and most of the proposed extensions were implemented. To make the FORMAC-system again available to FORTRAN-users, a new FORTRAN-FORMAC, comparable with PL/I-FORMAC, has been written for and tested with FORTRAN IV(H) under 0S/360 in 1970 at DRZ-Darmstadt, Germany-West, by Knut A. Bahr, [1]. At 1.1.1971 IBM stopped the FORMAC project. Information about SHARE's FORMAC maintenance and distribution is given in SIGSAM Bulletin No. 26, page 2. The address of the FORMAC library of SEAS is: ZAM/KFA-Juelich, Postfach 365, D517 Juelich I, Germany-West. Extract: SCOPE FORMAC Another early system was the Scope FORMAC Language, [28]. When the system was operational it ran in a 256 K partition of an IBM 360/50 with an IBM 2250 graphic display unit as I/0 device. The system was last operational in January 1969, at which time IBM decided to support it no longer, [29]. Extract: FINSTER A prototype of FINSTER ran on the IBM 360/75 of KFA-Juelich in 1970, in a 160 K partition under OS/MFT and serving four 2260 terminals. Extract: FORDECAL FORDECAL is running in a number of institutions on an IBM 360/67 under CP67-CMS and serving 2741 terminals. The system may be used on an IBM 370 under VM, although the testing of this FORDECAL version is not yet finished, [15]. A TSO-version will be announced in the near future, [15]. FORDECAL is an interactive system similar to a desk calculator. The statements are executed as soon as they have been typed on the key-board of the terminal. Although this system does not allow to execute a program with the whole range the PL/I-FORMAC language itself offers, some statements may be executed repeatedly with either a DO or BEGIN command (compound DO-loops, DOgroups and blocks respectively). The system allows to c~ll user typed (function) procedures, which can be recursive. The FORDECAL statements resemble the PL/I-FORMAC statements, but are written in a syntax as nearly similar as the usual mathematical syntax. FORDECAL uses only the FORMAC-components of PL/I-FORMAC and can be used without any knowledge of PL/I and with only a vague impression of FORMAC. [ii] and [12] survey the system, [13] contains a description of some of the practised implementation techniques and [14], written in French, offers an accurate and detailed description of FORDECAL and its implementation, Extract: TUTOR TUTOR, [16], was originally implemented on an IBM 360/65 at Calspan Corporation, Buffalo, N.Y., under OS/MFT using the FORTRAN GSP package for the graphics facility (an IBM 2250 as I/O device) and an interface program to make it compatable with PL/I. When MVT and the PL/I GSP package became available the program was modified for these facilities. A normal run at Calspan allowed 250 K. Due to changes in Calspan's computer configuration TUTOR's future is uncertain, [17]. TUTOR is a simple conversational system without advanced control commands as provided in FORDECAL. An essential difference between TUTOR and the other interactive systems is its capability of accepting two-sides equations, that is mathematical expressions on either or both sides of the equal sign. Special commands to manipulate equations are implemented. Extract: SYMBAS An experimental version of SYMBAS, a FORMAC orientated version of BASIC, is running under TSS since summer 1972 at KFA-J~lich serving 2741 terminals. A TSO-version of SYMBAS, running under VS2, is in consideration, [9]. To have a system available which is well suited for symbolic as well as numerical applications the interactive, line-orientated BASIC system was chosen and its semantics were extended in the case of symbolic applications. This technique enabled the implementation of an interpreter which evaluates expressions numerically when ~ ever possible. In this extension BASIC variables do not need to have assigned numerical values; they may be interpreted as atoms or symbolic expressions may be assigned to them. So assigning numerical values to all variables of a SYMBAS program does the program run as if it would have been a proper BASIC program. The matrix statements of BASIC are also included and are extended to facilitate fraction free elimination algorithms for symbolic matrices. The run-time routines of FORMAC are used to do symbolic computations. A special editor is available to create and change programs. A debugging system enables the user to stop his program at any point, to display and to reassign variables, and to change statements and program flow. Introduction: The simple past. The first version of FORMAC was written for the IBM 7090/94 as an extension of FORTRAN IV running under the IBM IBSYS-IBJOB monitor. It was an experimental programming system to assist in the symbolic manipulation of mathematical expressions and provided such capabilities as symbolic differentiation, expansion, substitution, comparison and evaluation of expressions. The project originated in August 1962 and the system was released in November 1964. References are given in [27]. Comments of users initialized the design and implementation of PL/I-FORMAC, a more flexible system based on the same principles. The first version was released in 1967, the second in September 1969, [27]. The PL/I-FORMAC interpreter, an extension of the OS/360 PL/I(F) compiler, was originally designed to run on an IBM S360 H-level model 40 and above. It consists of two modules of assembled routines whi6h are added to a system's library: the preprocessor and the objecttime library. In March 1970 the SHARE SMC project (now LASM project) composed a list of known errors and proposed extensions of the IBM preprocessor, [21]. In April 1970 a new preprocessor became available. It was developed at KFA-Julich, Germany-West, by R. Schwerdt, [19]. The errors were corrected and most of the proposed extensions were implemented. To make the FORMAC-system again available to FORTRAN-users, a new FORTRAN-FORMAC, comparable with PL/I-FORMAC, has been written for and tested with FORTRAN IV(H) under 0S/360 in 1970 at DRZ-Darmstadt, Germany-West, by Knut A. Bahr, [1]. At 1.1.1971 IBM stopped the FORMAC project. Information about SHARE's FORMAC maintenance and distribution is given in SIGSAM Bulletin No. 26, page 2. The address of the FORMAC library of SEAS is: ZAM/KFA-Juelich, Postfach 365, D517 Juelich I, Germany-West. Extract: SCOPE FORMAC Another early system was the Scope FORMAC Language, [28]. When the system was operational it ran in a 256 K partition of an IBM 360/50 with an IBM 2250 graphic display unit as I/0 device. The system was last operational in January 1969, at which time IBM decided to support it no longer, [29]. Extract: FINSTER A prototype of FINSTER ran on the IBM 360/75 of KFA-Juelich in 1970, in a 160 K partition under OS/MFT and serving four 2260 terminals. Extract: FORDECAL FORDECAL is running in a number of institutions on an IBM 360/67 under CP67-CMS and serving 2741 terminals. The system may be used on an IBM 370 under VM, although the testing of this FORDECAL version is not yet finished, [15]. A TSO-version will be announced in the near future, [15]. FORDECAL is an interactive system similar to a desk calculator. The statements are executed as soon as they have been typed on the key-board of the terminal. Although this system does not allow to execute a program with the whole range the PL/I-FORMAC language itself offers, some statements may be executed repeatedly with either a DO or BEGIN command (compound DO-loops, DOgroups and blocks respectively). The system allows to c~ll user typed (function) procedures, which can be recursive. The FORDECAL statements resemble the PL/I-FORMAC statements, but are written in a syntax as nearly similar as the usual mathematical syntax. FORDECAL uses only the FORMAC-components of PL/I-FORMAC and can be used without any knowledge of PL/I and with only a vague impression of FORMAC. [ii] and [12] survey the system, [13] contains a description of some of the practised implementation techniques and [14], written in French, offers an accurate and detailed description of FORDECAL and its implementation, Extract: TUTOR TUTOR, [16], was originally implemented on an IBM 360/65 at Calspan Corporation, Buffalo, N.Y., under OS/MFT using the FORTRAN GSP package for the graphics facility (an IBM 2250 as I/O device) and an interface program to make it compatable with PL/I. When MVT and the PL/I GSP package became available the program was modified for these facilities. A normal run at Calspan allowed 250 K. Due to changes in Calspan's computer configuration TUTOR's future is uncertain, [17]. TUTOR is a simple conversational system without advanced control commands as provided in FORDECAL. An essential difference between TUTOR and the other interactive systems is its capability of accepting two-sides equations, that is mathematical expressions on either or both sides of the equal sign. Special commands to manipulate equations are implemented. Extract: SYMBAS An experimental version of SYMBAS, a FORMAC orientated version of BASIC, is running under TSS since summer 1972 at KFA-J~lich serving 2741 terminals. A TSO-version of SYMBAS, running under VS2, is in consideration, [9]. To have a system available which is well suited for symbolic as well as numerical applications the interactive, line-orientated BASIC system was chosen and its semantics were extended in the case of symbolic applications. This technique enabled the implementation of an interpreter which evaluates expressions numerically when ~ ever possible. In this extension BASIC variables do not need to have assigned numerical values; they may be interpreted as atoms or symbolic expressions may be assigned to them. So assigning numerical values to all variables of a SYMBAS program does the program run as if it would have been a proper BASIC program. The matrix statements of BASIC are also included and are extended to facilitate fraction free elimination algorithms for symbolic matrices. The run-time routines of FORMAC are used to do symbolic computations. A special editor is available to create and change programs. A debugging system enables the user to stop his program at any point, to display and to reassign variables, and to change statements and program flow. |