FACT (computer language)

Last updated
FACT
Paradigm Procedural, imperative
Designed by Computer Sciences Corporation, Honeywell
First appeared1959 (1959)
Influenced
COBOL

FACT is an early discontinued computer programming language, created by the Datamatic Division of Minneapolis Honeywell for its model 800 series business computers in 1959. FACT was an acronym for "Fully Automatic Compiling Technique". [1] It was an influence on the design of the COBOL programming language.

Contents

Some of the design of FACT was based on the linguistic project Basic English , developed about 1925 by C.K. Ogden.

The software was actually designed by Computer Sciences Corporation (Fletcher Jones, Roy Nutt, and Robert L. Patrick) under contract to Richard Clippinger of Honeywell.

Contributions to COBOL

FACT was an influence in the design of COBOL, and is one of three predecessor languages credited in all COBOL manuals.

Several elements of FACT were incorporated into COBOL:

Implementations

It is unclear if a working version of FACT was ever released by Honeywell. The language was designed, and a detailed specification released (see references), but it said that "Computer Sciences Corporation also has the contract to implement FACT", which implies they were still working on an implementation at the time. About that time, the short range committee began developing COBOL, and Roy Nutt, 1 of the 3 principals of CSC, began working with that committee on COBOL. It's not clear if he ever came back to implement FACT, or if Honeywell concentrated their programming effort on a COBOL compiler.

FACT was implemented, [2] however – it was being used by Australian Department of Defence in the 1960s and early 1970s.[ clarification needed ][ clarification needed ]

Sample program

The following code samples from the simple payroll application in the FACT specification show the fixed-form nature of FACT and its similarities with COBOL.

File outlines:

O1       RUDETAIL-FILE,(DETAIL),(D)O2             DATEO3              MONTHO4              DAYO5              YEARO6            *EMPLOYEE-RECORDO7              EMPLOYEE-NO,(EMPLOYNO)O8             *NEW-EMPLOYEE,(NW)O9               NAMEO10               RATEO11               EXEMPTIONS,(EXEMPT)O12               BOND-DEDUCT,(BONDEDUCT)O13               BOND-DENOMINATION,(BONDENOM)O30        IINTERNAL-FILE1O31             WORKING-DATAO32     11 DBATCH-SUMO33     11 DBATCH-NUMBERO34     11 DBATCH-COUNTOO35     11 D1   SUM-OF-HOURSO36     11 DCARDS-IN-BATCHO

Source statements:

P85 BONDPROCEDURE.WRITEBONDORDERANDSUBTRACT1 FROMNUM.P86P87 NOTE.PHASEIOFSAMPLEPROGRAM.THEFOLLOWINGPROCEDURESAREUSEDTOP88      MAKEBATCHCHECKSDURINGTHECARDREADINGPASS.P89P90 SUMMATIONPROCEDURE.ADDRPHOURSTOSUM-OF-HOURS.ADD1 TOCARDS-IN-P91      -BATCH.P92P93 BATCH-CHECKPROCEDURE.IFBATCH-SUMISNOTEQUALTOSUM-OF-HOURSORBATCH-P94      -COUNTISNOTEQUALTOCARDS-IN-BATCHSEEBAD-BATCH.SETSUM-OF-HOURSP95      ANDCARDS-IN-BATCHTOZERO.P96P97  BAD-BATCHPROCEDURE.REVERSENEW-MASTER.CLOSEPAGEOFERROR-REPORT.P98P99            L.PUTZEROSINTOPRINTLINE.SETNUMTO8.P100P101            BUILD.PUTEMPLOYNOANDRPHOURSINTO (NUM)THENANDEH.SUB-P102       TRACT1 FROMCARDS-IN-BATCHANDNUM.IFCARDS-IN-BATCHISZEROWRITEP103       ERROR-REPORT,REVERSENEW-MASTER,LEAVEPROCEDURE.GETNEXTGROUP.P104       IFNUMISZEROWRITEERROR-REPORTANDGOTOL,OTHERWISERETURNTOP105       BUILD.ENDOFPROCEDURE.

Report descriptions:

