FACT (computer language)

From Wikipedia, the free encyclopedia
  (Redirected from FACT computer language)
Jump to: navigation, search
FACT
Paradigm(s) procedural, imperative
Designed by Computer Sciences Corporation, Honeywell
Appeared in 1959 (1959)
Influenced COBOL

FACT was an early 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 Automated Compiling Technique". 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 3 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 or OF clause).
  • Group move of like-named items (MOVE CORRESPONDING).
  • Validity checks on procedural statements (ON ERROR clause).
  • Built-in SORT function.

Implementations[edit]

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 seems to imply that they are still working on an implementation. 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 however - it was being used by Australian Department of Defence in the 1960s and early 1970s.

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:

O   1       RU   DETAIL-FILE, (DETAIL),(D)
O   2             DATE
O   3              MONTH
O   4              DAY
O   5              YEAR
O   6            *EMPLOYEE-RECORD
O   7              EMPLOYEE-NO, (EMPLOYNO)
O   8             *NEW-EMPLOYEE,(NW)
O   9               NAME
O  10               RATE
O  11               EXEMPTIONS,(EXEMPT)
O  12               BOND-DEDUCT,(BONDEDUCT)
O  13               BOND-DENOMINATION,(BONDENOM)

O  30        I   INTERNAL-FILE1
O  31             WORKING-DATA
O  32     11 D     BATCH-SUM
O  33     11 D     BATCH-NUMBER
O  34     11 D     BATCH-COUNT   O
O  35     11 D 1   SUM-OF-HOURS
O  36     11 D     CARDS-IN-BATCH  O

Source statements:

P  85 BOND PROCEDURE.  WRITE BONDORDER AND SUBTRACT 1 FROM NUM.
P  86
P  87 NOTE.  PHASE I OF SAMPLE PROGRAM.  THE FOLLOWING PROCEDURES ARE USED TO
P  88      MAKE BATCH CHECKS DURING THE CARD READING PASS.
P  89
P  90 SUMMATION PROCEDURE.  ADD RP HOURS TO SUM-OF-HOURS.  ADD 1 TO CARDS-IN-
P  91      -BATCH.
P  92
P  93 BATCH-CHECK PROCEDURE.  IF BATCH-SUM IS NOT EQUAL TO SUM-OF-HOURS OR BATCH-
P  94      -COUNT IS NOT EQUAL TO CARDS-IN-BATCH SEE BAD-BATCH.  SET SUM-OF-HOURS
P  95      AND CARDS-IN-BATCH TO ZERO.
P  96
P  97  BAD-BATCH PROCEDURE.  REVERSE NEW-MASTER.  CLOSE PAGE OF ERROR-REPORT.
P  98
P  99            L.  PUT ZEROS INTO PRINTLINE.  SET NUM TO 8.
P 100
P 101            BUILD.  PUT EMPLOYNO AND RP HOURS INTO (NUM)TH EN AND EH. SUB-
P 102       TRACT 1 FROM CARDS-IN-BATCH AND NUM.  IF CARDS-IN-BATCH IS ZERO WRITE
P 103       ERROR-REPORT, REVERSE NEW-MASTER, LEAVE PROCEDURE.  GET NEXT GROUP.
P 104       IF NUM IS ZERO WRITE ERROR-REPORT AND GO TO L, OTHERWISE RETURN TO
P 105       BUILD. END OF PROCEDURE.

Report descriptions:

R   1  40ERROR-REPORT
A   2 PAGE-HEADING      HDEJ 2
F   3 BATCH-NUMBER                            24BATCH NO.   ^
F   4 PAGE-NUMBER                 1           43IN ERROR    PAGE  ^
A   5 COLUMN-HEADINGS   HD   3
F   6                                         30EMP.NO. HOURS  EMP.NO.HOURS^
F   7                                         60EMP.NO. HOURS  EMP.NO.HOURS^
F   8                                         90EMP.NO. HOURS  EMP.NO.HOURS^
F   9                                        120EMP.NO. HOURS  EMP.NO.HOURS^
A  10 ERROR-LINE        OO   1
F  11 1ST EN                                   8     ^
F  12 1ST RH                                  14  .^
F  13 2ND EN                                  23     ^
F  14 2ND RH                                  29  .^
F  15 3RD EN                                  38     ^
F  16 3RD RH                                  44  .^

R 101  4OBONDORDER
A 102 BOND-HEADING      HDEJ 2
F 103 BPAGE                        1
A 104 BONDORDER-LINE    OO   1
F 105 M EMPLOYNO
F 106 M NAME

Report layouts:

L   1  PAGE-HEADING                 BATCH NO.   ^ IN ERROR   PAGE ^
L   2  COLUMN-HEADING     EMP.NO. HOURS  EMP.NO. HOURS  EMP.NO. HOURS  EMP.NO. HOURS  EMP.NO. HOURS  EMP.NO. HOURS  EMP.NO. HOURS  EMP.NO. HOURS
L   3  ERROR-LINE               ^    .^        ^    .^        ^    .^        ^    .^        ^    .^        ^    .^        ^    .^        ^    .^
L   4  BOND-HEADING       BOND ORDERS  EMP. NO.     NAME           DATE       BOND    PAGE   ^
L   5  BONDORDER-LINE                        ^                ^   ^- ^- ^      . ^
L   6  DEL-HEADING        TERMINATIONS  EMP. NO.   DATE        NAME         BOND CR. TOTALS.. GROSS     TAX     FICA   INSUR    RET     PAGE  ^
L   7  DELETIONS-LINE                         ^   ^- ^- ^                ^      . ^              . ^      . ^     . ^     . ^     . ^
L   8  ERROR-HEADING      ERRORS...    EMP. NO.    DATE         TYPE         PAGE  ^
L   9  ERROR-LINE                            ^    ^- ^- ^                 ^
L  10  TITLE-LINE         PLACE CHECK FORM IN PRINTER
L  12 1PAYLINE                       ^             ^/ ^/ ^                                                 .^     ^/ ^/  ^
L  13 2PAYLINE                                                                          . ^     . ^     . ^     .^      . ^
L  14 3PAYLINE                                    ^        $****. ^                                     . ^             . ^

Sources[edit]

  • PROGRAMMING LANGUAGES: History and Fundamentals, Sammet 1969, pp. 316–324.
  • Computer Sciences Corporation (1960). FACT A New Business Language (PDF) (Technical report). Honeywell. Retrieved 19 January 2014.