COMTRAN: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
 
(14 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{Short description|Programming language developed in 1957}}
{{refimprove|date=February 2014}}
{{Infobox programming language
{{Infobox programming language
| name = COMTRAN
| name = COMTRAN
Line 16: Line 18:
*{{code|AT END}} clause on file input operations.
*{{code|AT END}} clause on file input operations.
*Figurative constant {{code|HIGH-VALUE}}.
*Figurative constant {{code|HIGH-VALUE}}.
*Passing a numeric value ({{code|RETURN-CODE}}) back to the operating system when the program [[exit (operating system)|terminates]].
*Passing a numeric value ({{code|RETURN-CODE}}) back to the operating system when the program [[exit (system call)|terminates]].


==Picture clause==
==Picture clause==
{{main|Picture clause}}
{{main|Picture clause}}


A picture clause element defines how a particular data item should be formatted, for output. It consists of a string of letters and digits. It is similar to the FORTRAN format specifier seen in the READ and WRITE statements, or the formatting strings seen in more modern languages like C. This became an important part of COBOL.
A picture clause element defines the length of any given datum, much like a dictionary defines words. In particular a picture clause determines whether the datum contains letters and numbers, and other characteristics of the data, including format, size, and data type.


==Sample program==
==Sample program==
This is a sample COMTRAN program, doing payroll calculations.<ref>See the example on page 87 of the [http://bitsavers.org/pdf/ibm/7090/F28-8043_CommercialTranslatorGenInfMan_Ju60.pdf IBM F28-8043 Commercial Translator General Reference Manual, June 1960] (pdf, 8.2M)</ref>
This is a sample COMTRAN program, doing payroll calculations.<ref>See the example on page 87 of the [http://bitsavers.org/pdf/ibm/7090/F28-8043_CommercialTranslatorGenInfMan_Ju60.pdf IBM F28-8043 Commercial Translator General Reference Manual, June 1960] (pdf, 8.2M)</ref>
<syntaxhighlight lang="cobol">

01001 *PROCEDURE
01001 *PROCEDURE
Line 34: Line 36:
01006 (INSURANCE.PREM) INSPREM,
01006 (INSURANCE.PREM) INSPREM,
01007 (RETIREMENT.PREM) RETPREM,
01007 (RETIREMENT.PREM) RETPREM,
01008 (DEPARTMENT.TOTAl) DPT.
01008 (DEPARTMENT.TOTAL) DPT.
01009 START. OPEN ALL FILES.
01009 START. OPEN ALL FILES.
Line 83: Line 85:
02020 WHT -DETAIL RETIREMENT - DETAIL INSURANCE - DETAIL
02020 WHT -DETAIL RETIREMENT - DETAIL INSURANCE - DETAIL
02021 BONDEDUCT.
02021 BONDEDUCT.
</syntaxhighlight>


==References==
==References==
{{reflist}}
{{Reflist}}

==Further reading==
* ''IBM's Early Computers'', by Charles Bashe, Lyle Johnson, John Palmer, and Emerson Pugh, 1986, MIT Press, {{ISBN|0-262-02225-7}}.


==External links==
==External links==
*[http://www.ancestry.co.uk/learn/library/article.aspx?article=1159 Genealogy Programmers Solve Y2K in 1958]
*[http://www.ancestry.co.uk/learn/library/article.aspx?article=1159 Genealogy Programmers Solve Y2K in 1958] {{Webarchive|url=https://web.archive.org/web/20070304115154/http://www.ancestry.co.uk/learn/library/article.aspx?article=1159 |date=2007-03-04 }}
*[http://bitsavers.org/pdf/ibm/7090/F28-8043_CommercialTranslatorGenInfMan_Ju60.pdf IBM Commercial Translator General Reference Manual] (pdf, 8.2M) Page 87.
*[http://bitsavers.org/pdf/ibm/7090/F28-8043_CommercialTranslatorGenInfMan_Ju60.pdf IBM Commercial Translator General Reference Manual] (pdf, 8.2M) Page 87.

{{Programming languages}}


[[Category:Procedural programming languages]]
[[Category:Procedural programming languages]]

Latest revision as of 05:57, 6 November 2023

COMTRAN
DeveloperBob Bemer
First appeared1957 (1957)
Influenced by
FLOW-MATIC
Influenced
COBOL

COMTRAN (COMmercial TRANslator) is an early programming language developed at IBM. It was intended as the business programming equivalent of the scientific programming language FORTRAN (FORmula TRANslator). 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.

Contributions to COBOL[edit]

Several elements of COMTRAN were incorporated into COBOL:

  • Picture clause.
  • Paragraphing: dividing code into paragraphs (with line breaks not significant).
  • Paragraph names. Assigning names to paragraphs, and jumps (GO TO's) are to a paragraph name, not to a line number.
  • AT END clause on file input operations.
  • Figurative constant HIGH-VALUE.
  • Passing a numeric value (RETURN-CODE) back to the operating system when the program terminates.

Picture clause[edit]

A picture clause element defines how a particular data item should be formatted, for output. It consists of a string of letters and digits. It is similar to the FORTRAN format specifier seen in the READ and WRITE statements, or the formatting strings seen in more modern languages like C. This became an important part of COBOL.

Sample program[edit]

This is a sample COMTRAN program, doing payroll calculations.[1]

 01001 *PROCEDURE
 
 01002 CALL (EMPLOYEE.NUMBER)  EMPLOYNO,
 01003      (BONDEDUCTION)     BONDEDUCT,
 01004      (BONDENOMINATION)  BONDENOM,
 01005      (BONDACCUMULATION) BONDACCUM,
 01006      (INSURANCE.PREM)   INSPREM,
 01007      (RETIREMENT.PREM)  RETPREM,
 01008      (DEPARTMENT.TOTAL) DPT.
 
 01009 START. OPEN ALL FILES.
 
 01010 GET.MASTER. GET MASTER, AT END DO END.OF.MASTERS.
 
 01011 GET.DETAIL. GET DETAIL, AT END GO TO END.OF.DETAILS.
 
 01012 COMPARE.EMPLOYEE.NUMBERS. GO TO COMPUTE.PAY WHEN DETAIL EMPLOYNO
 01013       IS EQUAL TO MASTER EMPLOYNO, LOW.DETAIL WHEN DETAIL
 01014       EMPLOYNO IS LESS THAN MASTER EMPLOYNO.
 
 01015 HIGH.DETAIL. MOVE 'M' TO MASTER ERRORCODE, FILE MASTER IN
 01016       ERROR.FILE.
 
 01017         GET MASTER, AT END DO END.OF.MASTERS.
 
 01018         GO TO COMPARE.EMPLOYEE.NUMBERS.
 
 02001 LOW.DETAIL. MOVE 'D' TO DETAIL ERRORCODE, FILE DETAIL IN
 02002        ERROR.FILE.
 
 02003          GO TO GET.DETAIL.
 
 02004 END.OF.MASTERS. IF DETAIL EMPLOYNO = HIGH.VALUE THEN GO TO
 02005         END.OF.RUN OTHERWISE SET MASTER EMPLOYNO = HIGH.VALUE.
 
 02006 END.OF.DETAILS. IF MASTEREMPLOYNO = HIGH.VALUE THEN GO TO
 02007         END.OF.RUN OTHERWISE SET DETAIL EMPLOYNO = HIGH.VALUE, GO
 02008         TO COMPARE.EMPLOYEE.NUMBERS.
 
 02009 END.OF.RUN. MOVE CORRESPONDING GRAND.TOTAL TO PAYRECORD, FILE
 02010        PAYRECORD, CLOSE ALL FILES.
 02011          STOP 1234.
 
 02012 COMPUTE.PAY. IF DETAIL HOURS IS GREATER THAN 40 THEN SET DETAIL
 02013        GROSS = (DETAIL HOURS - 40) * MASTER RATE * 1.5.
 
 02014        SET DETAIL GROSS = DETAIL GROSS + MASTER RATE * 40, DO
 02015      FICA.ROUTINE, DO WITHHOLDING.TAX.ROUTINE.
 
 02016        IF MASTER BONDEDUCT IS NOT EQUAL TO ZERO THEN DO
 02017      BOND.ROUTINE.
 
 02018        DO SEARCH FOR INDEX = 1(1)12.
 
 02019 NET. SET PAYRECORD NETPAY = DETAIL GROSS - DETAIL FICA - DETAIL
 02020        WHT -DETAIL RETIREMENT - DETAIL INSURANCE - DETAIL
 02021        BONDEDUCT.

References[edit]

  1. ^ See the example on page 87 of the IBM F28-8043 Commercial Translator General Reference Manual, June 1960 (pdf, 8.2M)

Further reading[edit]

  • IBM's Early Computers, by Charles Bashe, Lyle Johnson, John Palmer, and Emerson Pugh, 1986, MIT Press, ISBN 0-262-02225-7.

External links[edit]