R1  40ERROR-REPORTA2 PAGE-HEADINGHDEJ2F3 BATCH-NUMBER24BATCHNO.^F4 PAGE-NUMBER1           43INERROR   PAGE  ^A5 COLUMN-HEADINGSHD3F6                                         30EMP.NO.HOURSEMP.NO.HOURS^F7                                         60EMP.NO.HOURSEMP.NO.HOURS^F8                                         90EMP.NO.HOURSEMP.NO.HOURS^F9                                        120EMP.NO.HOURSEMP.NO.HOURS^A10 ERROR-LINEOO1F11 1STEN8     ^F12 1STRH                                 14  .^F13 2NDEN23     ^F14 2NDRH                                 29  .^F15 3RDEN38     ^F16 3RDRH                                 44  .^R101  4OBONDORDERA102 BOND-HEADINGHDEJ2F103 BPAGE1A104 BONDORDER-LINEOO1F105 MEMPLOYNOF106 MNAME

Report layouts:

L1  PAGE-HEADINGBATCHNO.^INERROR  PAGE ^L2  COLUMN-HEADINGEMP.NO.HOURSEMP.NO.HOURSEMP.NO.HOURSEMP.NO.HOURSEMP.NO.HOURSEMP.NO.HOURSEMP.NO.HOURSEMP.NO.HOURSL3  ERROR-LINE^.^^.^^.^^.^^.^^.^^.^^.^L4  BOND-HEADINGBONDORDERSEMP.NO.NAMEDATE      BONDPAGE   ^L5  BONDORDER-LINE^^^-^-^.^L6  DEL-HEADINGTERMINATIONSEMP.NO.DATE       NAMEBONDCR.TOTALS..GROSSTAXFICAINSURRETPAGE  ^L7  DELETIONS-LINE^^-^-^^.^.^.^.^.^.^L8  ERROR-HEADINGERRORS...EMP.NO.DATE        TYPE        PAGE  ^L9  ERROR-LINE^^-^-^^L10  TITLE-LINEPLACECHECKFORMINPRINTERL12 1PAYLINE^^/^/^.^^/^/^L13 2PAYLINE.^.^.^.^.^L14 3PAYLINE^$****.^.^.^

Sources

Related Research Articles

Computer programming is the process of performing particular computations, usually by designing and building executable computer programs. Programming involves tasks such as analysis, generating algorithms, profiling algorithms' accuracy and resource consumption, and the implementation of algorithms. The source code of a program is written in one or more languages that are intelligible to programmers, rather than machine code, which is directly executed by the central processing unit. The purpose of programming is to find a sequence of instructions that will automate the performance of a task on a computer, often for solving a given problem. Proficient programming thus usually requires expertise in several different subjects, including knowledge of the application domain, specialized algorithms, and formal logic.

<span class="mw-page-title-main">COBOL</span> Programming language with English-like syntax

COBOL is a compiled English-like computer programming language designed for business use. It is an imperative, procedural and, since 2002, object-oriented language. COBOL is primarily used in business, finance, and administrative systems for companies and governments. COBOL is still widely used in applications deployed on mainframe computers, such as large-scale batch and transaction processing jobs. However, due to its declining popularity and the retirement of experienced COBOL programmers, programs are being migrated to new platforms, rewritten in modern languages or replaced with software packages. Most programming in COBOL is now purely to maintain existing applications; however, many large financial institutions were still developing new systems in COBOL as late as 2006.

<span class="mw-page-title-main">Fortran</span> General-purpose programming language

Fortran is a general-purpose, compiled imperative programming language that is especially suited to numeric computation and scientific computing.

<span class="mw-page-title-main">Multics</span> Time-sharing operating system

Multics is an influential early time-sharing operating system based on the concept of a single-level memory. Nathan Gregory writes that Multics "has influenced all modern operating systems since, from microcomputers to mainframes."

<span class="mw-page-title-main">MVS</span> Operating system for IBM mainframes

Multiple Virtual Storage, more commonly called MVS, is the most commonly used operating system on the System/370, System/390 and IBM Z IBM mainframe computers. IBM developed MVS, along with OS/VS1 and SVS, as a successor to OS/360. It is unrelated to IBM's other mainframe operating system lines, e.g., VSE, VM, TPF.

PL/I is a procedural, imperative computer programming language initially developed by IBM. The PL/1 ANSI standard, X3.53-1976, was published in 1976. It is designed for scientific, engineering, business and system programming. It has been in continuous use by academic, commercial and industrial organizations since it was introduced in the 1960s.

<span class="mw-page-title-main">UNIVAC</span> Series of mainframe computer models

UNIVAC was a line of electronic digital stored-program computers starting with the products of the Eckert–Mauchly Computer Corporation. Later the name was applied to a division of the Remington Rand company and successor organizations.

In computer science, imperative programming is a programming paradigm of software that uses statements that change a program's state. In much the same way that the imperative mood in natural languages expresses commands, an imperative program consists of commands for the computer to perform. Imperative programming focuses on describing how a program operates step by step, rather than on high-level descriptions of its expected results.

