FACT (computer language)
Paradigm | Procedural, imperative |
---|---|
Designed by | Computer Sciences Corporation, Honeywell |
First appeared | 1959 (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.
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
[edit ]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:
- Defining data as levels, with group items and elementary items.
- Assigning of initial values to data as it is being defined (
VALUE
clause). - Specifying a limited list of literal values allowed in a specific field (
88
level data items). - A non-procedural report generator based on specifying the appearance of the desired report (Report Section in COBOL-66).
- Qualification of data-names (
IN
orOF
clause). - Group move of like-named items (
MOVE CORRESPONDING
). - Validity checks on procedural statements (
ON ERROR
clause). - Built-in
SORT
function.
Implementations
[edit ]FACT was implemented in the 1960's, "Five FACT customers are writing all their applications using FACT" and "another dozen Honeywell customers use FACT to differing degrees.",[2] this included a bank and a military inventory management system. It was being used by Australian Department of Defence in the 1960s and 1970s.[clarification needed ]
Sample program
[edit ]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 DATE O3 MONTH O4 DAY O5 YEAR O6 *EMPLOYEE-RECORD O7 EMPLOYEE-NO,(EMPLOYNO) O8 *NEW-EMPLOYEE,(NW) O9 NAME O10 RATE O11 EXEMPTIONS,(EXEMPT) O12 BOND-DEDUCT,(BONDEDUCT) O13 BOND-DENOMINATION,(BONDENOM) O30 IINTERNAL-FILE1 O31 WORKING-DATA O32 11 DBATCH-SUM O33 11 DBATCH-NUMBER O34 11 DBATCH-COUNTO O35 11 D1 SUM-OF-HOURS O36 11 DCARDS-IN-BATCHO
Source statements:
P85 BONDPROCEDURE.WRITEBONDORDERANDSUBTRACT1 FROMNUM. P86 P87 NOTE.PHASEIOFSAMPLEPROGRAM.THEFOLLOWINGPROCEDURESAREUSEDTO P88 MAKEBATCHCHECKSDURINGTHECARDREADINGPASS. P89 P90 SUMMATIONPROCEDURE.ADDRPHOURSTOSUM-OF-HOURS.ADD1 TOCARDS-IN- P91 -BATCH. P92 P93 BATCH-CHECKPROCEDURE.IFBATCH-SUMISNOTEQUALTOSUM-OF-HOURSORBATCH- P94 -COUNTISNOTEQUALTOCARDS-IN-BATCHSEEBAD-BATCH.SETSUM-OF-HOURS P95 ANDCARDS-IN-BATCHTOZERO. P96 P97 BAD-BATCHPROCEDURE.REVERSENEW-MASTER.CLOSEPAGEOFERROR-REPORT. P98 P99 L.PUTZEROSINTOPRINTLINE.SETNUMTO8. P100 P101 BUILD.PUTEMPLOYNOANDRPHOURSINTO (NUM)THENANDEH.SUB- P102 TRACT1 FROMCARDS-IN-BATCHANDNUM.IFCARDS-IN-BATCHISZEROWRITE P103 ERROR-REPORT,REVERSENEW-MASTER,LEAVEPROCEDURE.GETNEXTGROUP. P104 IFNUMISZEROWRITEERROR-REPORTANDGOTOL,OTHERWISERETURNTO P105 BUILD.ENDOFPROCEDURE.
Report descriptions:
R1 40ERROR-REPORT A2 PAGE-HEADINGHDEJ2 F3 BATCH-NUMBER24BATCHNO.^ F4 PAGE-NUMBER1 43INERROR PAGE ^ A5 COLUMN-HEADINGSHD3 F6 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-LINEOO1 F11 1STEN8 ^ F12 1STRH 14 .^ F13 2NDEN23 ^ F14 2NDRH 29 .^ F15 3RDEN38 ^ F16 3RDRH 44 .^ R101 4OBONDORDER A102 BOND-HEADINGHDEJ2 F103 BPAGE1 A104 BONDORDER-LINEOO1 F105 MEMPLOYNO F106 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.HOURS L3 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-LINEPLACECHECKFORMINPRINTER L12 1PAYLINE^^/^/^.^^/^/^ L13 2PAYLINE.^.^.^.^.^ L14 3PAYLINE^$****.^.^.^
Sources
[edit ]- Jean E. Sammet (1969). PROGRAMMING LANGUAGES: History and Fundamentals. Englewood Cliffs, N.J: Prentice-Hall. pp. 316–324. LCCN 68028110. OL 5619276M.
- FACT Fully Automatic Compiling Technique A New Business Language (PDF). 1960. 160-2M.
References
[edit ]- ^ FACT Fully Automatic Compiling Technique (PDF). Honeywell Electronic Data Processing. 1960. DSI-27.
- ^ 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.