Language H(ID:2154/lan005)

Simplified general purpose business language 


Business processing language from NCR, English style

Cormack National Cash Register 1962

Designed to permit COBOL style operations in a simpler language, and suitable for running on a smaller machine


Samples:
References:
  • Cormack A.S. "Early operating experience with Language H" view details Abstract: This paper assumes a basic knowledge of the fundamental principles of automatic programming languages, and is intended to show some of the practical advantages that have been obtained by using such a language. A brief description of Language H and the factors which influenced its development is included, but the main emphasis lies on the actual operation of the system as a whole. External link: online copy Extract: Introduction
    Introduction
    With the current emphasis on COBOL as a Common Universal Business Language, and the considerable effort that is being made to get COBOL accepted by all manufacturers, it is not surprising that a certain amount of criticism is levelled at those manufacturers who have taken the decision to design and implement their own languages.
    In answer to this criticism most manufacturers have agreed to offer COBOL as well as their own language. The choice is then up to the user to decide which one is the more suitable for his particular purpose.

    The major factor which influenced the decision to proceed with the development of Language H stemmed from a consideration for the smaller machine user. Most of the effort so far has been directed towards comprehensive languages for large installations, and although it is obviously possible to write compilers for this type of language for a small machine, the number of runs and the time needed for translation do not make this a practical proposition.
    The suggested method of taking a subset of the complete language is, at best, only a partial solution. The difficulty of extracting an effective subset without in some way destroying the logical completeness of the language is almost as great as designing an entirely new language.

    Extract: Basic Philosophy
    Basic philosophy
    The main aim behind the development of Language H was one of simplicity. It was hoped that the version currently running would prove to be the minimum effective system, and to achieve this a greater part of the work was directed towards deciding, not what to include, but what to exclude. This version, although complete in itself, is intended to be a foundation upon which the language will be allowed to grow naturally. It is envisaged that expansion will depend as much upon field trials and suggestions from users as upon the compiler writers themselves. In this way it is hoped to achieve eventually a multi-level language which can be truncated at natural logical stages to suit the particular requirements of different installations, without in any way affecting the structure of the language.
    Extract: Brief description
    Brief description
    Language H is a simple, single level, procedural language allowing one level of subscripting, in which many data-processing problems may be expressed. No separate description of the data being handled is required of the user'sufficient information is obtained by implication, from the way phrases are written, to provide a range of checks on validity and to enable appropriate machine-code to be produced.

    The conventions required to meet the needs of filing and input and output specifications are simple and straightforward.
    Some of the requirements borne in mind in developing this approach have been the following:
    (1)     The smallest possible number of effective phrases should be provided.
    (2)     The load on the memory of the user'should be kept as small as possible.
    (3)     Any program should be unambiguous.
    (4)     The  structure of the language should be independent of any particular computer.
    (5)     The unit of information handled should be of the size of a number, a name, or a short comment; only exceptionally is it, on the one hand, a single character or, on the other, a record.

    In spite of the simplicity of the language it is not as naive as perhaps it may appear from the description. It has most of the facilities which people have been led to expect from autocoding languages, such as:
    (a)     nested repeat loops;
    (b)     conditional branch commands;
    (c)     provision for segmentation;
    (d)     a perform command to permit sections of program to be obeyed out of sequence;
    (e)     one level of subscripting for list work.
    Some of the proposals for the next version include provisions for sorting, random access, the increase of levels for subscripting, and the extension of the file commands.
    The example in Fig. 1 is an extract from the Language H Payroll program mentioned later in the paper. It is not a complete section and is, by itself, meaningless, but it is intended to illustrate the way in which the language is used to handle data-processing problems, and to give an indication of the effect of some of the commands.
    It will be noticed that punctuation is used merely to increase readability and does not have the syntactic meaning which some other languages assign to it. In other words, it is not necessary to remember that, say, a full stop terminates an imperative sentence and that a comma terminates a conditional expression or that an imperative statement is terminated by a semi-colon. The syntax of Language H is defined mainly by the way in which the commands are written.
          in The Computer Journal 5(3) October 1962 view details
  • d'Agapeyeff, A.; "Current developments in commercial automatic programming" pp107-111 view details Abstract: This paper discusses the progress made in certain aspects of commercial automatic programming, presents a progress report on the major commercial languages, and offers some hopes and expectations for the future. Extract: The properties of data
    The properties of data
    It is, of course. the available properties of the data which to a large extent determine the power of an automatic programming system, and distinguish commercial from mathematical languages.

    Consider the function of moving data within the internal store. In a mathematical language the problem is trivial because the unit which may be moved is very restricted, often to the contents of a single machine word. But in a commercial language this limitation is not acceptable. There, data units will occur in a variety of shapes and sizes. for example:

    i) Fixed Length Units (i.e. those which on each occurrence will always be of the same length) may vary widely in size and will tend not to fit comfortably into a given number of words or other physical unit of the machine. Generally the move will be performed by a simple loop. but there are some awkward points such as what to fill in the destination if the source is the smaller in size;
    ii) Static Variable Length Units (i.e. those whose length may vary when they are individually created but will not change subsequently) are more difficult to handle. Essentially the loop will have two controlling variables whose value will be determined at the moment of execution. There are again awkward points such as the detection of overflow in the destination (and deciding what to do when it occurs, since this will only be discovered at run time);
    iii) Dynamically Variable Length Units (i.e. those which expand and contract to fit the data placed in them) are even more difficult. They have all the problems of (ii), together with the need to find and allot space when they expand.

    It is clear, therefore, that a simple MOVE is less innocuous than it might seem at first. Actually the above remarks assumed that it was not possible to move data between different classes of units. The absence of this restriction, and the performance of editing functions during the process, can make the whole thing very complicated for the compiler indeed.

    The properties of data will have a similar influence on most of the other operators or verbs in the language.

    This has particular significance when the desired attribute is contrary to that pertaining on the actual machine. Thus arithmetic on decimal numbers having a fractional part is thoroughly unpleasant on fixed-word binary machines.

    Nevertheless, despite these difficulties considerable progress has been made toward giving the user the kind of data properties he requires. Unfortunately this progress has not been matched by an improvement in machine design so that few, if any, of the languages have achieved all of the following.

    (a) The arbitrary grouping of different classes of unit, allowing their occurrence to be optional or for the repetition in variable-length lists.

    (b) The input and output of arbitrary types of records, or other conglomerations of data units. having flexible formats. editing conventions and representations

    (c) The manipulation of individual characters, with the number and position of the characters being determined at run time.

    (d) The dynamic renaming or grouping of data units. Yet users do need these facilities. It is not always acknowledged that getting the main files on to the computer, before any processing is done, may constitute the largest single operation in many applications. Furthermore. these files will have a separate independent existence apart from the several programs which refer to them.

    Progress has also been made in declaring the data properties in such a way as to imply a number of necessary procedures to the compiler. For example, if one declares both the layout of some record to be printed, and the printed record, the compiler may deduce the necessary conversion and editing processes. It is here, in the area of input and output, that some languages have approached the aim of being problem-orientated. Extract: FILECODE, and LANGUAGE H
    FILECODE, and LANGUAGE H
    We now come to the two English projects which are actually working. FILECODE is the language implemented on Sirius and promised for Pegasus; while LANGUAGE H is working on the National-Elliott 405 and intended for the 315 and 803. Both are a little primitive and their facilities cannot be compared to those contained in the languages described above. FILECODE would appear to be the major effort because it incorporates a Data Division: without it LANGUAGE H might be regarded as an elegant English-language assembly code.
    However, the simple fact that both languages work is in itself grounds for congratulating their originators. Both must be providing useful practical experience; and one further admires the realistic way these projects were tackled with the minimum of advanced promises.
          in The Computer Journal 5(2) July 1962 view details
  • Kilner, Daphne "Automatic Programming Languages for Business and Science" view details Abstract: A Conference under this title was held on 17-18 April 1962 by the Mathematics Department of the Northampton College of Advanced Technology in co-operation with the British Computer Society. The following is a summary report on the Proceedings which will be published in full in the Computer Journal Extract: Aims
    Aims
    What do we want from these Automatic Programming Languages? This is a more difficult question to answer than appears on the surface as more than one participant in the recent Conference of this title made clear. Two aims are paramount: to make the writing of computer programs easier and to bring about compatibility of use between the computers themselves. Towards the close of the Proceedings one speaker ventured that we were nowhere near achieving the second nor, indeed, if COBOL were to be extended any further, to achieving the first.
    These aims can be amplified. Easier writing of programs implies that they will be written in less, perhaps in much less, time, that people unskilled in the use of machine language will still be able to write programs for computers after a minimum of training, that programs will be written in a language more easily read and followed, even by those completely unversed in the computer art, such as business administrators, that even the skilled in this field will be relieved of the tedium of writing involved machine language programs, time-consuming and prone to error as this process is. Compatibility of use will permit a ready exchange of programs and applications between installations and even of programmers themselves (if this is an advantage!), for the preparation of programs will tend to be more standardised as well as simplified. Ultimately, to be complete, this compatibility implies one universal language which can be implemented for all digital computers.
    Extract: FACT
    LANGUAGE H
    The Conference heard of some other commercial languages developed by manufacturers, who did heed the advice given by the British Computer Society, and who had other good reasons for pursuing their own developments. LANGUAGE H, for example, produced by National-Elliott, was commendable because it operated in a region where COBOL was weak, i.e. on a small machine. Little effort is being made to provide such languages for small machines and yet the small user needs them every bit as much as the large.
    The first compiler for Language H was produced in August 1961 for the National-Elliott 405 M. Its revision, expected to be ready by May 1962, would contain 23,000 1-address instructions. Operational procedures are reduced to a minimum, the instructions being as fully boot-strapped as possible. Comprehensive checking is done on the first run through with the Compiler, after which the object program is printed out together with a list of errors and a "map" of the immediate access store, invaluable in debugging. It was pointed out that this number of instructions would be the equivalent of 11,000 3-address instructions in the FACT compiler, i.e. it was about 1/20 of the size of FACT, but for this it would do 1/18 as much work. Another interesting comparison was made of the expansion ratio between the number of instructions in the source language and the resulting number of instructions in the object language: Language H has an expansion ratio of 4, FACT one of 35.

          in The Computer Bulletin September 1962 view details
  • Hirschmann, W. review of d'Agapeyeff 1962 (Comp J) view details Abstract: In a very short and concentrated paper, the author tries to treat three different aspects of commercial automatic programming: general requirements of a commercial compiler as opposed to those of an algebraic compiler; progress reports on existing commercial languages; and outlook into the future. The result is rather fragmentary. Time or space limits prevented the author from making more than a few relevant though well taken points concerning each of his topics.

    The paper contains some detailed description of the problems involved in data handling in commercial translators with emphasis on the need for more flexibility than presently available. The author, as have many before him, again questions the value of attempting to create languages "any fool can use" at the cost of efficiency and flexibility, when even these languages will not prevent the fool from having to debug his programs.

    On existing commercial translators, the author lists and compares briefly COBOL, FACT, COMTRAN and several English efforts which "are either not working, or not on a par with their American equivalents."

    The paper concludes with some not so new but nevertheless appropriate recommendations to computer manufacturers and standards committees, and the expectation of the universal acceptance of COBOL as He commercial language.

          in ACM Computing Reviews 4(01) January-February, 1963 view details
  • Beaven, A. H. "PROGRESS REPORT ON LANGUAGE H" Computer Bulletin March 1964 view details Abstract: In April 1962 an account of some early operating experience with Language H was given at the BCS Conference on Automatic Programming Languages. (Ref. BCS Journal, Vol. 5, No.3.) The following notes provide a brief descrip-tion of Language H and an account of further operating experience since the BCS Conference. Extract: Progress Report
    Language H has been designed to avoid the complications of data and environment divisions and, as a result, a source program consists of a brief heading and a set of statements which form the procedure division. These statements may be grouped. into segments, called chapters, for processing convenience.
    The program statements are all executive in character, i.e. of the form "Do something" and are independent of the type of computer on which the object program will ultimately run. The first word in a source program statement is always an imperative verb and subsequent words are either operand names or "noise" words, the latter being inserted to increase the intelligibility of the statement.
    For example, a valid Language H statement is:
         ADD GROSS PAY TO RUNNING TOTAL.
    Here, ADD is the imperative verb, GROSS PAY and RUNNING TOTAL are names of operands and TO is a redundant "noise" word.
    Language H employs a modest number of "reserved" words, such as ADD in the example, there being 84 reserved words in all including 15 "noise" words. The number of words used as verbs is 23 and there are 61 possible variations of program statement format. There are, in addition, 14 per-missible qualifying, or conditional, phrases which may be used to alter the sequence in which program statements are performed.
    For example, the statement:
    GO TO LEAVER OUTPUT IF LEAVER FLAG IS ON will be obeyed only if a particular flag called LEAVER
    FLAG is in the "ON" state. If the statement is obeyed, a jump is made to the appropriate program statement labelled LEAVER OUTPUT.
    Operands may be classed as either numeric, alpha-numeric or special, and there are 15 different types of operand permissible in the Language.
    Punctuation has no syntactic significance and may be used or not at the cO/lVenience of the programmer. In particular, the names of operands do not need hyphens and program statements do not have to terminate with full-stops.
    The Compiler has been implemented for three different types of computer and work is in hand to implement the Language on at least two more types.
    As an example of the compiling performance of one version of the current Language H Compilers, the following figures are of interest:
    (i) Number of statements in Source program 1,900
    (ii) M/C code instructions (single address) produced 21,000
    (iii) Compiling time 60 minutes
    (iv) Expansion ratio (ii)/(i) 11
    (v) Source Compilation rate (i)/(iii) (Statements per minute) 31.7
    (vi) Object Compilation rate (ii)/(iii) (Instructions per minute) 350.0

    These results are obtained from a particular program and are not, therefore, universally applicable.
    Language H has been used as a training language on programming courses for beginners with considerable success and a detailed programmers' manual is in the course of publication.
    Several production jobs written in Language H have been operating successfully in NCR's Financial Computing Centre for more than a year and a great deal of practical operating experience in the use of the Language has been gained.
          in ACM Computing Reviews 4(01) January-February, 1963 view details
  • Shepardson, R. C. review of Cormack 1962 view details Abstract: The author, after mentioning some of the facilities in Language H (a business data processing language), discusses the operation of the compiler implemented on the National-Elliot 405M to compile code for the National-Elliot 803B. The reviewer believes the paper only of value to users (or potential users) of National-Elliot 405M or 803B equipment.


          in ACM Computing Reviews 5(04) July-August 1964 view details
  • Stock, Karl F. "A listing of some programming languages and their users" in RZ-Informationen. Graz: Rechenzentrum Graz 1971 134 view details Abstract: 321 Programmiersprachen mit Angabe der Computer-Hersteller, auf deren Anlagen die entsprechenden Sprachen verwendet werden kennen. Register der 74 Computer-Firmen; Reihenfolge der Programmiersprachen nach der Anzahl der Herstellerfirmen, auf deren Anlagen die Sprache implementiert ist; Reihenfolge der Herstellerfirmen nach der Anzahl der verwendeten Programmiersprachen.

    [321 programming languages with indication of the computer manufacturers, on whose machinery the appropriate languages are used to know.  Register of the 74 computer companies;  Sequence of the programming languages after the number of manufacturing firms, on whose plants the language is implemented;  Sequence of the manufacturing firms after the number of used programming languages.]
          in ACM Computing Reviews 5(04) July-August 1964 view details
  • Stock, Marylene and Stock, Karl F. "Bibliography of Programming Languages: Books, User Manuals and Articles from PLANKALKUL to PL/I" Verlag Dokumentation, Pullach/Munchen 1973 318 view details Abstract: PREFACE  AND  INTRODUCTION
    The exact number of all the programming languages still in use, and those which are no longer used, is unknown. Zemanek calls the abundance of programming languages and their many dialects a "language Babel". When a new programming language is developed, only its name is known at first and it takes a while before publications about it appear. For some languages, the only relevant literature stays inside the individual companies; some are reported on in papers and magazines; and only a few, such as ALGOL, BASIC, COBOL, FORTRAN, and PL/1, become known to a wider public through various text- and handbooks. The situation surrounding the application of these languages in many computer centers is a similar one.

    There are differing opinions on the concept "programming languages". What is called a programming language by some may be termed a program, a processor, or a generator by others. Since there are no sharp borderlines in the field of programming languages, works were considered here which deal with machine languages, assemblers, autocoders, syntax and compilers, processors and generators, as well as with general higher programming languages.

    The bibliography contains some 2,700 titles of books, magazines and essays for around 300 programming languages. However, as shown by the "Overview of Existing Programming Languages", there are more than 300 such languages. The "Overview" lists a total of 676 programming languages, but this is certainly incomplete. One author ' has already announced the "next 700 programming languages"; it is to be hoped the many users may be spared such a great variety for reasons of compatibility. The graphic representations (illustrations 1 & 2) show the development and proportion of the most widely-used programming languages, as measured by the number of publications listed here and by the number of computer manufacturers and software firms who have implemented the language in question. The illustrations show FORTRAN to be in the lead at the present time. PL/1 is advancing rapidly, although PL/1 compilers are not yet seen very often outside of IBM.

    Some experts believe PL/1 will replace even the widely-used languages such as FORTRAN, COBOL, and ALGOL.4) If this does occur, it will surely take some time - as shown by the chronological diagram (illustration 2) .

    It would be desirable from the user's point of view to reduce this language confusion down to the most advantageous languages. Those languages still maintained should incorporate the special facets and advantages of the otherwise superfluous languages. Obviously such demands are not in the interests of computer production firms, especially when one considers that a FORTRAN program can be executed on nearly all third-generation computers.

    The titles in this bibliography are organized alphabetically according to programming language, and within a language chronologically and again alphabetically within a given year. Preceding the first programming language in the alphabet, literature is listed on several languages, as are general papers on programming languages and on the theory of formal languages (AAA).
    As far as possible, the most of titles are based on autopsy. However, the bibliographical description of sone titles will not satisfy bibliography-documentation demands, since they are based on inaccurate information in various sources. Translation titles whose original titles could not be found through bibliographical research were not included. ' In view of the fact that nany libraries do not have the quoted papers, all magazine essays should have been listed with the volume, the year, issue number and the complete number of pages (e.g. pp. 721-783), so that interlibrary loans could take place with fast reader service. Unfortunately, these data were not always found.

    It is hoped that this bibliography will help the electronic data processing expert, and those who wish to select the appropriate programming language from the many available, to find a way through the language Babel.

    We wish to offer special thanks to Mr. Klaus G. Saur and the staff of Verlag Dokumentation for their publishing work.

    Graz / Austria, May, 1973
          in ACM Computing Reviews 5(04) July-August 1964 view details