CODASYL, the Conference/Committee on Data Systems Languages, was a consortium formed in 1959 to guide the development of a standard programming language that could be used on many computers. This effort led to the development of the programming language COBOL, the CODASYL Data Model, and other technical standards.

The Burroughs Large Systems Group produced a family of large 48-bit mainframes using stack machine instruction sets with dense syllables. The first machine in the family was the B5000 in 1961, which was optimized for compiling ALGOL 60 programs extremely well, using single-pass compilers. The B5000 evolved into the B5500 and the B5700. Subsequent major redesigns include the B6500/B6700 line and its successors, as well as the separate B8500 line.

Job Control Language (JCL) is a name for scripting languages used on IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem. The purpose of JCL is to say which programs to run, using which files or devices for input or output, and at times to also indicate under what conditions to skip a step. Parameters in the JCL can also provide accounting information for tracking the resources used by a job as well as which machine the job should run on.

Cullinet was a software company whose products included the database management system IDMS and the integrated software package Goldengate. In 1989, the company was bought by Computer Associates. Cullinet was headquartered at 400 Blue Hill Drive in Westwood, Massachusetts.

<span class="mw-page-title-main">Honeywell 200</span>

The Honeywell 200 was a character-oriented two-address commercial computer introduced by Honeywell in December 1963, the basis of later models in Honeywell 200 Series, including 1200, 1250, 2200, 3200, 4200 and others, and the character processor of the Honeywell 8200 (1968).

<span class="mw-page-title-main">Recursion (computer science)</span> Use of functions that call themselves

In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances of the same problem. Recursion solves such recursive problems by using functions that call themselves from within their own code. The approach can be applied to many types of problems, and recursion is one of the central ideas of computer science.

The power of recursion evidently lies in the possibility of defining an infinite set of objects by a finite statement. In the same manner, an infinite number of computations can be described by a finite recursive program, even if this program contains no explicit repetitions.

COMTRAN is an early programming language developed at IBM. It was intended as the business programming equivalent of the scientific programming language FORTRAN. It served as one of the forerunners to the COBOL language. Developed by Bob Bemer, in 1957, the language was the first to feature the programming language element known as a picture clause.

KDF8 was an early British computer built by English Electric as a version of the RCA 501. By producing a software-compatible system, the intention was to reduce time and cost to develop software. However, the lengthy process of developing manufacturing capability meant that the system was soon outpaced by systems from other vendors. Only a few systems were sold during its 5 years of production. Due to the consolidation of the British computer industry, English Electric's computer division became one of the components of what would become ICL.

<span class="mw-page-title-main">Computer programming in the punched card era</span> History of computer programming using punch cards

From the invention of computer programming languages up to the mid-1970s, most computer programmers created, edited and stored their programs line by line on punch cards.

<span class="mw-page-title-main">SDS Sigma series</span>

The SDS Sigma series is a series of third generation computers that were introduced by Scientific Data Systems of the United States in 1966. The first machines in the series are the 16-bit Sigma 2 and the 32-bit Sigma 7; the Sigma 7 was the first 32-bit computer released by SDS. At the time, the only competition for the Sigma 7 was the IBM 360.

The Universal Time-Sharing System (UTS) is a discontinued operating system for the XDS Sigma series of computers, succeeding Batch Processing Monitor (BPM)/Batch Time-Sharing Monitor (BTM). UTS was announced in 1966, but because of delays did not actually ship until 1971. It was designed to provide multi-programming services for online (interactive) user programs in addition to batch-mode production jobs, symbiont (spooled) I/O, and critical real-time processes. System daemons, called "ghost jobs" were used to run monitor code in user space. The final release, D00, shipped in January, 1973. It was succeeded by the CP-V operating system, which combined UTS with features of the heavily batch-oriented Xerox Operating System (XOS).

CP-6 is a discontinued computer operating system, developed by Honeywell, Inc. in 1976, which was a backward-compatible work-alike of the Xerox CP-V fully rewritten for Honeywell Level/66 hardware. CP-6 was a command line oriented system. A terminal emulator allowed use of PCs as CP-6 terminals.

References

  1. FACT Fully Automatic Compiling Technique (PDF). Honeywell Electronic Data Processing. 1960. DSI-27.
  2. Clippinger, R. F. (1 August 1962). "Fact". The Computer Journal. 5 (2): 112–119 (118 - Experience with the use of FACT). doi:10.1093/comjnl/5.2.112. ISSN   0010-4620.