Grabbe_Ramo_Wooldridge_Handbook_of_Automation_Computation_and_Control_Vol_2_1959 Grabbe Ramo Wooldridge Handbook Of Automation Computation And Control Vol 2 1959

Grabbe_Ramo_Wooldridge_Handbook_of_Automation_Computation_and_Control_Vol_2_1959 Grabbe_Ramo_Wooldridge_Handbook_of_Automation_Computation_and_Control_Vol_2_1959

User Manual: Grabbe_Ramo_Wooldridge_Handbook_of_Automation_Computation_and_Control_Vol_2_1959

Open the PDF directly: View PDF PDF.
Page Count: 1119

DownloadGrabbe_Ramo_Wooldridge_Handbook_of_Automation_Computation_and_Control_Vol_2_1959 Grabbe Ramo Wooldridge Handbook Of Automation Computation And Control Vol 2 1959
Open PDF In BrowserView PDF
HANDBOOK OF AUTOMAtiON,
COMPUTATION, AND CONTROL

Volume

2

COMPUTERS AND DATA PROCESSING

NEW YORK

JOHN WILEY & SONS, INC.

London • Chapman & Hall. Limited

"

HANDBOOK OF AUTOMATION,
COMPUTATION, AND CONTROL
Volume

2

COMPUTERS AND DATA PROCESSING

Prepared by a Staff of Specialists

Edited by
EUGENE M. GRABBE
SIMON RAMO
DEAN E. WOOLDRIDGE
Thompson Ramo Wooldridge Inc.
Los Angeles. California

Copyright

©

1959, by John Wiley & Sons, Ine.

All Rights Reserved. This book or any part
thereof must not be reproduced in any form
without the written permission of the publisher.
Library of Congress Catalog Card Number: 58·10800
Printed in the' United States of America

CONTRIBUTORS

L. D. AMDAHL, Thompson Ramo Wooldridge Inc., Los Angeles, California
(Chapter 17)

C. E. AMMANN, American Airlines, New York City, New York. (Chapter 9)
I. L. AUERBACH, Auerbach Electronics Corporation, Narberth, Pennsylvania
(Chapters 15 and 16)

G. A. BEKEY, Space Technology Laboratories, Inc., Los Angeles, California
(Chapter 23)
E. E. BOLLES, Thompson Ramo Wooldridge Inc., Los Angeles, California
(Co-Editor, Part D)
R. BOSAK, System Development Corporation, Santa Monica, California
(Chapter 9)
J. K. BRIG DEN, Space Technology Laboratories, Inc., Los Angeles, California (Chapter 20)
D. R. BROWN, The MITRE Corporation (formerly with Massachusetts Institute of Technology), Lexington, Massachusetts (Chapter 19)
J. W. BUSBY, Alwac Corporation, New York City New York (Chapter 5)

J. O. CAMPEAU, Litton Industries, Beverly Hills, California (Chapter 31)
R. G. CANNING, Canning, Sisson and Associates, Los Angeles, Calif9rnia
(Chapter 4)
J. W. CARR, III, University of North Carolina (formerly with the University
of Michigan), Chapel Hill, North Carolina (Chapter 2)
R. B. CONN, Space Technology Laboratories, Inc., Los Angeles, California
(Co-Editor, Part C)
E. D. COWLES, The Detroit Edison Company, Detroit, Michigan (Chapter 8)
H. L. ENGEL, Thompson Ramo Wooldridge Inc., Los Angeles, California
(Chapter 18)
E. M. GRABBE, Thompson Ramo Wooldridge Inc., Los Angeles, California
(Co-Editor, Part D; Chapter 1)
B. M. GORDON, EPSCO, Inc., Boston, Massachusetts (Chapter 29)
W. J. KARPLUS, University of California at Los Angeles (Editor, Part E;
Chapters 21, 25, and 27)
W. KINDLE, Electronic Associates, Inc., EI Segundo, California (Chapter 21)
v

CONTRIBUTORS

vi

R. T. KOLL,Creole Petroleum Corporation, Caracas, Venezuela (Chapter
10)
J. F. LA FONTAINE, EPSCO, Inc., Boston, Massachusetts (Chapter 29)
H. T. LARSON, Aeronutronic Systems, Inc., Santa Ana, California (CoEditor, Part C)
C. T. LEONDES, University of California at Los Angeles (Chapter 28)
H. S. LEVIN, Arthur Young & Company, New York City, New York
(Chapter 7)
H. LOW, Space Technology Laboratories, Inc., Los Angeles, California
(Chapter 26)
R. C. MACKEY, University of California at Los Angeles (Chapter 24)
M. E. MARON, Thompson Ramo Wooldridge Inc., Los Angeles, California
(Chapter 11)
M. J. MENDELSON, Norden Division of United Aircraft Corporation,
Gardena, California (Chapter 3)
I. PFEFFER, Space Technology Laboratories, Inc., Los Angeles, California
(Chapter 22)

J. I. RAFFEL, Massachusetts Institute of Technology, Lincoln Laboratory,
Lexington, Massachusetts (Chapter 19)
C. W. SCHMIDT, Teleregister Corporation, Los Angeles, California (Chapter 9)
R. L. SISSON, Canning, Sisson and Associates, Los Angeles, California
(Chapter 4)
N. H. TAYLOR, Itek Corporation, Boston, Massachusetts (formerly with
Massachusetts Institute of Technology) (Chapter 14)
H. TELLIER, General' Electric Company, Richland, Washington (Chapter 8)
E. TOMASH, Telemeter Magnetics, Inc., Los Angeles, California (Chapter 6)
L. L. VAN OOSTEN, Allstate Insurance Company, Skokie, Illinois (Chapter 8)
A. C. VANSELOW, The Franklin Life Insurance Company, Springfield, Illinois
(Chapter 8)
R. L. VAN WINKLE, The Franklin Life Insurance Company, Springfield,
Illinois (Chapter 8)
W. H. WARE, The RAND Corporation, Santa Monica, California (Chapters
12 and 13)
G. P. WEST, Thompson Ramo Wooldridge Inc., Los Angeles, California
(Chapter 30)

J. H. YIENGER, Aeronutronic Systems, Inc., Santa Ana, California (Chapter 5)

FOREWORD

The proliferation of knowledge now makes it most difficult for scientists
or engineers to keep ahead of change even in their own fields, let alone
in contiguous fields. One of the fields where recent change has been most
noticeable, and in fact exponential, has been automatic control. This
three-volume Handbook will aid individuals in almost every branch of
technology who must constantly refresh their memories or refurbish their
knowledge about many aspects of their work.
Automation, computation, and control, as we know them, have been
evolving for centuries, but within the last generation their impact has
been felt in nearly every segment of human endeavor. Feedback principles were exploited by Leonardo da Vinci and applied by J ames Watt.
Some of the early theoretical work of importance was contributed by
Lord Kelvin, who also, together with Charles Babbage, pointed the way
to the development of today's giant cc.mputational aids. Since about the
turn of the present century, the works of men like Minorsky, Nyquist,
Wiener, Bush, Hazen, and von Neumann gave quantum jumps to computation and control. But it was during and immediately following World
War II that quantum jumps occurred in abundance. This was the period
when theories of control, new concepts of computation, new areas of
application, and a host of new devices appeared with great rapidity.
Technologists now find these fields charged with challenge, but at the
saine time hard to encompass. From the activities of World War II
such terms as servomechanism, feedback control, digital and analog
computer, transducer, and system engineering reached maturity. More
recently the word automation has become deeply entrenched as meaning
something about the field on which no two people agree.
Philosophically minded technologists do not accept automation merely
as a third Industrial Revolution. They see it, as they stand about where
the editors of this Handbook stood when they projected this work, as a
manifestation of one of the greatest Intellectual Revolutions in Thinking
that has occurred for a long time. They see in automation the natural
vii

viii

FOREWORD

consequence of man's urge to exploit modern science on a wide front to
perform useful tasks in, for example, manufacturing, transportation,
business, physical science, social science, medicine, the military, and
government. They see that it has brought great change to our conventional way of thinking about the human use of human beings, to quote
Norbert Wiener, and in turn about how our ~ngineers will be trained to
solve tomorrow's engineering problems. They even see that it has precipitated some deep thinking on the part of our industrial and union leadership about the organization of workers in order not to hold captive bodies
of workmen for jobs that automation, computation, and control have
swept or will soon sweep away.
Perhaps the important new face on today's technological scene is the
degree to which the broad field needs codification and unification in order
that technologists can optimize their role to exploit it for the general
good. One of the early instances of organized academic instruction in
the field was at The Massachusetts Institute of Technology in the Electrical Engineering Department in September 1939, as a course entitled
Theory and Application of Servomechanisms. I can well recollect
discussions around 1940 with the late Dr. Donald P. Campbell and
Dr. Harold L.' ,Hazen,which led temporarily to renaming the course
Dynamic Analysi,s of Automatic Control Systems because so few students
knew what "servomechanisms" were. But when the OI's returned from
war everybody knew, and everyone wanted instruction. Since that time
engineering colleges throughout the land have elected to offer organized
instruction in a multitude of topics ranging from the most abstract
mathematical fundamentals to the most specific applications of hardware.
Textbooks are available on every subject along this broad spectrum.
But still the practicing control or computer technologist experiences
great difficulty keeping abreast of what he needs to know.
As organized instruction appeared in educational institutions, and as
industrial activity increased, professional societies organized groups in
the areas of control and computation to meet the needs of their members
to tell one another about technical advances. Within the past five years
several trade journals have undertaken to report regularly on developments in theory, components, and systems. The net effect of all this is
that the technologist is overwhelmed with fragmentary, sometimes contradictory, redundant information that comes at him at random and in
many languages. The problem of assessing and codifying even a portion
of this avalanche of knowledge is beyond the capabilities of even the
most able technologist.
The editors of the Handbook have rightly concluded that what each
technologist needs for his long-term professional growth is to have a body

FOREWORD

ix

of knowledge that is negotiable at par in anyone of a number of related
fields for many years to come. It would be ideal, of course, if a college
education could give a prospective technologist this kind of knowledge.
It is in the hope of doing this that engineering curricula are becoming
more broadly based in science and engineering science. But it is unlikely
that even this kind of college training will be adequate to cope with the
consequences of the rapid proliferation of technology as is manifest in
the area of automation, computation, and control. Hence, handbooks
are an essential component of the technical literature when they provide
the unity and continuity that are requisite.
I can think of no better way to describe this Handbook than to say
that the editors, in both their organization of material and selection of
substance, have given technologists a unified work of lasting value. It
truly represents today's optimum package of that body of knowledge that
will be negotiable at par by technologists for many years to come in a
wide range of disciplines.
GORDON S. BROWN
Dean, School of Engineering

Massachusetts Institute of Technology

PREFACE

Accelerated advances in technology have brought a steady stream of
automatic machines to our factories, offices, and homes. The earliest
automation forms were concerned with doing work, followed by the controlling function, and recently the big surge in automation has been
directed toward data handling functions. New devices ranging from
digital computers to satellites have resulted from military and other
government research and development programs. Such activity will
continue to have an important impact on automation progress.
One of the pressures for the development of automation has been the
growing complexity and speed of business and industrial operations.
But automation in turn accelerates the tempo of whatever it touches, so
that we can expect future systems to be even larger, faster, and more
complex. While a segment of engineering will continue to mastermind,
by rule of thumb procedures, the design and construction of automatic
equipment and systems, a growing percentage of engineering effort will
be devoted to activities that may be classified as problem solving. The
activities of the problem solver involve analysis of previous behavior
of systems and equipment, simulation of present situations, and predictions about the future. In the past, problem solving has largely been
practiced by engineers and scientists, using slide rules and hand calculators, but with the advent of large-scale data processing systems,
the range of applications has been broadened considerably to include
economic, government, and social activities. Air traffic control, traffic
simulation, library searching, and language translation, are typical of
the problems that have been attacked.
This Handbook is directed toward the problem solvers-the engineers,
scientists, technicians, managers, and others from all walks of life who
are concerned with applying technology to the mushrooming developments in automatic equipment and systems. It is our purpose to gather
together in one place the available theory and information on general
mathematics, feedback control, computers, data processing, and systems
xi

PREFACE

xii

design. The emphasis has been on practical methods of applying theory,
new techniques and components, and the ever broadening role of the
electronic computer. Each chapter starts with definitions and descriptions aimed at providing perspective and moves on to more complicated
theory, analysis, and applications. In general, the Handbook assumes
some engineering training and will serve as an information source and
refresher for practicing engineers. For management, it will provide a
frame of reference and background material for understanding modern
techniques of importance to business and industry. To others engaged
in various ramifications of automation systems, the Handbook will provide a source of definitions and descriptive material about new areas of
technology.
It would be difficult for anyone individual or small group of individuals to prepare a handbook of this type. A large number of contributors, each with a field of specialty, is required to provide the engineer
with the desired coverage. With such a broad field, it is difficult to
treat all material in a homogeneous manner. Topics in new fields are
given in more detail than the older, established ones since there is a need
for more background information on these new subj ects. The organization
of the material is in three volumes as shown on the inside cover of the
Handbook. Volume 1 is on Control Fundamentals, Volume 2 is con..,
cerned with Computers and Data Processing, and Volume 3 with Systems
and Components.
In keeping with the purpose of this Handbook, Volume 1 has a strong
treatment of general mathematics which includes chapters on subjects
not ordinarily found in engineering handbooks. These include sets
and relations, Boolean algebra, probability, and statistics. Additional
chapters are devoted to numerical analysis, operations research, and
information theory. Finally, the present status of feedback control
theory is summarized in eight chapters. Components have been placed
with systcms in Volume 3 rather than with control theory in Volume 1,
although any discussion of feedback control must, of necessity, be concerned with components.
The importance of computing in rescarch, development, production,
real time process control, and business applications, has steadily increased.
Hence, Volume 2 is devoted entirely to the design and use of analog and
digital computers and data processors. In addition to covering the status
of knowledge today in these fields, there are chapters on unusual computer systems, magnetic core and transistor circuits, and an advanced
treatment of programming. Volume 3 emphasizes systems engineering.
A part of the volume covers techniques used in important industrial
applications by examining typical systems. The treatment of components
I

PREFACE

xiii

is largely concerned with how to select components among the various
alternates, their mathematical description and their integration into
systems. There is also a treatment of the design of components of
considerable importance today. These include magnetic amplifiers,
semiconductors, and gyroscopes.
. We consider this Handbook a pioneering effort in a field that is
steadily pushing back frontiers. It is our hope that these volumes will
not only provide basic information on new fields, but also will inspire
work and further research and development in the fields of automatic
control. The editors are pleased to acknowledge the advice and assistance of Dean Gordon S. Brown and Professor Jerome B. Wiesner of the
Massachusetts Institute of Technology, and Dr. Brockway McMillan of
the Bell Telephone Laboratories, in organizing the subject matter. To
the contributors goes the major credit for providing clear, thorough
treatments of their subjects. The editors are deeply indebted to the
large number of specialists in the control field who have aided and
encouraged this undertaking by reviewing manuscripts and making
valuable suggestions. Many members of the technical staff and secretarial staff of Thompson Ramo Wooldridge Inc. and the RamoWooldridge Division have been especially helpful in speeding the progress
of the Handbook.
EUGENE M. GRABBE
SIMON RAMO
DEAN E. WOOLDRIDGE
June 1959

CONTENTS

A.

COMPUTER TERMINOLOGY
Chapter

B.

,1.

Computer Terminology and Symbols
I. Standardization 1-0 I
2. Symbols 1-0 I
3. Glossary of Terminology 1-02
References 1-22

1-0 I

DIGITAL COMPUTER PROGRAMMING
Chapter

2.

Programming and Coding
I. Nature of Programming 2-0 I
2. Numbers and Scale Factors 2-12
3. Number Conversion Tables 2-26
4. Program Structure and Flow Diagrams 2-44
5. Machine Logic 2-53
6. Instruction Logic of Common Computers 2-63
7. Traditional Programming Techniques
2-128
8. Automatic Programming: Development and Objectives 2-155
9. Automatic Programming: Assembly
Programs 2-163,
10. Automatic Programming: Subroutines,
Subroutine Generators, Utility Programs and Integrated Systems 2-167
II. Automatic Programming: Languages,
Compilers, and Translators 2-186
xv

2-0 I

xvi

CONTENTS
12. Automatic Programming: The IT iranslator: Translator Construction 2-200
13. Automatic Programming: A Soviet
Algebraic Language Compiler 2-228
14. Automatic Programming: Interpreters
2-234
15. Automatic Programming: Recursive
Languages 2-244
16. Logical Programming 2-246
17. Microprogramming 2-251
18. Programs for Maintenance of Equipment 2-258
19. Programming with Natur~1 Language
2-259
Literature. Acknowledgments. and
References 2-260

c.

THE USE OF DIGITAL COMPUTERS AND DATA PROCESSORS
Chapter

3.

Data Processing Operations

3-0 I

I. Introduction 3-0 I
2. Data Collection 3-02
3. Data Conversion. Transcription. and
Editing 3-03
4. Data Output 3-04
5. On-Line Versus Off-Line Processing
3-04
6. Scientific Data Manipulation 3-05
7. Business Data Manipulation 3-06
8. Checking 3-13

Chapter

4.

Quantitative Characteristics of Data
Processing ,Systems
I. Determining System Requirements
4-01
2. Basic System Characteristics ,4-02
3. Basic
Equipment
Characteristics
4-04
4. Measurement of System Factors 4-04
5. Relating System Characteristics to
Equipment Characteristics 4-09
References 4-16

4-0 I

xvii

CONTENTS
Chapter

5.

Equipment Description
I. General Equipment Description 5-0 I
2. Characteristics of Electronic Data
Processing Equipment 5-04
3. Input Equipment 5-09
4. Storage Equipment 5-24
5. Output Equipment 5-33
6. Arithmetic and Logic Unit 5-38
7. Control Equipment 5-40
8. Typical Electronic Digital Equipment
5-43
References 5-43

5-0 I

Chapter

6.

Facility Requirements
I. Physical Installation 6-0 I
2. Personal Requirements 6-09
References 6-13

6-0 I

Chapter

7.

Design of Business Systems
I. General System Requirements 7-01
2. Stages of System Evolution 7-02
3. Detailed Steps of System Design 7-03
4. Economic Impacts of System Changes
7-12
References 7-14

7-0 I

Chapter

8.

Accounting Applications
I. Life Insurance 8-0 I
2. Casualty Insurance 8-08
3. Public Utility Customer Billing
4. Payroll 8-15

8-01

Chapter

9.

Chapter 10.

8-11

Inventory and Scheduling Applications
I. Inventory Control 9-0 I
2. Aircraft Production Scheduling 9-07
References 9-12
Scientific and Engineering Applications
I. Introduction 10-0 I
2. Simultaneous Linear Algebraic Equations and Matrix Inversion 10-02

9-01

10-01

CONTENTS

xviii

3. Characteristic Roots and Vectors
10-04
4. Linear Programming 10-06
5. Differential Equations 10-08
6. Statistical Analysis 10-10
References 10-12
Chapter 11.

Handling of Non-Numerical Information

I 1-0 I

I. In'troduction 11-0 I
2. Performing Logic on a Digital Computer 11-02
3. Game Playing Machines II-II
4. The Machine Translation of Languages
11-13
5. Automatic Literature Searching and
Retrieval 11-16
References I 1-19
D.

DESIGN OF DIGITAL COMPUTERS
Chapter 12.

Digital Computer Fundamentals

12-0 I

I. Digital Computers and Control Systems 12-01
2. Digital
Computer
Fundamentals
12-02
3. Machine Construction 12-07
4. Number Systems and Number Codes
12-12
5. Machine Number Systems 12-18
6. Computer Design Characteristics
12-25
References 12-30
Chapter 13.

Techniques for Reliability

I. Introduction 13-0 I
2. Summary of Operating' and Design
Techniques 13-02
3. Operating Techniques 13-04
4. System Design 13-05
5. Circuit Design 13-07
6. Maintenance 13-08
References 13-10

13-0 I

CONTENTS

xix

Chapter 14.

Components and Basic Circuits
I. Designing for Reliability 14-0 I
2. Components and Circuit Design
14-03
3. Marginal Checking 14-05
4. Reliable Computer Circuits 14-19
5. Components, Characteristics, and Application Notes 14-43
6. Transistors 14-51
References 14-54

14-0 I

Chapter 15.

Magnetic Core Circuits
I. Fundamentals 15-0 I
2. Magnetic Cores 15-04
3. Transfer Loops 15-09
4. Magnetic Shift Registers 15-15
5. Logical Function Elements 15-16
6. Magnetic Core Storages 15-19
7. Timing Control Circuits 15-21
8. Arithmetic and Miscellaneous Applications 15-22
9. Drivers for Magnetic Core Circuits
15-23
References 15-24

15-0 I

Chapter 16.

Transistor Circuits
I. Introduction 16-0 I,
2. Transistor Switching Properties 16-02
3. Direct-Coupled Transistor Switching
Circuits 16-05
4. Point-Contact Transistor Pulse Amplifiers 16-15
5. Transistorized Calculator 16-20
References 16-30

16-01

Chapter 17.

Logical Design
I. Computer Elements 17-01
2. Algebraic Techniques of Logical Design 17-10
3. Preliminary Design Considerations
17-24
4. Detailed Logical Design 17-30

17 -0 I

xx

CONTENTS
5. Direct Simulation of a Logical Design
17-38
References 17-42
Chapter 18.

Arithmetic and Control Elements

I.
2.
3.
4.
5.
6.

Chapter 19.

Chapter 20.

19'-01

Basic Concepts 19-01
Magnetic Drum Storage 19-04
Magnetic Core Storage 19-13
Other Storage Techniques 19-29
References 19-33

Input-Output Equipment for Digital
Computers

I.
2.
3.
4.
5.
6.

E.

System Considerations 18-0 I
Notation 18-02
Binary Operations 18-03
Decimal Operations 18-25
Special Operations 18-30
Control Elements 18-33
References 18-40

Storage

I.
2.
3.
4.

18-01

20-0 I

The Input-Output System 20-0 I
Printed Page 20-06
Perforated Tape 20-19
Punched Card Machines 20-30
Magnetic Tape 20~33
Analog-Digital Conversion 20-44
References 20-66

DESIGN AND APPLICATION OF ANALOG COMPUTERS
Chapter 21.

Analog Computation in Engineering

I. Definition of Analog Computation
21-01
2. Classification of Analog Computers
21-02
3. Requirements of Analog Computers
21-05
4. General Steps in the Solution of Engineering Problems 21-06

21-0 I

CONTENTS

xxi

5. Areas of Application of Analog Computers 2 1-09
6. Symbols and Diagram Notation
21-11
References 21-1 I
Chapter 22.

Linear Electronic Computer Elements
I. Introduction and Computer Diagram
Notation 22-0 I
2. Passive Computer Elements 22-04
3. Direct-Current Operational Amplifiers
with Feed back 22-08
4. Sca Ie Factors 22-10
5. Typical Problem Setup 22-12
6. Representation of Complex Transfer
Functions 22-13
7. Operationa I Amplifier Design 22-16
8. Errors in Linear Computer Elements
22-33
References 22-37

Chapter 23.

Nonlinear Electronic Computer Elements
I. Function Multipliers 23-0 I
2. Function Generators 23-14
3. Switching Devices 23-22
4. Trigonometric Devices 23-31
5. Time Delay Simulators 23-34
References 23-39

Chapter 24.

Analogs and Duals of Physical Systems
I. Electric Analogy of Dynamic System
24-01
2. General Terminology 24-03
3. Analysis of General Systems 24-03
4. Energy Considerations 24-07
5. Duality 24-08
6. Construction of Duals 24-09
7. Across and Through Variables in Physical Systems 24-12
References 24-13

22-0 I

23-01

24-01

xxii

CONTENTS

Chapter 25.

Solution of Field Problems

25-01

I. Formulation of Engineering Problems
as Partial Differential Equations
25-01
2. Continuous Type Electric Analogs
25-05
3. Discrete Element Type Electric Analogs 25-11
4. Nonelectric Field Analogs 25-22
References 25-23

Chapter 26.

Noise and Statistical Techniques

26-0 I

Introduction and Definition 26-0 I
Random Variable Concepts 26-02
Treatment of Linear Systems 26-06
Treatment of Nonlinear Systems
26-09
5. Noise Generators 26-12
References 26-20

I.
2.
3.
4.

Chapter 27.

Mechanical Computer Elements
I.
2.
3.
4.
5.

Chapter 28.

27-01

Introduction 27-0 I
Basic Operations 27-02
Function Generation 27-05
Solution of Equations 27-09
Scale Factors 27-14
References 27-15

Digital Techniques in Analog Computation
28-0 I
I. Introduction 28-0 I
2. Digital Differential Analyzer 28-02
3. Digital
Operational
Computers
28-11
4. Auxiliary Digital Computer Techniques 28-15
5. Auxiliary Digital Control Techniques
28-17
References 28-18

xxiii

CONTENTS

F.

UNUSUAL COMPUTER SYSTEMS
Chapter 29.

Operational Digital Techniques
I. Introduction 29-0 I

29-01

2. Basic Devices 29-05
3. Applications of Operational Digital
Techniques 29-14
4. Incremental Computation 29-17
References 29-29

Chapter 30.

Combined Analog-Digital Computer
Systems .
I.
2.
3.
4.

Chapter 31.

Description and Applications
System Components 30-02
Control and Timing 30-08
Modes of Operation 30-13
References 30-15

Simple Turing Type Computers
I.
2.
3.
4.
5.
6.

Basic Concepts 3 1-0 I
Functional Requirements 31-02
Machine Description 31-03
Mechanization 31-07
Programming 3 1-09
Communication with No Auxiliary
Storage 31-13
7. Machine Comparison 31-15
References 31-16

INDEX

30-01

30-0 I

31-0 I

COMPUTER TERMINOLOGY

A.

COMPUTER TERMINOLOGY
1. Computer Terminology and Symbols, by E. M. Grabbe

A

COMPUTER TERMINOLOGY

Chapter

1

Computer Terminology
and Symbols
E. M. Grabbe

I. Standardization
2. Symbols
3. Glossary of Terminology
References

1-0 I
1-01
1-02
1-22

I. STANDARDIZATION

The growth of analog and digital computers as major components of
modern computing and control systems has done much to encourage
standardization of terminology and symbols. A sizable part of this
effort has been directed toward the terminology of digital computers.
Hence, the glossary of terminology given in Sect. 3 is largely concerned
with digital terms. No attempt has been made to define the terms associated with computer usage in scientific computation, business data
processing, and control applications.
2. SYMBOLS

Diagram Symbols. Several sets of symbols for schematic and circuit
diagrams have been in use in the analog and digital fields. In Part E on
analog computers, one set of symbols has been chosen and used throughout the chapters. The alternate notation is also listed for linear computing elements in Chap. 22 (see Table 1).
In the digital field, while terminology has been standardized to some
degree, the use of symbols has not. A variety of symbols is employed
1-01

1-02

COMPUTER TERMINOLOGY

for programming, logic, and circuit diagrams, depending on the author's
preference and the type of diagram. Some symbols are easier to use for
some purposes than others. In all cases the symbols are clearly defined
and usage is unambiguous.
Since symbols are not standardized, no detailed list is given, but they
are described in the various chapters. The following is a list of the
chapters in the Handbook where tables of symbols may be found:
Symbols
Digital computer
Programming
Logical design
Logical operations
Magnetic cores
Analog computer
Linear computing elements
Nonlinear computing elements
Mechanical computing elements
Analogs and duals
Digital differential analyzers

Chapters
Chap.
Chap.
Chap.
Chap.

2, Sect. 4
17, Sect. 4
17, Sect. 1, Table 1
15, Sect. 1

Chap.
Chap.
Chap.
Chap.
Chap.

22,
23,
27,
24,
28,

Sect.
Sect.
Sect.
Sect.
Sect.

1
1
2
2
2

Letter Symbols. Letter symbols are standardized to some extent
in Part E, Design and Application of Analog Computers. (See Chap.
21, Sect. 1.) Elsewhere letter symbols are defined when they are used.
3. GLOSSARY OF TERMINOLOGY

Terminology from the Institute of Radio Engineers (Ref. 1) and the
Association for Computing Machinery (Ref. 2) has been compiled in a
glossary. The I.R.E. terminology is largely concerned with digital computer design, although some analog terms are included. The A.C.M.
terminology is concerned with programming. vVhere an overlap exists,
the I.R.E. terminology has been selected since it represents the later
effort. For some terms, minor changes or additions have been made for
clarity and explanatory notes and examples have been added. Some
terms are included which have no official definition, and reference to the
chapters where they are described and defined is given. For terms not
listed in this glossary, please refer to the index.
Terminology is reproduced with the permission of the Institute of
Radio Engineers and the Association for Computing Machinery.
Glossary of Terminology
Access Time. A time interval which is characteristic of a storage
unit, and is essentially a measure of the time required to communicate
with that unit. Many definitions of the beginning and ending of this
interval are in common use.

COMPUTER TERMINOLOGY AND SYMBOLS

1·03

Accumulator. A device which stores a number and which, on receipt
of another number, adds it to the number already stored and stores the
sum. Note. The term is also applied to devices which function as
described but which have other facilities also.
Accuracy. The quality of freedom from mistake or error, that is,
of conformity to truth or to a rule. Accuracy is distinguished from
precision. Example. A six-place table is more precise than a four-place
table. However, if there are errors in the six-place table, it may be either
more or less accurate than the four-place table.
Adder. A device which can form the sum of two or more numbers or
quantities.
Address. An expression, usually numerical, which designates a particular location in a storage or a memory device or other source or destination of information. See also Instruction Code.
Absolute address, an address assigned by the machine designer
to a particular storage location.
Relative address, the address used to identify a word in a routine
or subroutine with respect to its position in that routine or subroutine.
Symbolic address (floating' address), an address chosen to identify
a particular word, function, or other information in a routine, independent of the location of the information within the routine. Sometimes called symbol or tag.
Address Part. In an instruction, any part that is usually an address.
See also Instruction Code.
Analog (in electronic computers). A physical system on which the
performance of measurements yields information concerning a class of
mathematical problems.
Analog Computer. A physical system together with means of control
for the performance of measurements (upon the system) which yield
information concerning a class of mathematical problems.
And Circuit. Synonym for and gate.
And Gate. A gate whose output is energized when and only when
every input is in its prescribed state. Thus, this gate performs the
function of the logical and.
Arithmetic Element. Synonym for arithmetic unit.
Arithmetic Unit. That part of a computer which performs arithmetic
and logical operations.
Assemble; Assembler, Assembly Routine; Assenlbly. See Routine.
Automatic Check. See Check, Automatic.
Band. A group of tracks on a magnetic drum.
Base. See Positional Notation.
Binary. See Positional Notation.

1-04

COMPUTER TERMINOLOGY

Binary Cell. An elementary unit of storage which can be placed in
either of two stable states.
Binary-Coded-Decimal System. A system of number representation
in which each decimal digit is represented by a group of binary digits.
Note. Usually refers to the four position binary codes 0000 to 1001
(decimal 1 to 9). Another example is the excess-three code.
Binary Number System. See Positional Notation.
Binary Point. See Point.
Biquinary. See Positional Notation.
Bit. (1) An abbreviation of "binary digit." (2) A single character
of a language employing exactly two distinct kinds of characters. (3)
A unit of information capacity of a storage device. The capacity in bits
is the logarithm to the base two of the number of possible states of the
device. See also Storage Capacity.
Block. A group of words considered as a unit.
Borrow. See Carry.
Branch. A synonym for conditional jump.
Break Point. A point in a routine at which a special instruction is
inserted which, if desired, will cause a digital computer to stop for a visual
check of progress.
Buffer. (1) An isolating circuit used to avoid reaction of a driven
circuit on the corresponding driving circuit. (2) A storage device used
to compensate for a difference in rate of flow of information or time
of occurrence of events when transmitting information from one device
to another.
Bus. One or more conductors which are used as a path for transmitting information from any of several sources to any of several
destinations.
Calculator. See Computer.
Carry. (1) A signal, or an expression, produced as a result of an
arithmetic operation on one digit place of two or more numbers expressed
in positional notation, and transferred to the next higher place for processing there. (2) Usually a signal, or an expression, as defined in (1)
which arises, in adding, when the sum of two digits in the same digit
place equals or exceeds the base of the number system in use. If a
carry into a digit place will result in a carry out of the same digit place,
and if the normal adding circuit is bypassed when generating this new
carry, it is called a standing-on-nines carry, or high-speed carry. If
the normal adding circuit is used in such a case, the carry is called a
cascaded carry. If a carry resulting from the addition of carries is not
allowed to propagate (e.g., when forming the partial. product in one step
of a multiplication process), the process is called a partial carry. If it

COMPUTER TERMINOLOGY AND SYMBOLS

1-05

is allowed to propagate, the process is called a complete carry. If a
carry generated in the most significant digit place is sent directly to the
least significant digit place (e.g., when adding two negative numbers by
using nines complements) that carry is called an end-around carry.
(3) In direct subtraction, a signal or expression as defined in (1) which
arises when the difference between the digits is less than zero. Such a
carry is frequently called a borrow. (4) The action of forwarding a
carry. (5) The command requesting a carry to be forwarded.
Cascaded Carry. See Carry.
Cell. An elementary unit of storage (e.g., binary cell, decimal
cell) .
Channel. That portion of a storage medium which is accessible to a
given reading station. See also Track.
Character. One of a set of elementary marks or events which may
be combined to express information. Note.' A 'group of characters, in
one context, may be considered as a single- character in another, as in the
binary-coded-deciinal system:
Check. A process of partial or complete testing of (a) the correctness
of machine operations, (b) the existence of certain prescribed conditions
within the computer, or (c) the correctness of the results produced by a
routine. A check of any of these conditions may be made automatically
by the equipment or may be programmed. See also Verification.
Check, Automatic. A check performed by equipment built into the
computer specifically for that purpose, and automatically accomplished
. each time the pertinent operation is performed. Sometimes referred to as
a built-in check. Machine check can refer to an automatic check, or to
a programmed check of machine functions.
Check Digits. See Check, Forbidden Combination.
Check, Forbidden Combination. A check (usually an automatic
check) which tests for the occurrence of a nonpermissible code expression. A self-checking code (or error-detecting code) uses code expressions such that one (or more) error( s) in a code expression produces a
forbidden combination. A parity check makes use of a self-checking
code employing binary digits in which the total number of 1's (or O's)
in each permissible code expression is always odd or always even. A
check may be made for either even parity or odd parity. A redundancy
check employs a self-checking code which makes use of redundant digits
called check digits.
Check, Marginal. A preventive maintenance procedure in which
certain operating conditions, e.g., supply voltage or frequency, are varied
about their normal values in order to detect and locate incipient defective units.

1-06

COMPUTER TERMINOLOGY

Check Problem. See Check, Programmed.
Check, Programmed. A check consisting of tests inserted into the

programmed statement of the problem and accomplished by appropriate
use of the machine's instructions. A mathematical check (or control)
is a programmed check of a sequence of operations which makes use of
the mathematical properties of that sequence. A check routine or
check problem is a routine or problem. which is designed primarily to
indicate whether a fault exists in the computer, without giving detailed
information on the location of the fault. See also Diagnostic Routine
and Test Routine under Routine.
Check Routine. See Check, Programmed.
Check, Selection. A check (usually an automatic checkY to verify
that the correct register, or other device, is selected in the performance
of an instruction.
.
Check, Transfer. A check (usually an automatic check)' on the
accuracy of the transfer of a word.
Circulating Register (or Memory). A register (or memory) consisting of a means for delaying information and a means of regenerating
and reinserting the information into the delaying means.
Clear. To restore a storage or memory device to a prescribed state,
usually that denoting zero.
Clock. A primary source of synchronizing signals.
Code. (1) A system of characters and rules for representing information. (2) Loosely, the set of characters resulting from the use of a code.
(3) To prepare a routine in machine language for a specific computer.
(4) To encode, to express given information by means of a code. See
also Instruction Code, Language, Operation Code, and Pseudo-code.
Coding. The list, in computer code or in pseudo-code, of the successive computer operations required to solve a given problem.
Absolute, relative, or symbolic coding, coding in which one uses
absolute, relative, or symbolic addresses, respectively.
Automatic coding, any technique in which a computer is used to
help bridge the gap between some "easiest" form, intellectually and
manually, of describing the steps to be followed in solving a given
problem and some "most efficient" final coding of the same problem
for a given computer. Two basic forms, defined under Routine, are
compilation and interpretation.
Collate. To combine two or more similarly ordered sets of items
to produce another ordered set composed of information from the original
sets. Both the riumber of items and the size of the individual items in
the resulting set may differ from those of either of the original sets and
of their sums.

COMPUTER TERMINOLOGY AND SYMBOLS

1-07

Command. (1) One of a set of several signals (or groups of signals)
which occurs as a result of an instruction; the commands initiate the
individual steps which form the process of executing the instruction.
(2) Synonym for instruction.
Comparator. A device for comparing two different transcriptions of
the same information to verify the accuracy of transcription, especially
of one copy of tape from another.
Compare. To examine the representation of a quantity for the purpose of discovering its relationship to zero, or of two quantities for the
purpose of discovering identity or relative magnitude.
Comparison. The act of comparing and, usually, acting on the result
of the comparison.
Compile; Compiler, Compiling Routine; Compilation. See
Routine.
Complement. (1) A number whose representation is derived from
the finite positional notation of another by one of the following rules.
(a) True complement: subtract each digit from one less than the base;
then add 1 to the least significant digit and execute all carries required.
(b) Base minus one's complement: subtract each digit from one less
than the base (e.g., "9's complement" in the base 10 and "l's complement" in the base 2). (2) To form the complement of a number. (a)
Complement on n: subtract each digit of the given quantity from n - 1,
add unity to the least significant digit, and perform all resultant carries.
For example, the two's complement of binary 11010 is 00110; the ten's
complement of decimal 456 is 544. (b) Complement on n - 1: subtract each digit of the given quantity from n - 1. For example, the
one's c01nplenwnt of binary 11010 is 00101; the nine's complement
of decimal 456 is 543. Note. In many machines, a negative number is represented as the complement of the corresponding positive
number.
Complete Carry. See Carry.
Computer. (1) A machine for carrying out calculations. (2) By
extension, a machine for carrying out specified transformations on
inf ormation.
Conditional Jump. See Jump.
Conditional Transfer of Control. Synonym for conditional jump.
Control. (1) To exercise directing, guiding, or restraining power
over. (2) Power or authority to control. (3) Usually, those parts of
a digital computer which effect the carrying out of instructions in proper
sequence, the interpretation of each instruction, and the application of
the proper signals to the arithmetic unit and other parts in accordance
with this interpretation. (See Chap. 18.) (4) Frequently, one or more

1-08

COMPUTER TERMINOLOGY

of the components in any mechanism responsible for interpreting and
carrying out manually initiated directions. Sometimes called manual
control. (5) In some business applications of mathematics, a mathematical ,check.
Convert. See Routine.
Copy. To reproduce information in a new location by replacing
whatever was previously ~tored there and leaving the source of the
information unchanged. See also Transfer.
Correction. See Error.
Counter. (1) A device capable of changing from one to the next of a
sequence of distinguishable states upon each receipt of an input signal.
(2) Less frequently, an accumulator.
Counter, Ring. A loop of interconnected bistable elements such
that all but one are in their normal (or abnormal) state at anyone
time, and so that, as input signals are counted, the position of the
one abnormal (normal) state moves in an ordered sequence around' the
loop.
Cycle. (1) The sequence of events beginning with a particular event
and including intervening events leading up to a recurrence of the
original event. (2) The time interval which spans the sequence of
events of (1). See Loop, Major Cycle, Minor Cycle.
Cyclic Binary Code. See Chaps. 11 and 20.
Cyclic Shift. See Shift.
Decimal Number System. See Positional Notation.
Decimal Point. See Point.
Decoder. A network or system in which a combination of inputs is
excited at one time to produce a single output. Sometimes called matrix.
Delay Line. (1)' Originally, a device utilizing wave propagation for
producing a time. displacement of a signal. (2) Commonly, any device
for producing a time displacement of a signal.
Delay-Line Memory. Synonym for delay-line storage.
Delay-Line Storage. A storage or memory device consisting of a
delay line and means for regenerating and reinserting information into
the delay line.
Diagnostic Routine. See Routine.
Differentiator. A device, usually of the analog type, whose output is
proportional to the derivative of an input signal.
Digit. See Positional Notation.
Digital Computer. A computer which operates with information,
numerical or otherwise, represented in a digital form.
Double-Length Number, Double-Precision Number. See Number,
Double-Length.

COMPUTER TERMINOLOGY AND SYMBOLS

1-09

Edit. To rearrange information. Editing may involve the deletion
of unwanted data, the selection of pertinent data, the insertion of invariant symbols such as page numbers and typewriter characters, and the
application of standard processes such as zero suppression.
Encoder. A network or system in which only one input is excited at a
time and each input produces a combination of outputs. Sometimes
called matrix.
End-Around Carry. See Carry.
Erase. To replace all the binary digits in a storage device by binary
zeros. In a binary computer, erasing is equivalent to clearing. While
in a coded decimal computer where the pulse code for decimal zero may
contain binary ones, clearing leaves decimal zero whereas erasing leaves
all-zero pulse codes. Erasing of magnetic tapes and drums may leave
all zeros or may remove all information, both ones and zeros.
Error. (1) In mathematics, the difference between the true value
and a calculated or observed value. A quantity (equal in absolute magnitude to the error) added to a calculated or observed value to obtain
the true value is called a correction. (2) In a computer or data processing system, any incorrect step, process, or result. Strictly speaking,
"error" is a mathematical term, but in computer engineering the term
is also commonly used to refer to machine malfunctions as "machine
errors" and to human mistakes as "huma~ errors." It is frequently
helpful to distinguish between these as follows: errors result from approximations used in numerical methods, mistakes result from incorrect
programming, coding, data transcription, manual operation, etc.; malfunctions result from failures in the operation of machine components
such as gates, flip-flops, and amplifiers.
Inherited error, the error in the initial values, especially the error
inherited from the previous steps in the step-by-step integration.
Rounding error, the error resulting from deleting the less significant digits of a quantity and applying some rule of correction to the
part retained.
Truncation error, the error resulting from the use of only a finite
number of terms of an infinite series, or from the approximation of
operations in the infinitesimal calculus by operations in the calculus
of finite differences.
Error-Detecting Code. See Check, Forbidden Combination.'
Excess-Three Code. A number code in which the decimal digit n
. is represented by the four-bit binary equivalent of n + 3. See also
Binary-Coded-Decimal System.
Extract. To form a new word by juxtaposing selected segments of
given words.

COMPUTER TERMINOLOGY

1-10

Field. A set of one or more characters (not necessarily all lying in
the same word) which is treated as a whole; a unit of information. See
also Item; Key.
Card field, a set of visually consecutive card columns fixed as to
number and position into which the same unit of information is regularly entered.
File. A sequential set of items (not necessarily all of the same size).
Fixed-Point System. See Point.
Flip-Flop. (1) A device having two stable states and two input terminals (or types of input signals) each of which corresponds with one
of the two states. The circuit remains in either state until caused to
change to the other state by application of the corresponding signal.
(2) A similar bistable device with an input which allows it to act as a
single-stage binary counter.
Floating-Point System. See Point.
Flow Diagram. A graphic representation of a routine.
Forbidden Combination Check. See Check, Forbidden Combination.
Four-Address Code. See Instruction Code.
Gate. A circuit having an output and a multiplicity of inputs so
designed that the output is energized when and only when certain input
conditions are met. See also And Gate; Or Gate.
Generate; Generator, Generative Routine; Generation. See
Routine.
Gray Code. See Chaps. 11 and 20.
Half Adder. A circuit having two input and two output channels
for binary signals (0, 1) and in which the output signals are related to
the input signals according to the following table:
Input to
Output from
S
C
A
B
o
000
011
o
101
o
1

1

0

1

::1 _-------'I: :
L----

(So called because two half adders can be used in the construction
of one binary adder.)
Hexadecimal. See Positional Notation.
High-Speed Carry. See Carry.
Information. A set of symbols or an arrangement of hardware that
designates one out of a finite number of alternatives; an aggregation
of data which mayor may not be organized.
Inhibiting Input. A gate input which, if in its prescribed state, prevents any output which might otherwise occur.

COMPUTER TERMINOLOGY AND SYMBOLS

I-II

Instruction. See Instruction Code.
Instruction Code. An artificial language for describing or expressing
the instructions which can be carried out by a digital computer. In automatically sequenced computers, the instruction code is used when describing or expressing sequences of instructions, and each instruction word
usually contains a part specifying the operation to be performed and one
or more addresses which identify a particular location in storage. Sometimes an address part of an instruction is not intended to specify a location in storage but is used for some other purpose. If more than one
address is used, the code is called a multiple-address code. In a typical
instruction of a four-address code the addresses specify the location of
two operands, the destination of the result, and the location of the next
instruction in the sequence. In a typical three-address code, the fourth
address specifying the location of the next instruction is dispensed with
and the instructions are taken from storage in a preassigned order. In
a typical one-address or single-address code, the address may specify
either the location of an operand to be taken from storage, the destination of a previously prepared result, or the location of the next instruction. The arithmetic element usually contains at least two storage locations, one of which is an accumulator. For example, operations requiring
two operands may obtain one operand from the main storage and the
other from a storage location in the arithmetic element which is specified
by the operation part.
Breakpoint instruction, an instruction which, if some specified
switch is set, will cause the computer to stop, or proceed in a special
way.
Conditional breakpoint instruction, a conditional jump instruction
which, if some specified switch is set, will cause the computer to stop,
after which either the routine may be continued as coded or a jump
may be forced.
One-plus-one, or three-plus-one address instruction, a two- or
four-address instruction, respectively, in which one of the addresses
always specifies the location of the next instruction to be performed.
Zero address instruction, an instruction specifying an operation in
which the location of the operands are defined by the computer
code, so that no address need be given explicitly.
Integrator. (1) A device whose output is proportional to the integral
of an input signal. (2) In certain digital machines, a device for numerically accomplishing an approximation to the mathematical process of
integration.
Interlock. A device which prevents certain activities for the duration of certain other activities.

1-12

COMPUTER TERMINOLOGY

Interpret, Interpreter, Interpretive Routine, Interpretation. See
Routine.
Item. A set of one or more fields containing related information;
a unit of correlated information relating to a single person or object.
Jump. To (conditionally or unconditionally) cause the next instruction to be selected from a specified storage location.
Conditional Jump. An instruction which will cause the proper
one of two (or more) addresses to be used in obtaining the next
instruction, depending upon some property of one or more numerical
expressions or other conditions.
Unconditional Jump. An instruction which interrupts the normal
process of obtaining instructions in an ordered sequence, and specifies
the address from which the next instruction must be taken.
Key. A set of characters, forming a field, used to identify an item.
Language. (1) A system consisting of (a) a well-defined, usually
finite, set of characters, (b) rules for combining characters with one
another to form words or other expressions, and (c) a specific assignment of meaning to some of the words or expressions, usually for communicating information or data among a group of people, machines,
etc. (2) A system similar to (1) but without any specific assignment
of meanings. Such systems may be distinguished from (1), when necessary, by referring to them as formal or uninterpreted languages. Although it is sometimes convenient to study a language independently of
any meanings, in all practical cases at least one set of meanings is
eventually assigned. See also Machine Language.
Library. An ordered set or collection of standard and proven routines
and subroutines by which problems and parts of problems may be
solved, usually stored in relative or symbolic coding. (A library may be
subdivided into various volumes, such as floating decimal, double-precision, or complex, according to the type of arithmetic employed by the
subroutines.)
Logic. See Logical Design.
Logical Design. (1) The planning of a computer or data processing
system prior to its detailed engineering design. (2) The synthesizing
of a network of logical elements to perform a specified function. (3)
The result of (1) and (2), frequently called the logic of the system,
machine, or network.
Logical Diagram. In logical design, a diagram representing the logical
elements and their interconnections without necessarily expressing construction or engineering details.
Logical Element. In a computer or data processing system, the
smallest building blocks which can be represented by operators in an

COMPUTER TERMINOLOGY AND SYMBOLS

1-13

appropriate system of symbolic logic. Typical logical elements are the
and gate and the flip-flop which can be represented as operators in a
suitable symbolic logic.
Logical Operation. (1) Any nonarithmetical operation. Examples
are: extract, logical (bit-wise) multiplication, jump, and data transfer.
(2) Sometimes only those nonarithmetical operations which are expressible bit-wise in terms of the propositional calculus or a two-valued
Boolean algebra.
Logical Symbol. A symbol used to represent a logical element
graphically.
Loop. The repetition of a group of instructions in a routine. See
also Cycle.
Machine Check. See Check, Automatic.
Machine Language. (1) A language, occurring within a machine,
ordinarily not perceptible or intelligible to people without special equipment or training. (2) A translation or transliteration of (1) into more
conventional characters but frequently still requiring special training
to be intelligible.
Major Cycle. In a storage device which provides serial access to storage positions, the time interval between successive appearances of a
given storage position.
Malfunction. See Error.
Manchester Recording. See Chap. 19, Sect. 2.
Marginal Checking. See Check, Marginal.
Marginal Testing. See Check, Marginal.
Master Routine. See Routine, Executive.
Mathematical Check. See Check, Programmed.
Matrix (Switch). (1) A network or system having a number of
inputs and outputs and so connected that signals representing information expressed in a certain code, when applied to the inputs, cause output
signals to appear which are representations of the input information in a
different code. (2) A network or system in which a combination of
inputs is excited at one time to produce a single output. (3) A network
or system in which only one input is excited at a time and each input
produces a combination of outputs.
Memory. See Storage.
Merge. To produce a single sequence of items, ordered according to
some rule (i.e., arranged in some orderly sequence), from two or more
sequences previously ordered according to the same rule, without changing the items in size, structure, or total number. Merging is a special
case of collation.
Memory Capacity. Synonym for storage capacity.

1-14

COMPUTER TERMINOLOGY

Minor Cycle. In a storage device which provides serial access to
storage positions, the time interval between the appearance of corresponding parts of succes~ive words.
Mistake. See Error.
Modified Binary Code. See Chaps. 11 and 20.
Modifier. A quantity, sometimes the cycle index, used to alter the
address of an operand.
Modify. (1) To alter in an instruction the address of the operand.
(2) To alter a subroutine according to a defined parameter.
Multiple-Address Code. See Instruction Code.
Multiplier. A device which has two or more inputs and whose output
is a representation of the product of the quantities represented by the
input signals. (See Chap. lS.)
NRZ, Non-Return to Zero Recording. See Chap. 19, Sect. 2.
NRZI, Non-Return to Zero, Invert Recording. See Chap. 19,
Sect. 2.
Number. (1) Formally, an abstract mathematical entity which is a
generalization of a concept used to indicate quantity, direction, etc. In
this sense a number is independent of the manner of its representation.
(2) Commonly, a representation of a number as defined above (e.g.,
the binary number "10110," the decimal number "3695," or a sequence
of pulses). (3) A word composed wholly or partly of digits, and perhaps a sign, which does not necessarily represent the abstract entity
mentioned in the first meaning. Note. Whenever there is a possibility
of confusion between meaning (1) and meaning (2) or (3), it is usually
possible to make an unambiguous statement by using "number" for
meaning (1) and "numerical expression" for meaning (2) or (3). See
also Positional Notation.
Number, Double-Length. A number having twice as many digits
as are ordinarily used in a particular computer.
Number System. See Positional Notation.
Octal. See Positional Notation.
Octonary. See Positional Notation.
One-Address Code. See Instruction Code.
On-Line Operations. See Real- Time Operation.
Operation Code. (1) The list of operation parts occurring in an
instruction code, together with the names of the corresponding operations (e.g., "add," "unconditional transfer," and "add and clear"). (2)
Synonym for operation part of an instruction.
Arithmetical operations, operations in which numerical quantities
form the elements of the calculation (e.g., addition, subtraction, multiplication, division).

COMPUTER TERMINOLOGY AND SYMBOLS

1.15

Complete operation, an operation which includes (a) obtaining
all operands from storage, (b) performing the operation, (c) returning
resulting operands to storage, and (d) obtaining the next instruction.
Computer operation, the electronic operation of hardware resulting from an instruction.
Logical operations, operations in which logical (yes-or-no) quantities form the elements being operated on (e.g., comparison, extraction). A usual requirement is that the value appearing in a given
column of the result shall not depend on the values appearing in more
than one given column of each of the arguments.
Red tape operations, operations which do not directly contribute
to the result; i.e., arithmetical, logical, and transfer operations used
in modifying the address section of other instructions, in counting
cycles, and in rearranging data.
Transfer operations (storage operations), operations which move
information from one storage location or one storage medium to
another (e.g., read, record, copy, transmit, exchange). Transfer is
sometimes taken to refer specifically to movement between different
media; storage to movement within the same medium.
Although many operations fit the above definitions of two or more of
the terms arithmetical, logical, transfer, and red tape, these terms are
frequently used loosely to divide the operations of a given routine or of
a given instruction code into four mutually distinct classes depending on
the primary function intended for the given operation in the case at hand.
Operation Part. In an instruction, the part that usually specifies
the kind of operation to be performed, but not the location of the operands. See also Instruction Code.
Or Circuit. Synonym for or gate.
Order. (1) Synonym for instruction. (2) Synonym for command.
(3) Loosely, synonym for operation part. Note. The use of "order" in
the computer field as a synonym for terms similar to those above is
losing favor owing to the ambiguity between these meanings and the
more common meanings in mathematics and business.
Or Gate. A gate whose output is energized when anyone .01' more
of the inputs is in its prescribed state. Thus, this gate performs the
function of the logical inclusive-or.
Overflow. (1) The condition which arises when the result of an
arithmetic operation exceeds the capacity of the number representation
in a digital computer. (2) The carry digit arising from this condition.
Parallel. Pertaining to simultaneous transmission of, storage of, or
logical operations on the parts of a word, character, or other subdivision
of a word, using separate facilities for the various parts.

1-16

COMPUTER TERMINOLOGY

Parallel Digital Computer. One in which the digits are handled in
parallel. Mixed serial and parallel machines are frequently called serial
or parallel according to the way arithmetic processes are performed.
An example of a parallel digital computer is one which handles decimal
digits in parallel, although it might handle the bits which comprise a
digit either serially or in parallel.
Parity Check. See Check, Forbidden Combination.
Partial Carry. See Carry.
Place. In positional notation, a position corresponding to a given
power of the base. A digit located in any particular place is a coefficient
of a corresponding power of the base.
Point. In positional notation, the location or symbol which separates
the integral part of a numerical expression from its fractional part.
For example, it is called the binary point in binary notation and the
decimal point in decimal notation. If the location of the point is
assumed to remain fixed with respect to one end of the numerical expressions, a fixed-point system is being used. If the location of the
point does not remain fixed with respect to one end of the numerical
expressions, but is regularly recalculated, then a floating-point system
is being used. Note. A fixed-point system usually locates the point by
some convention, while the floating-point system usually locates the
point by expressing a power of the base.
Positional Notation. One of the schemes for representing numbers,
characterized by the arrangement of digits in sequence, with the understanding that successive digits are to be interpreted as coefficients of
successive powers of an integer called the base or radix of the number
system. In the binary number system the successive digits are interpreted as coefficients of the successive powers of the base two just as in
the decimal number system they relate to successive powers of the
base ten. In the ordinary number systems each digit is a character
which stands for zero or for a positive integer smaller than the base.
The names of the number systems with bases from 2 to 20 are: binary,
ternary, quaternary, quinary, senary, septenary, octonary (also octal),
novenary, decimal, unidecimal, duodecimal, terdenary, quaterdenary,
quindenary, sexadecimal (also hexadecimal), septendecimal, octodenary,
novendenary, and vicenary. The sexagenary number system has a base
of 60. The commonly used alternative of saying "base 3," "base 4," etc.,
in place of ternary, quaternary, etc., has the advantage of uniformity
and clarity. Note. In the most common form of positional notation the
expression

COMPUTER TERMINOLOGY AND SYMBOLS

1-17

is an abbreviation for the sum
n

±

L:
i=

airi,

-m

where the point separates the positive powers from the negative powers,
the ai are integers (0 < ai < r - 1) called "digits," and r is an integer,
greater than one, called the base. Note 1. The base of a number is
usually indicated by a vertical line following the number with the base,
r, as a subscript. The decimal number 12 in octal and binary codes is
written 12ho = 1418 = 110012. Note 2. For some purposes special rules
are followed. In one such usage, the value of the base r is not constant.
In this case, the digits are coefficients of successive products of a nonconstant sequence of integers.
Precision. The quality of being exactly or sharply defined or stated.
A measure of the precision of a representation is the number of distinguishable alternatives from which it was selected, which is sometimes
indicated by the number of significant digits it contains. See also
Accuracy.
Program. (1) A plan for the solution of a problem. (2) Loosely,
a synonym for routine. (3) To prepare a program.
Automatic programming, any technique in which the computer is
used to help plan as well as to help code a problem. See Coding.
Optimum programming, improper terminology for minimal latency
coding, i.e., for producing a minimal latency routine. See Routine.
Programmed Check. See Check, Programmed.
Pseudo-Code. An arbitrary code, independent of the hardware of
a computer, which must be translated into computer code if it is to
direct the computer.
Radix. See Positional Notation.
Random Access. Access to storage under conditions in which the next
position from which information is to be obtained is in no way dependent
on the previous one.
Read. To acquire information, usually by observing some form of
storage. Note. Usually a process which can be called reading can also
be called writing, depending on the point of view of the observer.
Real-Time Operation, On-Line Operation, Simulation. Processing
data in synchronism with a physical process in such a fashion that the
results of data processing are useful to the physical operation.
Redundancy Check. See Check, Forbidden Combination.
Reflected Binary Code. See Chaps. 11 and 20.

.••

I

1-18

COMPUTER TERMINOLOGY

Regeneration. (1) In a storage device whose information storing
state may deteriorate, the process of restoring the device to its latest
undeteriorated state. (2) In a storage device whose information storing
state may be destroyed by a readout, the process of restoring the device
to its state prior to the readout. This process is commonly known as
rewrite (after destructive readout).
Register. A device capable of retaining information, often that contained in a small subset (e.g., one word) of the aggregate information
in a digital computer. Example. A register in an arithmetic unit as
opposed to a cell in storage.
Register Length. The number of characters which a register can
store.
Reset. (1) To restore a storage device to a prescribed state. (2) To
place a binary cell in the initial or "zero" state. See also Clear.
Rewrite. See Regeneration.
Ring Counter. See Counter, Ring.
Routine. A set of instructions arranged in proper sequence to cause
a computer to perform a desired operation or series of operations, such
as the solution of a mathematical problem.
y:'~,
Executive routine (master routine), a routine designed to process
and control other routines. A routine used in realizing "automatic
coding."
Compiler (compiling routine), an executive routine which, before
the desired computation is started, translates a program expressed in
pseudo-code into machine code (or into another pseudo-code for
further translation by an interpreter). In accomplishing the translation, the compiler may be required to:
Decode, to ascertain the intended meaning of the individual
characters or groups of characters in the pseudo-coded program.
Convert, to change numerical information from one number base
to another (e.g., decimal to binary) and/or from some form of
fixed point to some form of floating-point representation, or vice
versa.
Select, to choose a needed subroutine from a file of subroutines.
Generate, to produce a needed subroutine from parameters and
skeletal coding.
Allocate, to assign 'storage locations to the main routines and
subroutines, thereby fixing the absolute values of any symbolic
addresses. In some cases allocation may require segmentation.
Assemble, to integrate the subroutines (supplied, selected, or
generated) into the main routine, i.e., to adapt, to specialize to the
task at hand by means of preset parameters; to orient, to change

COMPUTER TERMINOLOGY AND SYMBOLS

1-19

relative and symbolic addresses to absolute form; to incorporate,
to place in storage.
Record, to produce a reference record.
Check Routine. See Check, Progrmnmed.
Diagnostic Routine, a specific routine designed to locate either a
malfunction in the computer or a mistake in coding.
General routine, a routine expressed in computer coding designed
to solve a class of problems, specializing to a specific problem when
appropriate parametric values are supplied.
Interpreter (interpretive routine), an executive routine which,
as the computation progresses, translates a stored program expressed
in some machine-like pseudo-code into machine code and performs
the indicated operations, by means of subroutines, as they are translated. An interpretive routine is essentially a closed subroutine which
operates successively on an indefinitely long sequence of program
parameters (the pseudo-instructions and operands). It may usually
be entered as a closed subroutine and exited by a pseudo-code exit
instru cti on.
Minimal latency routine, especially in reference to serial storage
systems, a routine so coded, by judicious arrangement of 'data and
instructions in storage, that the actual latency is appreciably ress
than the expected random access latency.
'
Rerun routine (rollback routine), a routine designed to be used
in the wake of a computer malfunction or a coding or operating mistake to reconstitute a routine from the last previous rerun point,
which is that stage of a computer run at which all information pertinent to the running of the routine is available either to the routine
itself or to a rerun routine in order that a run may be reconstituted.
Service routine, a routine designed to assist in the actual operation
of the computer. Tape comparison, block location, certain post morterns, and correction routines fall into this class. Also called operator
routine.
Specific routine, a routine expressed in specific computer coding
designed to solve a particular mathematical, logical, or data handling
problem.
Subroutine. (1) In a ,routine, a portion that causes a computer
to carry out a well-defined mathematical or logical operation. (2) A
routine which is arranged so that control may be transferred to it from
a master routine and so that, at the conclusion of the subroutine, control reverts to the master routine. Such a subroutine is usually called
a closed subroutine. A single routine may simultaneously be both a
subroutine with respect to another routine and a master routine with

1-20

COMPUTER TERMINOLOGY

respect to a third. Usually control is transferred to a single subroutine
from more than one place in the master routine, and the reason for
using the subroutine is to avoid having to repeat the same sequence
of instructions in different places in the master routine.
Test routine, a routine designed to show that a computer is not
functioning properly.
RZ, Return to Zero Recording. See Chap. 19, Sect. 2.
Scale. To change the scale (i.e., the units) in which a variable is
expressed so as to bring it within the capacity of the machine or routine
at hand.
Selection Check. See Check, Selection.
Self-Checking Code. See Check, Forbidden Combination.
Serial. Pertaining to time-sequential transmission· of, storage of, or
logical operations on the parts of a word, with the same facilities for
successive parts.
Serial Digital Computer. One in which the digits are handled
serially. Mixed serial and parallel machines are frequently called serial
or parallel according to the way arithmetic processes are performed.
An example of a serial digital computer is one which handles decimal
digits serially although it might handle the bits which comprise a digit
either serially or in parallel. Antonym: Parallel Digital Computer.
Set. (1) To place a storage device in a prescribed state. (2) To
place a binary cell in the "one" state.
Sexadecimal. See Positional Notation.
Shift. Displacement of an ordered set of characters one or more places
to the left or right. If the characters are the digits of a numerical
expression, a shift may be equivalent to a multiplication by a power of
the base.
Cyclic Shift. An operation which produces a word whose characters
are obtained by a cyclic permutation of the characters of a given word.
Sign Digit. A character used to designate the algebraic sign of a
number.
Simulation. See Real- Time Operation.
Single-Address Code. See Instruction Code.
Sort. To arrange items of information according to rules dependent
upon a key or field contained by the items.
Standing-on-Nines Carry. See Carry.
Storage. (1) The act of storing information. (See also Store.) (2)
Any device in which information can be stored, sometimes called a
memory device. (3) In a computer, a section used primarily for storing
information. Such a section is sometimes called a memory or a store
(British) . Note. The physical means of storing information may be

COMPUTER TERMINOLOGY AND SYMBOLS

1-21

electrostatic, ferroelectric, magnetic, acoustic, optical, chemical, electronic, electrical, mechanical, etc., in nature.
Storage Capacity. The amount of information that can be simultaneously retained in a storage (or memory) device, often expressed
as the number of words that can be retained (given the number of
digits, and the base, of the standard word). \Vhen comparisons are made
among devices using different bases and word lengths, it is customary
to express the capacity in bits. This number is obtained by taking the
logarithm to the base 2 of the number of distinguishable states in which
the storage can exist. Note. The "storage (or memory) capacity of a
computer" usually refers only to the principal internal storage section.
Store. (1) To retain information in a device from which it can later
be extracted. (2) To introduce information into such a device. (3)
British synonym for storage (3).
Subroutine. See Routine.
Switch. A device for effectively making, breaking, or changing the
path of information flow. See also lkfatrix (Switch).
Ternary. See Positional Notation.
Test Routine. See Routine.
Three-Address Code. See Instruction Code.
Track. That portion of a moving-type storage medium which is
accessible to a given reading station; e.g., as on film, drum, tapes, or
disks. See also Band.
Transcriber. Equipment associated with a computing machine
for the purpose of transferring input (or output) data from a record of
information in a given language to the medium and the language used
by a digital computing machine (or from a computing machine to a
record of information).
Transfer. (1) To transmit, or copy, information from one device
to another. (2) To transfer control. (3) The act of transferring.
Transfer Check. See Check, Transfer.
Transfer Control. Synonym for jump.
Translate. To change information (e.g., problem statements in
pseudo-code, data, or coding) from one language to another without
significantly affecting the meaning.
Translator. A network or system having a number of inputs and
outputs and so connected that signals representing information expressed
in a certain code, when applied to the inputs, cause output signals to
appear which are a representation of the input information in a different
code. Sometimes called matrix.
Trunk. A path over which information is transferred; a bus.
Unconditional Jump. See Jump.

1-22

COMPUTER TERMINOLOGY

Unconditional Transfer of Control.

Synonym for unconditional

Jump.
Unit. A portion or subassembly of a computer which constitutes the
means of accomplishing some inclusive operation or function, as arithmetic unit.
Verification. The process of automatically checking the results of
one data recording process against the results of another data recording
process for the purpose of reducing the number of errors in data transcription. See also Check.
Verifier. A device un which a manual transcription can be verified
by comparing a retranscription with it character by character as it is
being retranscribed.
Volatile. A term descriptive of a storage medium in which information cannot be retained without continuous power dissipation. Note.
Storage devices or systems employing nonvolatile media mayor may not
retain information in the event of planned or accidental power removal.
Williams Tube Storage. A type of electrostatic storage.
Word. An ordered set of symbols which is the normal unit in which
information may be stored, transmitted, or operated upon within the
computer.
Word Time. Synonym for minor cycle.
Write. To introduce information, usually into some form of storage.
See also Read.
Zero Suppression. The elimination of nonsignificant zeros to the
left of the integral part of a quantity before printing operations are
initiated; a part of editing.

REFERENCES
1. IRE; Standards on Electronic Computers: Definitions of Terms, 1956. 56 IRE
8.51. Proc. I. R. E., 44, 1166-73 (1956).
2. First Glossary of Programming Terminology, Association for Computing Machinery, New York, 1954.

DIGITAL COMPUTER PROGRAMMING

B.

DIGITAL COMPUTER PROGRAMMING

2. Programming and Coding, by John W. Carr 11/

B

DIGITAL COMPUTER PROGRAMMING

Chapter

2

Programming and Coding
John W. Carr III

I. Nature of Programming

2-0 I

2. Numbers and Scale Factors

2-12

3. Number Conversion Tables

2-26

4. Program Structure and Flow Diagrams

2-44

5. Machine Logic

2-53

6. Instruction Logic of Common Computers

2-63

7. Traditional Programming Techniques

2-128

8. Automatic Programming: Development and Objectives

2-155

9. Automatic Programming: Assembly Programs

2-163

10. Automatic Programming: Subroutines, Subroutine Generators, Utility
Programs, and Integrated Systems

2-167

II. Automatic Programming: Languages, Compilers, and Translators

2-186

12. Automatic Programming: The IT Translator, Translator Construction

2-200

13. Automatic Programming: A Soviet Algebraic Language Compiler

2-228

14. Automatic Programming: Interpreters

2-234

15. Automatic Programming: Recursive Languages

2-244

16. Logical Programming

2-246

17. Microprogramming

2-251

18. Programs for Maintenance of Equipment

2-258

19. Programming with Natural Language
literature, Acknowledgments, and References

2-259
2-260

I. NATURE OF PROGRAMMING
Problem Solving
Characteristics of Problem Solving. Basically, the general problem
which the digital computer programmer must face is the solution oj
2-01

2-02

DIGITAL COMPUTER PROGRAMMING

problems. The solution of problems with automatic information processing machines employs two tools:
1. Arithmetic (basically elementary descriptive number theory or the
manipulation of integers). The problem of evaluating and understanding
the arithmetic portion of the problem-solving job is numerical analysis
(see Vol. 1, Chap. 14).
2. Formal logic, or the making of decisions on the basis of elemental
pieces of basic information. In this chapter the emphasis will be placed
on the non-numerical portions of the problems.
Limitations. For each machine developed to solve problems, a new
pro1>lem will be found to strain its resources. Problems tend to outgrow
the ability of the present man-machine combinations to construct models
of the problem, within the computers, for solution. The important
limitations imposed by general purpose computers are:
1. Logical Portion of the Solution Process. Vast problems on classical
standards, describing the inter:action of men, machines, and nature in a
generally unpredictable (except statistically) fashion, must be solved
by mapping their description into digital information machines.
Example. The problem of commercial or military aircraft traffic control.
2. Multidimensional Arithmetic Problems. Example. Multidimensional problems in partial differential equations, as described by
numerical analysis.
3. Succession of Related 01' Even N onrelated Problems. Many problems involve organizing the solution of not one problem (large or small),
but of a number of problems coming from different disciplines, so as to
make use of previous knowledge accumulated and stored in the automatic digital computer.
4. Many Problems Are Not Well Defined. These experimentally and
theoretically undefined problems must nevertheless have solution processes developed for them. Examples. Air traffic control, the solution
of partial differential equa~ions, and the control of management and
information functions in a large organization.
Approaches to Programming. The two approaches to problem
solving with machines can be divided into (1) hand programming, in
which programs are produced in detail by individual practitioners in
a manner that is more an art than a science, and (2) automatic programming, with the machine taking over most of the routine decisions.
Automatic Programming. This area encompasses two basic problems:
1. The Problem of Languages. If humans are to keep up with the
voracious input capacity of the digital computers, then languages built

PROGRAMMING AND CODING

2-03

for the humans, and not the machines, must be developed and put into
operation. This involves the creation of translators, techniques for using
them, and, finally, a theory of such formal translators. Multimachine
installations, with each machine having a separate language of its own,
require a unified language for most efficient use. The development of
"automatic problem solution" requires formalism, interchangeability of
procedures, and compatibility of languages if it is to become a true
discipline in the scientific sense.
2. The Problen" of Files. Each problem solved on a computer should
be considered as part of the structure of a generalized body of knowledge,
either in a certain domain, or in the overall domain of problem solving
itself. The body of knowledge about automatic problem solving so
laboriously collected by the users of these machines must be set up so
that each machine itself can store, generate, and accept problem procedures generated not only by human beings, but also by the machine
itself and by other machines. The final long-range goal in this problem
of files and information retrieval, in relationship to what is presently
known as "computer programming," is therefore not to generate programs
or algorithms for digital computers by human beings, but instead to
develop programs or algorithms for the generation, improvement, filing,
retrieval, and combination of other algorithms by the computers
themselves.
Basic Concepts of Programming

The process of preparing a program or set of coded instructions to
solve a problem on a high-speed electronic digital computer has been
more of an art than a science.
Programming Procedure. A programmer is called upon to map an
external problem from the field of science, engineering, business, or
other field of origin, into the logical structure of a general purpose digital
computer by preparing, or overseeing the preparation of, a list of instructions to be performed in sequence by the computer. He may do this
himself, step by step; but if he is able to take advantage of certain
procedures already set up, he may be aided in many cases by the use of
the machine itself. This allows incorporation of similar or associated
procedures that he or other persons have evolved previously.
The usual procedures for the programmer are:
1. Determine the problem, since usually it is posed in such an original
form that it is necessary to determine the actual statement of the problem before proceeding further.
2. Analyze the problem in whatever external language it has been
presented-algebra, pictorialized "road map," handbook of organiz.ational

2-04

DIGITAL COMPUTER PROGRAMMING

procedures, an actual physical or organizational structure, or perhaps
only inputs allowed and outputs required.
3. Break the problem down into logical "atomic fragments," and
synthesize a resultant program or algorithm in terms of a different
language, that of the machine.
Basic Computer Organization. The heart of a scientific calculating
system is the large-scale general purpose, high-speed stored program
electronic digital computer (see Ref. 19). These computers are patterned
after the traditional sequential use of arithmetic, with internal decision
making based on partial results.
Block Diagram of Computer Solution. Figure 1 describes a flow
diagram which may be considered an example of a typical process of

r----------------------------------i

I

Determine initial
program layout
or structure
by experience

·Calculate other
measures of
effectiveness,
time, cost

Translate
program
within this
framework

Do these
calculated
measures fall
within range?

I
I
I

Yes I
No I
I

I

I
I
I
I
I

~---'No

I
I

I
I
I

Make radical changes as to
methods, structure

No
Yes

I
I

\o+-------..J I

I
_____________ I
~

L _____________________

~

Change selected parameters
to satisfy the technical
"measures of effectiveness"

Have all radically
new and different
approaches been
tried?

.'.....

FIG. 1.
~olution

Block diagram of computer solution.

of a scientific, business, or real-time control problem. In Fig. 1
all the blocks within the dotted lines can be handled automatically by
a high-speed digital computer. Those blocks outside the dotted lines
have not yet been successfully attacked by machine techniques. They
require human intervention. Thus, any programming procedure embeds
the electronic digital computer in a larger data processing system with
interplay between the automatic computer on the one hand and the
mathematician or engineer or business systems analyst on the other.

PROGRAMMING AND CODING

2-05

Programming System. The programmer, whatever his region of
application, is faced with a classical problem, the same that faces either
the computer designer or any designer: the formal description of a process
or procedure. The steps are as follows:
1. Determination of a descriptive statement of the problem in a
formal language, symbolic or pictorial, matllematical or graphical.
2. Determination of a basic (canonical) set of structures or pieces
into which he will decompose his formal description. In computer programming these are called instructions, or subroutines, or statements,
depending on the level of language involved.
3. Decomposition of the original problem into these basic pieces.
4. Optimization of the performance characteristics of the problem
under some measure of effectiveness: fastest program, smallest amount
of man and machine time, storage within some predetermined maximum.
5. Analysis of the performance. Determination of the behavior of the
final program for a "satisfactory" selection of input parameters.
Expansion of the Controlled System. At the present time, at most
the two boxes, "Translate program" and "Does program work," shown
in Fig. 2, are being handled more or less automatically by the machines

Translate
program within
framework

FIG. 2.

~

Does
program
work?

Operations handled automatically by the machine.

themselves. The gener,al trend of the discipline now being evolved is to
extend the areas of the dotted lines of Fig. 1 as far as possible.
Self.Improvement in Systems. An ultimate desire in a system is
that it be "self-improving." A general large control system is shown in
Fig. 3a which is to improve its performance in time. Figure 3b shows an
information machine system having similar objectives. The development
of unified programming systems indicates recent trends toward complete
mechanization (Ref. 97). One system stores on magnetic tape all programs being written, corrected, and performed within the computer.
Measures of Performance. If one therefore considers computer
programming as embedded within a large structure, one can determine
several pertinent categories of measurement of the performance of programs prepared for use on a machine.
1. Degree of generalization and abstraction of the program. vVithin
bounds, a program that can handle a large variety of cases is much more
useful than one that solves only one specific case. Experience has shown

2-06

DIGITAL COMPUTER PROGRAMMING

Establishment
of
policies

Effectuation
of
decisions

File consultation

Large file for
maintenance of
information on
policies and product
miss of goal

File maintenance

Sensing for
discrepancy between
product and plan

(a)

Decision as to formulation
techniques/error analysis.
Detailed selection of
algorithms, logical and
numerical analysis

Performance
of
problem

File consultation
for program or
previous data

Large file for maintenance
of rules of procedures,
specifications of available
algorithms and algorithms
themselves

File maintenance

Sensing for
discrepancy in
preformance of
problem from
expected

(b)

FIG. 3. Computer system. Dotted lines indicate information flow is less heavy than
for solid lines. (a) Large control system. (b) Information machine system.

that existence of a sufficiently general computer program will generate
the solution of new cases not previously considered.
2. Addition to the body of knowledge of the system. A new computer
program is worth much more if it adds new techniques to an organized
laboratory programming system.
3. Standard conventions. By use of standard conventions the programmer can use the fruits of the labors of others who have obeyed the
same conventions.
4. Cost, elapsed time, human time, machine time. These are the
measures which are ordinarily uppermost in the computer user's mind

PROGRAMMING AND CODING

2-07

and on which many short-range decisions are based. In the long run,
the three previous criteria may prove much more important.
Characteristics of :Modern Problem Solving

In using a general purpose digital computer there is a need for absolute
preciseness required in transcription of data, writing of detailed instructions, operation of the machines. These areas are important, but represent
the routine aspects of problem solving.
More fundamental are the characteristics of the formalized solution of
problems presently required by the information machines as follows:
1. En!;phasis on structure rather than number. Portions of the problem
are arithmetic, but the most difficult part of the problem-solving procedure is the readying of the logical decision-making structure.
2. Difficulty in making intuitive decision processes precise.
3. Requirement of the problem-solving systern to adapt to the changing
structure oj the problem. Most problems of modern science and industrial
society are not static, but rather dynamic.
4. Extreme combinatorial complexity.
5. Importance of correct manipulation of data. Data processing
machines can perform a far greater number of operations between errors
than can a human being. This means that in smaller problems, many
of the customary checks required to guarantee accuracy of solution can
be ignored. However, since the size of problems has kept pace with the
mean free path between errors, the need of thorough error-detecting and
error-correcting procedures remains just as important on the larger
problems (see Chap. 13). Until such procedures can be included automatically in an overall integrated system (as has been attempted, for
example, by Carr et al., Ref. 18), this property of machines of accuracy,
valid for smaller problems, must still be a responsibility of the human
programmer.
The Programmer and Machine Design. Onto the programmer falls
the responsibility of bridging the gap between human and machine performance in the first three characteristics, as well as of taking advantage
of the machine's penchant for spectacular performance in the last two
cases. New programming procedures, when successful, have been built
later into hardware. Examples are automatic indexing, automatic
number conversion, simplified input-output, simplified and extended
languages .
. The Structure of Machine Programming

It is important to understand just what is being done when a problem
is "put on" the machine. This description may be formulated in
mathematical terms.

2-08

DIGITAL COMPUTER PROGRAMMING

Mathematical Representation of the Machine. As a simplification,
consider first the electronic portion of the machine and assume a binary
machine. At the beginning of a problem, there is a certain "binary
function" stored in the machine, with each binary storage position containing either a 0 or 1. At the end of the problem, the machine contains
a second binary function, which generally is not the same.
Thus, in mathematical language, one can consider the machine proper
as a method of forming correspondence between one machine function
and another (see also Chap. 17, Sect. 5). In mathematical notation label
the binary storage positions in the machine by some index and call the
total set of such positions X. If there are N storage positions in the machine, there are 2N possible "machine functions." One such machine
function will be called f (x) . The set of all such machine functions will
be called F. (See VoL 1, Chap. 1, Sets and Relations.) Then the electronic elements of the machine form an operator ME over the set of all
functions f (x) . Figure 4 shows a picture of the machine's action.

x

FIG. 4.

Machine action in symbolic form.

The operator ME can be extended to include the entire machine, with
its input and output equipment. Such a function will be called the
automatic machine or M operator, which transforms functions f(x).
The basic set X then includes not only all binary storage positions in the
machine, but also binary storage positions on the paper, magnetic tape,
and typewriters attached to it. The function space F now includes all
functions over the extended set.
Definition of Programming. Problems to be solved by the machine
must be similar in structure to the machine itself. Therefore, any problem to be solved on the machine must be in a sense "mathematically
similar" to the machine structure just outlined. A problem to be put on
the machine will be defined as some mapping or transformation or
operator. A similar picture to the above can be drawn (see Fig. 5).
Some set N with index ~, a set of functions cf> (~) over N,  into F, the set of functions <1>' into F', and the problem operator
P into the machine operator M. This is shown in Fig. 6.

FIG. 6.

Programming in symbolic form.

Programming a problem consists of forming a correspondence between
the original problem functions and the machine functions f(x), and
between the problem operator P and the machine operator lVI. The
mapping of functions is done by some prearranged convention, and
the mapping of the operator Pinto M is done "in the small" or piecemeal.
Thus the problem operator P is broken up into successive operators
P b P 2 , P 3 , • • • P n , as shown in Fig. 6.

In Fig. 6,
C = a conversion operator converting problem functions into machine
functions
Pi = canonical components of the problem operator P
T = the operator transformation taking the Pi into corresponding Mi
R = a reconversion operator carrying machine functions back into
problem functions.
Usually the operator C will carry <1> into F in a f.ashion that is not
1 : 1. This means that a function in F may correspond to many functions
in <1>. Example. The mapping of irrational and rational numbers into
finite length machine numbers. All the numbers within a certain interval

DIGITAL COMPUTER PROGRAMMING

2-10

on the real line are made to correspond to one number in the machine.
This is where the celebrated roundoff problem arises.
Although the numbers or functions in F may have exact counterparts
in 
is expressed in an original number system in the following form:

°

(2)

i= k,k-1,···,1,0, -1, -2,···.

In the second number system
(3)

i = k', k' - 1, ... , 1,0, -1, -2, ....

It is to be converted by using the arithmetic of the first number system.
To perform the conversion it is easiest to split the number given in
eq. (2) into two parts, an integer part N, and a fractional part F, each
one to be treated separately, i.e., n = N + F.
Working first on the integer part, one divides N by r2 in the arithmetic
of the first number system to obtain a' 0 in the following fashion:
(4)

PROGRAMMING AND CODING

where [

2-15

] indicates the "integral part of." Then

(5)

N(O)

=

a'i =

(6)

(7)

N(i+I)

=

N,
N(i) [N(i)

[N(i)

/r2]r2,

/r2].

At each stage the reduced expression for the succeeding integer is given
by the integer part of the quotient obtained by division by the radix r2.
In converting the fractional part F of the number, instead of division,
multiplication by the power of the radix r2 is performed at each step, and
the integer part of the remainder yields the coefficient of the corresponding
term. The general formula for this process is as follows:
(8)

F(O)

= a'_Ir2- I + a'_2r2-2 + a'_3r2-3 + ... ,

a'i = [r 2 F(i)],

(9)
(10)

F(Hl)

=

r2F(i) - a'-I.

EXAMPLE 1. Conversion of a mixed number given in the decimal
notation into the corresponding binary number by using decimal arithmetic.

n = 97.975 =
where

N(O)

=

97,

F(O)

=

N(O)

+ F(O),

0.975.

a'o = 97 - [97/2]2 = 1,
= [97/2] = 48,
a'I = 48 - [48/2]2 = 0,
N(2) = [48/2J = 24,
a'2 = 24 - [24/2]2 = 0,
N(3) = [24/2] = 12,
a'3 = 12 - [12/2]2 = 0,
N(4) = [12/2J = 6,
a'4 = 6 - [6/2]2 = 0,
N(5) = [6/2J = 3,
a'5 = 3 - [3/2J2 = 1,
N(6) = [3/2] = 1,
a'6 = 1 - [1/2]2 = 1,
N(6) = [1/2] = o.

N(l)

Therefore
N(O)

=

1 . 26

+ 1 . 2 5 + 0 . 24 + 0 . 23 +

°. + °.
22

21

+ 1 . 2°,

DIGITAL COMPUTER PROGRAMMING

2-16

or as it is commonly written in the binary notation
N(O)

=

1100001k

Similarly,
F(O) = 0.975,
a' -1 = [2 (0.975)] = 1,
F(1) = [2(0.975)] - 1 = 0.95,
a'-2 = [2(0.95)] = 1,
F(2) = [2(0.95)] - 1 = 0.90,
a'-3 = [2(0.90)] = 1,
F(3) = [2(0.90)] - 1 = 0.80,
a'-4 = [2(0.80)] = 1,
F(4) = [2(0.80)] - 1 = 0.60,
a' -5 = [2(0.60)] = 1,
F(5) = [2 (0.60)] - 1 = 0.20,

a'-6 = [2(q.20)]
F(6) = [2(0.20)]
a'-7 = [2(0.40)]
F(7) = [2(0.40)]

= 0,
- 0 = 0.40,
= 0,
- 0 = 0.80.

At this point the computation can be terminated, since F(3)
and the result is therefore a repeating binary fraction. Hence,
F = 1 .2- 1

== F(7),

+ 1 .2-2 + 1 .2-3 + 1 .2-4 + 1 .2-5 + 0 . 2- 6 + 0 . 2-7 •• ' .

The number n can therefore be written
n

= 97.975\10

=

1100001.11111001111100·· '\2

EXAMPLE 2. Conversion of a binary number, the integer I, into a
decimal by using binary arithmetic inside a computer. The binary
numbers obtained that are equivalent to one of the ten decimal digits
o through 9 upon completion must be printed out of the computer by
some procedure such as the use of binary-coded decimal through an
output typewriter device.
Given I = N(O) = 10110010101\2, divide by 10\10 = 1010\2, successively, [ ] again mean the integral part of.

a' 0

N(1)

10110010101 - [10110010101/1010]1010
= 10110010101 - (10001110)(1010)
= 1001\2 = 9\lD,
= [10110010101/1010] = 10001110,
=

PROGRAMMING AND CODING

2-17

a'l = 10001110 - [10001110/1010]1010
= 10001110 - (1110)1010
= 001012 = 2110,
N(2) = [10001110/1010] = 1110,
a'2 = 1110 - [1110/1010]1010
= 010012 = 4110,
N(3) = [1110/1010] = 1,
a' 3 = 1 - [1/1010]1010
= 000112 = 1110.
Therefore 1= 1011001010112 = 1429110'
A similar example could be carried out for a binary fraction.
Conversion in the Arithmetic of the Second System. When n is
expressed in the form of eq. (1), perform the operations on the right-hand

side of the equation in the r2 system. This can be done by two methods:
(a) simple multiplication of the powers which may be stored inside the
computing machine, followed by addition or (b) the synthetic division
or polynomial multiplication process which is given in the following form:
(11) Nlr2 = (... «akrl + ak-l)rl + ak-2)rl + ... + ao) 172

or
(12)

PI = ak, Pi+l = Pirl

+ ak-i, Pk+l

= N

(Pi = successive iterants),

and
(13)

Flr2 = ( ... «a_ifrl + a-U-l)/rl + a-U-2»/rt + ... a-l)/rlIT2

where the value j is picked at the beginning.
EXAMPLE 1. Conversion of a number from binary to decimal by using
the decimal number system.
n = 10110010101

k

(a) Adding successive powers of 2 in the decimal system, eq. (6),

n = 20 + 22 + 24 + 27 + 28 + 2 10
= 1 + 4 + 16 + 128 + 256 + 1024 = 1429110.
(b) Using the synthetic division process of eq. (7),

n= « « « « (1 (2)+0)2+ 1)2+ 1)2+0)2+0)2+ 1)2+0)2+ 1)2+0)2+ 1,
with successive iterants Pi
2, 5, 11, 22, 44, 89, 178, 357, 714, 1429, n = 1429110.

2-18

DIGITAL COMPUTER PROGRAMMING

In the first procedure, eq. (a), it was assumed that the numerical
equivalents of the power of 2 were stored in some fashion in the external
decimal system.
EXAMPLE 2. For fractions, the two procedures are, for

n = 0.10111001\2:
(a) Adding successive powers,

n = 1 (2-1) +0 (2- 2 ) + 1 (2-3 ) + 1 (2- 4 ) + 1 (2- 5 ) +0 (2- 6 ) +0 (2-7 ) + 1 (2-8 )
=0.5
+0.125
+0.0625+0.03125
+000390625
= 0.72265625\10.
(b) Synthetic division,

n= (( (( (( (1 (2-1 )+0)2-1+0)2-1+ 1)2-1+ 1)2-1+ 1)2-1+0)2-1+ 1)2-1,
which yields as iterants
0.5, 0.25, 0.125, 0.5625, 0.78125, 0.890625, 0.4453125, 0.72265625,
n = 0.72265625\10.
Note. For fractional numbers the second procedure of synthetic division, necessitating successive divisions by powers of two, does\ not work
as well because of the difficulties of the fractions involved, and because
the procedure moves from the lowest power of the radix upward.
EXAMPLE 3. The same procedure can be used in the conversion of
decimal numbers to binary by using the binary system, as in the case
of conversion of straight binary-coded decimal numbers to binary inside
the machine. Convert n = 1429\10.
(a) Adding successive powers,
n = (1 . 103 + 4 . 102 + 2 . 10 1 + 9 . 100) \10

= 1 (1111101000) + 100(1100100) + 10(1010) + 1001 (1)
= 10110010101

k

(b) Synthetic division,

n = ((1 (1010) + 100) 1010 + 10) 1010 + 1001
= 10110010101

k

A Trick Method. A trick method of conversion can be used when
conversion is done in the system having the lower radix. The procedure
makes use of a "magic number" which is the difference between the two
bases, determined as follows:
1. If r1 < r2, the magic number is r2 - r1, and conversion is in the r1
arithmetic.

PROGRAMMING AND CODING

2-19

2. If rl > r2, the magic number is r2 - rl (in this case always negative) and conversion is in the r2 arithmetic.
Octal to Decimal. Here rl < r2, i.e., 8 < 10. The rule in going from
an octal number to decimal is as follows. Use the magic number
2 = 10 - 8, multiply it decimally by the first left-hand octal digit con·
sidered as a decimal, and subtract the resulting number decimally from
the first two left-hand octal digits, again considered as a decimal. The
procedure is then repeated by multiplying the first two digits of the
remainder and subtracting them again, again treating all numbers as
decimals. Repeat the process, multiplying by successively larger groups
of digits by 2 in each case and subtracting until the number in that
column vanishes. Repeat the same procedure in succeeding columns
until a group of k - 1 digits has been used, where k is the number of
digits in the original number.
EXAMPLE. Convert 107718 and 67818 to decimal

n

n

1077\8
1077

678\8
678
-12
-(2X6) = - 558

-2

- (2 X 1)

-

877

-(2X8)

-16
=-m

- (2 X 55) = -110

-(2 X 71) = -142

n

575110

n

Hexadecimal to Decimal. Here r2 > rl, i.e., 16 > 10. A similar procedure may be used for converting from hexadecimal to decimal via
decimal. Here the magic number is negative, -6 = 10 - 16. The
procedure is given directly without any further explanation.
EXAMPLE.

n

= 6A7116 = 6 10 7116

-(-6X6)
- (-6 X 106) =
n

+
+

3

6

10

6 7

6

3 6

17 0

(carry occurs at 16, i.e., 10

+ 6)

3110

Decimal to Binary. In general,
when converting from arbitrary external numbers into an internal
machine language, scale factors may be introduced into the original
numbers to complicate the procedure. The procedure most often used
in the conversion of decimal numbers to binary by using binary arithConversion with Scale Factors.

2-20

DIGITAL COMPUTER PROGRAMMING

metic is that given by eqs. (11) to (13). In the computer with internal
bin2try arithmetic the scale factors allowable will generally consist of a
decimal scale factor and a binary scale factor. In the MAGIC notation
for use with the MIDAC computer, and in similar notations for other
binary computers such as the IBM 704 and Univac Scientific, the following is the standard form of a digital number as applied on input. In
many cases the binary and decimal scale factors will be zero so that the
number itself will be given by the fractional part.

= 97.975 X 2-7 ,
n = 0.97975 X 2- 7 X 10 2 ,
MAGIC form = 0.97975 - 7b + 2d.
n

The general procedure for conversion of these numbers is as follows.
The decimal digits themselves are input into the machine using binarycoded decimal and shifted in the proper direction by binary shifts of
multiples of four, either left or right, depending upon the decimal scale
factor. The result is then split into integer and fractional parts. These
are then converted by the methods given by eqs. (11) to (13) above.
When the resulting binary number is obtained, it is shifted finally by
the corresponding binary scale factor to give the internal machine result.
If the machine is translating digital numbers, that is, numbers with
absolute values less than one, it is required that the number itself, multiplied by its various scale factors, be less than one in absolute value.
In case the number is being translated into a floating point form with a
fractional part less than one in absolute value in binary and an accompanying exponential part also given in binary, the number is standardized with its fractional part less than one in absolute value but greater
than one-half.
EXAMPLE. n = 1.55 X 2 - 5 X 10 1
becomes upon conversion

n

=

31/32 X 2- 1 .

In some cases in order to save space, the fractional part and exponent are
"packed" into one register or machine location with the binary fractional
part and the exponential integer part stored together.
Binary to Decimal Procedure. In the MAGIC system on MIDAC
the inverse procedure of binary to decimal conversion can also be applied,
although in most cases the decimal scale factor is not stored in the
machine, but instead only a binary scale factor is used. Output conversion requires a fractional part in absolute value less than one, and a
corresponding binary scale factor to obtain a composite external decimal
number. The scale factor is used to shift the fraction either left or

PROGRAMMING AND CODING

2-21

right depending upon the value of the binary scale factor, before
conversion of the corresponding binary integer and fraction, with a
method such as that given by eqs. (4) to (10). The resultant series
of binary-coded-decimal digits is then printed out of the machine by
using the binary-coded-decimal notation, or a "single character" notation
depending upon the particular type of printout being used.
Roundoff in Conversion. vVith such systems as the Michigan
MAGIC system or the MIT CSSR (Comprehensive System of Service
Routines) (Ref. 24) with their complete conversion of numbers from
binary to decimal and decimal to binary handled automatically by the
machine itself, it is entirely possible for a binary machine to work
satisfactorily in the external decimal language, but there are still difficulties involved. Exact binary numbers inside the machine will not be
translated in every case into exact decimal numbers. Unless special
provisions for a decimal type of roundoff are made, the user of a binary
machine will find that his decimal numbers are being output in an
incorrect form. Such an error can be corrected by performing the roundoff of numbers inside the machine in decimal rather than binary
arithmetic.
Internal Decimal Scale Factors. Because of the complexities of the
use of binary scale factors, some computer installations with binary
machines have nevertheless made use of internal decimal scale factors.
'Vith this procedure the number conversion problem can be made much
easier; however, it does not take advantage of special operations in the
binary machines which allow the binary numbers to be shifted to the right
or left, meanwhile saving the number of shifts that have been accomplished, thus allowing automatic binary scaling. Use of internal decimal
scale factors also requires the storage of multiprecision constants in some
cases, if precision is to be retained. The Illinois computer (ILLIAC)
(Ref. 56), which makes use of decimal scale factoring in many of its
routines and in its floating decimal point interpretive program, in its
original mode of operation did not have a comprehensive system of
input-output and therefore did not have as easy a system of converting
by using a binary scale factor.
The effort that many mathematicians and programmers have expended
on the problems of converting from one number system into another has
convinced many of them that computers with internal decimal arithmetic
are more useful to the external user. Many of the commercial businessoriented machines make use of some type of binary-coded-decimal
representation. Many of the users of binary machines have converted
them by internal programming into equivalent decimal machines on the
outside. This indicates a trend toward the use of decimal arithmetic

2-22

DIGITAL COMPUTER PROGRAMMING

inside the machine even though the actual circuitry may be of the binary
type and the storage may be of a binary-coded-decimal nature. The
IBM 709 design is an exception to this trend.
Representative of Negative Numbers

Since electronic adders and complementers are much easier to design
and require less hardware than subtractors, many digital computers make
use of the technique of complementation, by which negative numbers are
mapped into positive numbers outside of the usual range. Complemented
numbers, under the proper conventions, may be added to a second number
to yield the equivalent of the subtraction of the first number from the
second.
Complementation. Two basic complementation techniques, each
based on hardware considerations, must be kept in mind by the computer
programmer if the machine he is using should be designed to make use
of one or the other. These are (1) the "tens" (decimal), "twos" (binary),
or radix complement; and (2) the "nines" (decimal), "ones" (binary), or
diminished radix complement.
Ip the case of the radix complement, negative numbers less than one
in absolute value may often be stored inside the computer in the range
from 9 to 10 (for the tens complement) or one to two (for the ones complement). The diminished radix complementation scheme performs a
similar mapping, with the added difficulty in the latter case that there
are two representations of zero (negative and positive zero) which often
must be treated as a special case. Problems arise with these complements
in the shifting of numbers (multiplication by powers of the base) and in
logical operations on stored negative numbers, since they do not follow
the usual conventions. However, on those machines which follow the
usual notation, of sign followed by absolute value, none of these difficulties
can arise.
Precision or Amount of Information Available
Fixed Word Length. Machines, called fixed-word-length computers,
have standardized the length of their numbers in the range from about
nine to twelve decimal digits, or 36 to 45 binary digits. The number of
digits used to represent a number gives an indication of the precision, or
amount of information that the number itself contains. Rather than
make only one number length available, several machines have offered
the user the alternative of (1) longer word lengths as listed above, or
(2) shorter numbers, for example, half the number of digits.
Multiprecision Operations. For machines with a fixed word length,
it is possible to obtain the equivalent of operating with longer numbers of

PROGRAMMING AND CODING

2-23

twice or three times the number of digits by making use of multiprecision
types of operations, in which combinations of programmed instructions
perform the equivalent of an arithmetic unit handling numbers of higher
precision.
Variable Word Length. Computers developed particularly for business applications have a variable word length which allows numbers and
groups of alphanumeric characters to be operated upon flexibly. With
such internal computer structures, numbers of almost any digit length
may be operated upon arithmetically, at a cost in time approximately
proportional to the number of digits in each operand.
Range of Numbers
Fixed Point Machines. A machine in which the arithmetic circuitry is so designed that the decimal point for operands and result remains in a corresponding fixed position, is called a fixed point computer.
The fixed point may be located so as to make the numbers involved
either fractions less than one in absolute value, integers, or mixed
numbers.
Location of Radix Point. In general, a digital computer in which the
radix point is located at the extreme left of the number deals with numbers
of absolute value less than one, i.e., In! < 1. Such numbers have been
called "digital" numbers (Ref. 19), and the term is used throughout this
chapter. The product of two such numbers gives as a result another
"digital" number, i.e., In'l < 1. On the other hand, division, addition,
or subtraction of two "digital" numbers does not necessarily result in
another "digital" number, and the problem of overflow arises.
Any other position of fixing the radix point can be made equivalent to
fixing it at the extreme left by the use of appropriate scale factors. These
scale factors are usually powers of the base, with their main purpose to
keep partial results within the range of the computer and at the same time
prevent these results being crowded together into a small region of the
interval of the machine's range of application. In the case of "digital"
numbers the latter interval would generally be close to zero, and numbers
there would be said to have lost significance, since they have few
information-containing digits.
The optional position for the radix point at the extreme right so as
to make numbers inside the computer all integers is somewhat less
satisfactory, since the product of two integers of n digits yields an integer
containing 2n significant digits. In this case scale factors are required
for every multiplication, and overflows occur as before in many cases
for addition, subtraction, and division. Placing of the radix point somewhere midway between these two extremes does not apparently gain any

2-24

DIGITAL COMPUTER PROGRAMMING

further advantage, since scale factors or equivalent multiplication by
powers of the base must be inserted after each multiplication.
Floating Point Machines. As an alternative to one or the other of
the above fixed point notations, machines have been built with a variable
radix point or, as it is better known, a floating point number system.
With such a scheme, numbers are represented by a fractional part or
mantissa, containing the significant digit portion of the number, and an
exponent representing the power of the base by which the fraction must
be multiplied in order to obtain the number itself. For example, one
standard notation for floating point numbers n is
n

=

fore,

where f is the fractional or significant part of the representation, with
If I < 1, and e is the power of the base r needed to bring f up or down to
the value of n,
Number System Triad. Floating point numbers are generally carried
inside a digital computer with m significant digits representing the fractional part f, and n digits representing the exponent e (which may be
complemented to represent negative as well as positive integer exponents).
The integers m and n, along with a third integer p representing the number
of digits to the left of the radix point, may be combined in a number system triad (m, n, p) indicating the number structure of a computer. Fixed
point machines have n = O. Machines using "digital" numbers (absolute
value less than 1) have p = O.
EXAMPLES. A (10, 0, 0) decimal computer would be one with 10 significant decimal digits in the fractional part of a number, no digits in
the exponent, and no digits to the left of the decimal point. Numbers
in a (10, 0, 0) decimal computer, therefore, would be fixed point "digital"
numbers containing ten decimal digits, and with the decimal point therefore located at the extreme left. A (30, 6, 0) binary computer would
be one with 30 binary digits in the fractional part, and six in the exponent
part of a floating point number, and with the binary point at the extreme
left. Finally, a (10, 2, 10) decimal computer would be one with the
mantissa expressed in ten-decimal integers, and the exponential part of
the number given by two-decimal digits.
Scale Factors in Fixed Point Computations

The recent appearance of built-in floating point arithmetic on many
machines, as well as the use of standard translator-compilers which provide automatic floating point programming via subroutines has decreased
the need for emphasis on fixed point computation. However, as Burks,
von Neumann, and Goldstine (see Ref. 19) point out, computations with

PROGRAMMING AND CODING

2-25

floating point can lead to violent arithmetic errors unless thoroughly
analyzed. Hence, fixed point computations will continue, either as part
of automatically scaled programs turned out by translators, or else as
hand-tailored programs written for fixed point computers.
Procedure. The easiest technique for introduction of scale factors
into a program is as follows.
1. Determine on the basis of values of input parameters, supposing
their range is known at the beginning of a problem, the desired scale
factor needed to bring each computed value down to absolute value less
than one.
2. Insert shift operations at each stage of the computation which will
guarantee that over the range of inputs the resulting numbers will remain
digital.
With the PACT system (see Ref. 71), the programmer performs step
1 and the assembler step 2. The latter can also be done by hand.
EXAMPLE.
Suppose the problem to be calculated is as follows:
Compute the value of the polynomial
p(x) = 2.42x 3

+ 10.05x2 -

1024.1x - 20327

for
x = -10, - 9, ... , 0, 1, ... , 9, 10.

The computation used will be the nested sequence procedure
p(x)

=

((2.42x

+ 10.05)x -

1024.1)x - 20327,

which may be decomposed into the following set of arithmetic operations
where bounds on the absolute values of the partial result are also listed.
Arrows indicate transfer of information (storage).
1.
2.
3.
4.
5.
6.
7.

Po ~ 2.42
PI ~ Pox
P2 ~ PI
10.05
P3 ~P2X
P4 ~ P3 - 1024.1
P5 ~ P4 X
pG ~ P5 - 20327

+

(IPol = 2.42, x ~ 10)
(ipil < 25)
(lp21 < 35)
(lp31 < 350)
(lp41 < 1400)
(lp51 < 15,000)
(lpGI < 36,000)

The bounds on these partial results could be improved by taking the
signs of the summands at each stage into consideration. From the list of
bounds, the scale factors required to bring the partial results into "digital"
number range are:
x· 10-2, Po . 10- 1, PI . 10-2, P2 .10-2, P3 '10-3, P4 ·10-4, P5 .10-5, P6

·10~Q ..

DIGITAL COMPUTER PROGRAMMING

2-26

Therefore, the sequence of arithmetic statements would be listed stepwise,
starting at the first, proceeding downwards, and inserting scale factors as
required:

(Po· 10- 1 )
(Pl· 10-2 )
(P2· 10- 2 )
(P3· 10-3 )
(P4 .10-4 )
(P5· 10-5 )
(pu· 10-5 )

1.
2.
3.
4.
5.
6.
7.

fffffff-

(2.42 . 10- 1 )
(PO· 10- 1 ) (x . 10-2 ) (10 1 )
(Pl· 10-2 ) + (10.05 . 10-2 )
(P2 . 10-2 ) (x . 10-2 ) (10 1 )
(P3 .10-3 )(10- 1 ) - (1024.1.10- 4 )
(P4 . 10-4)(x . 10- 2 )(10 1 )
(P5· 10-5 ), - (20,237· 10-5 )

There is a redundant left shift followed by a right shift in steps 4 and 5
that should be canceled for coding efficiency.
Computer Instructions. The translation from the latter sequence into
a sequence of fixed point arithmetic instructions for any computer should
now be a simple process. The program, as written for the Datatron 205,
(see Sect. 6) upon ignoring use of any special features, such as the index
registers and input-output, and coding only the arithmetic sequence,
would be, when x = -10:

o.

ea 0101

l.
2.

mr 0100

3.
4.
5.
'6.
7.

8.
9.
100.
101.
102.
103.
104.
105.

s10001
ad 0102
n:r 0100
ad 0103
mr 0100
s10001
su 0104
true 0105
- 1000000000
2420000000
1005000000
1024100000
2023700000

2.42 .10- 1 -* ACC
(2.42 . 10- 1 ) (x . 10-2 )
(2.42 . 10- 1 ) (x . 10-2 ) (10 1 ) = PI . 10-2
(Pl· 10-2 ) + (10.05 . 10-2 ) = P2 . 10-2
(P2 . 10-2 ) (x . 10- 2 ) = P3 . 10-4
(P3 . 10-4 ) + (1024.1 . 10-4 ) = P4 . 10-4
(P4· 10-4 ) (x . 10- 2 )
(P4 . 10-4 ) (x . 10-2 )(10 1 ) = P5 . 10-5
(P5 . 10-5 ) - (20237· 10-5 )
(p (x) . 10-5 ) -* Location 105
(x . 10-2 )
(2.42 . 10- 1 )
(10.05 . 10-2 )
(1024.1 . 10-4 )
(20237 . 10-5 )
(p(x) . 10-5 )

3. NUMBER CONVERSION TABLES

Most number conversion in binary computers is now done completely
by the machine itself. However, for completeness and easy access to the

PROGRAMMING AND CODING

2-27

programmer who from time to time has to check a number obtained from
lights on the console of the computer, or printed out in nonstandard notation, Tables 1 to 5 are included from Carr and Scott (Ref. 24) and the
IBM 704 manual (Ref. 54).
Table
Table
Table
Table
Table
Table

1. Octal-Decimal Integer Conversion

2.
3.
4.
5.

Octal-Decimal Fraction Conversion
Hexadecimal-Decimal Conversion (Two-Way)
Powers of 2 (Positive and Negative) Expressed in Decimal
Hexadecimal Multiplication

Page
2-28
2-36
2-42
2-43
2-44

TABLE

0000

0000

to
0777

0511

(Octal)

(Decimal)

to

Octal Decimal
10000 - 4096
20000 - 8192
30000 - 12288
40000 - 16384
50000 - 20480
60000 - 24576
70000 - 28672

1.

N
I
N

OCTAL-D..J:CIMAL INTEGER CONVERSION

0

1

2

3

4

5

6

7

0000
0010
0020
0030
0040
0050
0060
0070

0000
0008
0016
0024
0032
0040
0048
005~

0001
0009
0017·
0025
0033
0041
0049
0057

0002
0010
0018
0026
0034
0042
0050
0058

0003
0011
0019
0027
0035
0043
0051
0059

0004
0012
0020
0028
0036
0044
0052
0060

0005
0013
0021
0029
0037
0045
0053
0061

0006
0014
0022
0030
0038
0046
0054
0062

0007
0015
0023
0031
0039
0047
0055
0063

0400
0410
0.420
0430
0440
0450
0460
0470

0100
0110
0120
0130
0140
0150
0160
0170

0064
0072
0080
0088
0096
0104
0112
0120

0065
0073
0081
0089
0097
0105
0113
0121

0066
0074
0082
0090
0098
0106
0114
0122

0067
0075
0.083
0091
0099
0107
0115
0123

0068
0076
0084
0092
0100
0108
0116
0124

0069
0077
0085
0093
0101
0109
0117
0125

0070
0078
0086
0094
0102
0110
0118·
0126

0071
0079
0.087
0095
0103
0111
0119
0127.

0500
051.0
0520
0530
0540
0550
0560
0570

Q)

1

2

3

4

5

6

7

0256
0264
0272
0280
0288
0296
0304
0312

0257
0265
0273
0281
0289
0297
0305
0313

0258
0266
0274
0282
0290
0298
0306
0314

0259
0267
0275
0283
0291
0299
0307
0315

0260
0268
0276
0284
0292
0300
0308
0316

0261
0269
0277
0285
0293
0301
0309
0317

0262
0270
0278
0286
0294
0302
0310
0318

0263
0271
0279
0287
0295
0303
0311
0319

0320
0328
0336
0344
0352
0360
0368
0376

0321
0329
0337
0345
03S3
'0361
0369
0377

0322
0330
0338
0346
0354
0362
0370
0378

0323
0331
0339
0347
0355
0363
0371
0379

0324
0332
0340
0348
0356
0364
0372
0380

0325
0333
0341
0349
0357
0365
0373
0381

0326
0334
0342
0350
0358
0366
0374
0382

0327
0335
0343
0351
0359
0367
0375
0383

0

0200
0210
0220
0230
0240
0250
0260
0270

0128
0136
0144
0152
0160
0168
0176
0184

0129
0137
0145
0153
0161
0169
0177
0185'

0130
0138
0146
0154
0162
0170
0178
0186

0131
0139
0147
0155
0163
0171
0179
0187

0132
0140
0148
0156
0164
0172
0180
0188

0133 0134
0141 01'42
0149 0150
0157 0158
0165 0166
0173.0174
0181 0182
0189 0190

0135
0143
0151
0159
0167
0175
0183
0191

0600
0610
0620
0630
0640
0650
0660
0670

0384
0392
0400
0408
0416
0424
0432
0440

0385
0393
0401
0409
0417
0425
0433
0441

0386
0394
0402
0410
0418
0426
0434
0442

0387
Q395
0403
0411
0419
0427
0435
0443

0388
0396
0404
0412
0420
0428
0436
0444

0389
0397
0405
0413
0421
0429
0437
0445

0390
0398
0406
0414
0422
0430
0438
0446

0391
0399
0407
0415
0423
0431
0439
0447

0300
0310
0320
0330
0340
0350
0360
0370

0192
0200
0208
0216
0224
0232
0240
0248

0193
0201
0209
0217
0225
0233
0241
0249

0194
0202
0210
0218
0226
0234
0242
0250

0195
0203
0211
0219
0227
0235
0243
0251

0196
0204
0212
0220
0228
0236
0244
0252

0197
0205
0213
0221
0229
0237
0245
0253

0199
0207
0215
0223
0231
0239
0247
0255

0700
0710
0720
0730
0740
0750
0760
0770

0448
0456
0464
0472
0480
0488
0496
0504

0449
0457
0465
0473
0481
0489
0497
0505

0450
0458
0466
0474
0482
0490
0498
0506

0451
0459
0467
0475
0483
0491
0499
0507

0452
0460
0468
0476
0484
0492
0500
0508

0453
046i
0469
0477
0485
0493
0501
0509

0454
0462
0470
0478
0486
0494
0502
0510

0455
0463
0471
0479
0487
0495
0503
0511

0198
0206
0214
0222
0230
0238
0246
0254

o

(j)
=i

»
r-

()

o

~

""0

C

--I

m

;;;a
""0

:;:c

o(j)
:;:c
»
~
~

Z

(j)

1000

0512

to

to

1777

1023

(Octal)

(Decimal)

0

1

2

3

4

5

6

7

1000
10lD
1020
1030
1040
1050
1060
1070

0512
0520
0528
0536
0544
0552
0560
0568

0513
0521
0529
0537
0545
0553
0561
0569

0514
0522
0530
0538
0546
0554
0562
0570

0515
0523
0531
0539
0547
0.555
0563
0571

0516
0524
0532
0540
0548
0556
0564
0572

0517
0525
0533
0541
0549
0557
0565
0573

0518
0526
0534
0542
0550
0558
0566
0574

0519
0527
0535
0543
0551
0559
0567
0575

1100
1110
1120
1130
1140
1150
1160
1170

0576
0584
0592
0600
0608
0616
0624
0632

0577
0585
0593
0601
0609
0617
0625
0633

0578
0586
0594
0602
0610
0618
0626
0634

0579
0587
0595
0603
0611
0619
0627
0635

0580
0588
0596
0604
0612
0620
0628
0636

0581
0589
0597
0605
0613
0621
0629
0637

0582
0590
0598
0606
0614
0622
0630
0638

0583
0591
0599
0607
0615
0623
0631
0639

1200
1210
1220
1230
1240
1250
1260
1270

0640
0648
0656
0664
0672
0680
0688
0696

0641
0649
0657
0665
0673
0681
0689
0697

0642
0650
0658
0666
0674
0682
0690
0698

0643
0651
0659
0667
0675
0683
0691
0699

0644
0652
0660
0668
0676
0684
0692
0700

0645
0653
0661
0669
0677
0685
0693
0701

0646
0654
0662
0670
0678
0686
0694
0702

1300
1310
1320
1330
1340
1350
1360
1370

0704
0712
0720
0728
0736
0744
0752
0760

0705
0713
0721
0729
0737
0745
0753
0761

0706
0714
0722
0730
0738
0746
0754
0762

0707
0715
0723
0731
0739
0747
0755
0763

0708
0716
0724
0732
0740
0748
0756
0764

0709
0717
0725
0733
0741
0749
0757
0765

0710
0718
0726
0734
0742
0750
0758
0766

3

4

5

6

7

0770
0778
0786
0794
0802
0810
081~ 0818
0825 0826

0771
0779
0787
0795
0803
0811
0819
0827

0772
0780
0788
0796
0804
0812
0820
0828

0773
0781
0789
0797
0805
0813
0821
0829

0774
0782
0790
07980806
0814
0822
0830

0775
0783
0791
0799
0807
0815
0823
0831

0832
0840
0848
0856
0864
0872
0880
0888

0833
0841
0849
0857
0865
0873
0881
0889

0834
0842
0850
0858
0866
0874
0882
0890

0835
0843
0851
0859
0867
0875
0883
0891

0836
0844
0852
0860
0868
0876
0884
0892

0837
0845
0853
0861
0869
0877
0885
0893

0838
0846
0854
0862
0870
0878
0886
0894

0839
0847
0855!
0863
0871
0879
0887
0895

1600
1610
1620
1630
1640
1650
1660
1670

0896
0904
0912
0920
0928
0936
0944
0952

0897
0905
0913
0921
0929
0937
0945
0953

0898
0906
0914
0922
0930
0938
0946
0954

0899
0907
0915
0923
0931
0939
0947
0955

0900
0908
0916
0924
0932
0940
0948
0956

0901
0909
0917
0925
0933
0941
0949
0957

0902
0910
0918
0926
0934
0942
0950
0958

0903
0911
0919
0927
0935
0943
0951
0959

1700
1710
1720
1730
1740
1750
1760
1770

0960
0968
0976
0984
0992
1000
1008
1016

0961
0969
0977
0985
0993
1001
1009
1017

0962
0970
0978
0986
0994
1002
1010
1018

0963
0971
0979
0987
0995
1003
1011
1019

0964
0972
0980
0988
0996
1004
1012
1020

0965
0973
0981
0989
0997
1005
1013
1021

0966
0974
0982
0990
0998
1006
1014
1022

0967
0975
0983
0991
0999
1007
1015
1023

0

1

1400
1410
1420
1430
1440
1450
1460
1470

0768
0776
0784
0792
0800
0808
0816
0824

0769
0777
0785
0793
0801
0809

1500
1510
1520
1530
1540
1550
1560
1570

0647
0655
0663
0671
0679
0687;
0695
0703
0711
0719
0727
0735
0743
0751
0759
0767

1

I

2

"o

:;;0

(j)

:;;0

»
~
~

Z

(j)

»
z
t:J

()

o
o
z

(j)

N

~

..0

TABLE

2000 11024

to
2777
(Octal)

to
1535
(Decimal)

Octal Decimal

10000 - 4096
20000 - 8192
30000 - 12288
40000 - 16384
50000 - 20480
60000 - 24576
70000 - 28672

1.

OCTAL-DECIMAL INTEGER CONVERSION

N

(Continued)

W
o

0

1

2

3

4

5

6

7

2400
2410
2420
2430
2440
2450
2460
2470

1280
1288
1296
1304
1312
1320
1328
1336

1281
1289
1297
1305
1313
1321
1329
1337

1282
1290
1298
1306
1314
1322
1330
1338

1283
1291
1299
1307
1315
1323
1331
1339

1284
1292
1300
1308
1316
1324
1332
1340

1285
1293
1301
1309
1317
1325
1333
1341

1286
1294
1302
1310
1318
1326
1334
1342

1287
1295
13D3
1311
1319
1327
1335
1343

1095
1103
1111
1119
1127
1135
1143
1151

2500
2510
2520
2530
2540
2550
2560
2570

1344
1352
1360
1368
1376
1384
1392
1400

1345
1353
1361
1369
1377
1385
1393
1401

1346
1354
1362
1370
1378
1386
1394
1402

1347
1355
1363
1371
1379
1387
1395
1403

1348
1356
1364
1372
1380
1388
1396
1404

1349
1357
1365
1373
1381
1389
1397
1405

1350
1358
1366
1374
1382
1390
1398
1406

1351
1359
1367
1375
1383
139i
1399
1407

1158
1166
1174
1182
1190
1198
1206
1214

1159
1167'
l175
1183
1191
1199
1207
1215

2600
2610
2620
2630
2640
2650
2660
2670

1408 1409
1416 1417
1424 1425
1432 1433
1440 1441
1448-1449
1456 1457
1464 1465

1410
1418
1426
1434
1442
1450
1458
1466

1411
1419
14-27
1435
1443
1451
1459
1467

1412
1420
1428
1436
1444
1452
1460
1468

1413
1421
1429
1437
1445
1453
1461
1469

1414
1422
1430
1438
1446
1454
1462
1470

1415
14231
1431
1439
1447
14551
1463
1471!

1222
1230
1238
1246
12541
1262
1270
1278

1223
1231
1239
1247
1255
1263
1271
1279

2700
2710
2720
2730
2740
2750
2760
2770

1472 1473 1474

1~5

1476 1477 1478·

0

1

2

3

4

5

6

7

2000
2010
2020
2030
2040
2050
2060
2070

1024
1032
1040
1048
1056
1064
1072
1080

1025
1033
1041
1049
1057
1065
1073
1081

1026
1034
1042
1050
1058
1066
1074
1082

1027
1035
1043
1051
1059
1067
1075
1083

1028
1036
1044
1052
1060
1068
1076
1084

1029
1037
1045
1053
1061
1069
1077
1085

1030
1038
1046
1054
1062
1070
1078
1086

1031
1039
1047
1055
1063
1071
1079
1087

2100
2110
2120
2130
2140
2150
2160
2170

1088
1096
1104
l112
1120
1128
1136
1144

1089
1097
1105
1113
1121
1129
1137
1145

1090
1098
1106
1114
1122
1130
1138
1146

1091
1099
1107
1115
1123
1131
1139
1147

1092
l100
1108
1116
1124
1132
1140
1148

1093
1101
1109
1117
1125
1133
1141
1149

1094
1102
1110
1118
1126
1134
1142
1150

2200
2210
2220
2230
2240
2250
2260
2270

1152
1160
l168
l176
1184
1192
1200
1208

1153
1161
l169
l177
1185
1193
1201
1209

1154
1162
1170
l178
1186
1194
1202
1210

1155
1163
1171
1179
1187
1195
1203
1211

1156
1164
l172
1180
1188
1196
1204
1212

1157
1165
1173
1181
1189
1197
1205
1213

2300
2310
2320
2330
2340
2350
2360
2370

1216
1224
1232
1240
1248
1256
1264
1272

1217
1225
1233
1241
1249
1257
1265
1273

1218
1226
1234
1242
1250
1258
1266
1274

1219
1227
1235
1243
1251
1259
1267
1275

1220
1228
1236
1244
1252
1260
1268
1276

1221
1229
1237
1245
1253
1261
1269
1277

1480
1488
1496
1504
1512
1520
1528

1~81

1489
1497
1505
1513
1521
1529

1482 1483
1490-1491
1498 1499
1506 1507
1514 1515
1522 1523
1530 1531

1484
1492
1500
1508
1516
1524
1532

1485
1493
1501
1509
1517
1525
1533

1486
1494
1502
1510
1518
1526
1534

!

o
(j)

=i

>
.()

o

~

""C

C

-f

m

;;0
""C

1

147~

1487
14951
1503'
1511
1519
1527
1535

;;0

o

(j)
;;0

»
~
~

Z

(j)

3000
to

3777
(Octal)

11536
to
2047
(Decimal)

3

4

5

6

7

1793 1794 1795
1801 1802 1803
1~09 1810 1811
1817 1818 1819
"1825 1826 1827
1833 1834 1835
1841 1842 1843
1849 1850 1851

1796
1804
1812
1820
1828
1836
1844
1852

1797
1805
1813
1821
1829
1837
1845
1853

1798
1806
1814
1822
183.0
1838
1846
1854

1799
1807
1815
1823
1831
1839
1847
1855

1856
1864
1872
1880
1888
1896
1904
1912

1857
1865
1873
1881
1889
1897
1905
1913

1858
1866
1874
1882
1890
1898
1906
1914

1859
1867
1875
1883
1891
1899
1907
1915

1860
1868
1876
1884
1892
1900
1908
1916

1861
1869
1877
1885
1893
19.01
1909
1917

1862
1870
1878
1886
1894
1902
1910
1918

1863
1871
1879
1887
1895
1903
1911
1919

192.0
1928
1936
1944
1952
1960
1968
1976

1921
1929
1937
1945
1953
1961
1969
1977

1922
1930
1938
1946
1954
1962
197.0
1978

1923
1931
1939
1947
1955
1963
1971
1979

1924
1932
1940
1948
1956
1964
1972
1980

1925
1933
1941
1949
1957
1965
1973
1981

1~26

1727

3600
361.0
3620
3630
364.0
3650
3660
3670

1934
1942
195.0
1958
1966
1974
1982

1927
1935
1943
1951
1959
1967
1975
1983,

1735
1743
1751
1759
1767
1775
1783
1791

3700
3710
3720
3730
3740
3750
3760
377.0

1984
1992
2000
2.008
2.016
2024
2032
2.040

1985
1993
2001
2009
2017
2025
2.033
2041

1986
1994
2002
201.0
2018
2026
2034
2042

1987 1988
1995 1996
2003 2004
2011 2012
2019 2020
20272.028
2035 2036
2.043 2.044

1989
1997
2005
2013
2021
2029
2037
2-045

199.0
1998
2006
2014
2022
2030
2.038
2.046

19911
1999
2007
20151
2623
2031
2.039
20471

.0

0

1

2

3

4

5

6

7

3000
3010
3020
303.0
3040
3050
3060
3070

1536
1544
1552
1560
1568
1576
1584
1592

1537
1545
1553
1561
1569
1577
1585
1593

1538
1546
1554
1562
1570
1578
1586
1594

1539
1547
1555
1563
1571
1579
1587
1595

1540
1548
1556
1564
1572
1580
1588
1596

1541
1549
1557
1565
1573
1581
1589
1597

1542
1550
1558
1566
1574
1582
1590
1598

1543
1551
1559
1567
1575
1583
1591
1599

3400
3410
3420
3430
3440
3450
3460
3470

1792
18.00
1808
1816
1824
1832
184.0
1848

3100
3110
3120
3130
3140
3150
3160
3170

1600
1608
1616
1624
1632
1640
1648
1656

1601
1609
1617
1625
1633
1641
1649
1657

1602
1610
1618
1626
1634
1642
1650
1658

1603
1611
1619
1627
1635
1643
1651
1659

1604
1612
1620
1628"
1636
1644
1652
1660

1605
1613
1621
1629
1637
1645
1653
1661

1606"
1614
1622
1630
1638
1646
1654
1662

1607
1615
16213
1631
1639
1647
1655
1663

3500
3510
3520
3530
3540
3550
3560
3570

3200
3210
3220
3230
3240
3250
3260
3270

1664
1672
1680
1688
1696
1704
1712
1720

1665
1673
1681
1689
1697
1705
1713
1721

1666
1674
1682
1690
1698
1706
1714
1722

1667"
1675
1683
1691
1699
1707
1715
1723

1668
1676
1684
1692
1700
1708
1716
1724

1669
1677
1685
1693
1701
1709
l717
1725

1670
1678
1686
1694
1702
1710
1718
1726

1671
1679
1687
1695
1703
1711

3300
3310
3320
3330
334.0
335.0
3360
337.0

1728
1736
1744
1752
1760
1768
1776
1784

1729 1730 1731
1737 1738 1739
174~ 1746 1747
1753 1754 1755
1761 1762 1763
1769 1770 1771
1777 1778 1779
1785 1786 1787

1732
1740
1748
1756
1764
1772
178.0
1788

1733
1741
1749
1757
1765
1773
1781
1789

1734
1742
1750
1758
1766
1774
1782
179.0

1~19

1

2

-c

;:c

o(j)

;:c

»
~
~

Z

(j)

»
z
o

()

oo
Z

(j)

to.)

w

TABLE

1.

OCTAL-DECIMAL INTEGER CONVERSION

N

(Continued)

W

N

4000
to

I

2048
to

4777

2559

(Octo I)

(Decimal)

Octal Decimal
10000 - 4096
20000 - 8192
30000 - 12288
40000 - 16384
50000 - 20480
60000 - 24576
70000 - 28672

0

1

2

3

4

5

6

7

4400
4410
4420
4430
4440
4450
4460
4470

2304
2312
2320
2328
2336
2344
2352
2360

2305
2313
2321
2329
2337
2345
2353
2361

2306
2314
2322
2330
2338
2346
2354
2362

2307
2315
2323
2331
2339
2347
2355
2363

2308
2316
2324
2332
2340
2348
2356
2364

2309
2317
2325
2333
2341
2349
2357
2365

2310
2318
2326
2334
2342
2350
2358
2366

2311
2319
2327
23351
2343
2351
2359
2367

2119
2127
2135
2143
2151
2159
2167
2175

4500
4510
4520
4530
4540
4550
4560
4570

2368
2376
2384
2392
2400
2408
2416
2424

2369
2377
2385
2393
2401
2409
2417
2425

2370
2378
2386
2394
2402
2410
2418
2426

2371
2379
2387
2395
2403
2411
2419
2427

2372
2380
2388
2396
2404
2412
2420
2428

2373
2381
2389
2397
2405
2413
2421
2429

2374
2382
2390
2398
2406
2414
2422
2430

2375
2383
2391
2399
2407
2415
2423
2431

2182
2190
2198
2206
2214
2222
2230
2238

2183
2191
2199
2207
2215
2223
2231
2239

4600
4610
4620
4630
4640
4650
4660
4670

2432
2440
2448
2456
2464
2472
2480
2488

2433
2441
2449
2457
2465
2473
2481
2489

2434
2442
2450
2458
2466
2474
2482
2490

2435
2443
2451
2459
2467
2475
2483
2491

2436
2444
2452
2460
2468
2476
2184
2492

2437
2445
2453
2461
2469
2477
2485
2493

2438
2446
2454
2462
2470
2478
2486
2494

2439
2447
2455
2463
2471
2479
2487
2495

2246
2254
2262
2270
2278
2286
2294
2302

·2247
2255
2263
2271
2279
2287
2295
2303

4700
4710
4720
4730
4740
4750
4760
4770

2496
2504
2512
2520
2528
2536
2544
2552

2497
2505
2513
2521
2529
2537
2545
2li53

2498
2506
2514
2522
2530
2538
2546
2554

2499
2507
2515
2523
2531
2539
2547
2555

2500
2508
2516
2524
2532
2540
2548
2556

2501
2509
2517
2525
2533
2541
2549
2557

2502
2510
2518
2526
2534
2542
2550
2558

2503
2511
2519
2527
2535
2543
2551
2559

0

1

2

3

4

5

6

7

4000
4010
4020
4030
4040
4050
4060
4070

2048
2056
2064
2072
2080
2088
2096
2104

2049
2057
2065
2073
2081
2089
2097
2105

2050
2058
2066
2074
2082
2090
2098
2106

2051
2059
2067
2075
2083
2091
2099
2107

2052
2060
2068
2076
2084
2092
2100
2108

2053
2061
2069
2077
2085
2093
2101
2109

2054
2062
2070
2078
2086
209(
2102
2110

2055
2063
2071
2079
2087
2095
2103
2111

4100
4110
4120
4130
4140
4150
4160
4170

2112
2120
2128
.2136
2144
2152
2160
2168

2113
2121
2129
2137
2145
2153
2161
2169

2114
2122
2130
2138
2146
2154
2162
2170

2115
2123
2131
2139
2147
2155
2163
2171

2116
2124
2132
2140
2148
2156
2164
2172

2117
2125
2133
2141
2149
2157
2165
2173

2118
2126
2134
2142
2150
2158
2166
2174

4200
4210
4220
4230
4240
4250
4260
4270

2176
2184
2192
2200
2208
2216
2224
2232

2177
2185
2193
2201
2209
2217
2225
2233

2178
2186
2194
2202
2210
2218
2226
2234

2179
2187
2195
2203
2211
2219
2227
2235

2180
2188
2196
2204
2212
2220
2228
2236

2181
2189
2197
2205
2213
2221
2229
2237

4300
4310
4320
4330
4340
4350
4360
4370

2240
2248
2256
2264
2272
2280
2288
2296

2241
2249
2257
2265
2273
2281
2289
2297

2242
2250
2258
2266
2274
2282
2290
2298

2243
2251
2259
2267
2275
2283
2291
2299

2244
2252
2260
2268
2276
2284
2292
2300

2245
2253
2261
2269
2277
2285
2293
2301

c

(i)
=i

»

r

()

o

~

""'C

C

-I

m

;::0

""'C
;::0

o(j)
;::0

>
~
~

Z

(j)

0
5000
to
5777

2560
to
3071

(Octal)

(Decimal)

1

2

3

4

5

6

7

0

1

2

3

4

5

6

7

5000
5010
5020
5030
5040
5050
5060
5070

2560
2568
2576
2584
2592
2600
2608
2616

2561
2569
2577
2585
2593
2601
2609
2617

2562
2570
2578
2586
2594
2602
2610
2618

2563
2571
2579
2587
2595
2603
2611
2619

2564
2572
2580
2588
2596
2604
2612
2620

2565
2573
2581
2589
2597
2605
2613
2621

2566 2567
2574 2575
~582 2583
2590 2591
2598 2599
2606 2607
2614 2615
2622 2623

5400
5410
5420
5430
5440
5450
5460
5470

2816
2824
2832
2840
2848
2856
2864
2872

2817
2825
2833
2841
2849
2857
2865
2873

2818
2826
2834
2842
2850
2858
2866
2874

2819
2827
2835
2843
2851
2859
2867
2875

2820
2828
2836
2844
2852
2860
2868
2876

2821
2829
2837
2845
2853
2861
2869
2877

2822
2830
2838
2846
2854
2862
2870
2878

2823
2831
2839
2847
2855
2863
2871
2879

5100
5110
5120
5130
5140
5150
5160
5170

2624
2632
2640
2648
2656
2664
2672
2680

2625
2633
2641
2649
2657
2665
2673
2681

2626
2634
2642
2650
2658
2666
2674
2682

2627
2635
2643
2651
2659
2667
2675
2683

2628
2636
2644
2652
2660
2668
2676
2684

2629
2637
2645
2653
2661
2669
2677
2685

2630
2638
2646
2654
2662
2670
2678
2686

2631
2639
2647
2655
2663
2671
2679
2687

5500
5510
5520
5530
5540
5550
5560
5570

2880
2888
2896
2904
2912
2920
2928
2936

2881
2889
2897
2905
2913
2921
2929
2937

2882
2890
2898
2906
2914
2922
2930
2938

2883
2891
2899
2907
2915
2923
2931
2939

2884
2892
2900
2908
2916
2924
2932
2940

2885
2893
2901
2909
2917
2925
2933
2941

2886
2894
2902
2910
2918
2926
2934
2942

2887
2895
2903
2911
2919
2927
2935
2943

5200
5210
5220
5230
5240
5250
5260
5270

2688
2696
2704
2712
2720
2728
2736
2744

2689
2697
2705
2713
2721
2729
2737
2745

2690
2698
2706
2714
2722
2730
2738
2746

2691
2699
2707
2715
2723
2731
2739
2747

2692
2700
2708
2716
2724
2732
2740
2748

2693
2701
2709
2717
2725
2733
2741
2749

2694
2702
2710
2718
2726
2734
2742
2750

2695
2703
2711
2719
2727
2735
2743
2751

5600
5610
5620
5630
5640
5650
5660
5670

2944
2952
2960
2968
2976
2984
2992
3000

2945
2953
2961
2969
2977
2985
2993
3001

2946
2954
2962
2970
2978
2986
2994
3002

2947
2955
2963
2971
2979
2987
2995
3003

2948
2956
2964
2972
2980
2988
2996
3004

2949
2957
2965
2973
2981
2989
2997
3005

2950
2958
2966
2974
2982
2990
2998
3006

2951
2959
2967
2975
2983
2991
2999
3007

5300
5310
5320
5330
5340
5350
5360
5370

2752
2760
2768
2776
2784
2792
2800
2808

2753
2761
2769
2777
2785
2793
2801
2809

2754
2762
2770
2778
2786
2794
2802
2810

2755
2763
2771
2779
2787
2795
2803
2811

2756
2764
2772
2780
2788
2796
2804
2812

2757
2765
2773
2781
2789
2797
2805
2813

2758
2766
2774
2782
2790
2798
2806
2814

2759
2767
2775
2783,
2791
2799
2807
2815

5700
5710
5720
5730
5740
5750
5760
5770

3008
3016
3024
3032
3040
3048
3056
3064

3009
3017
3025
3033
3041
3049
3057
3065

3010
3018
3026
3034
3042
'3050
3058
3066

3011
3019
3027
3035
3043
3051
3059
3067

3012
3020
3028
3036
3044
3052
3060
3068

3013
3021
3029
3037
3045
3053
3061
3069

3014
3022
3030
3038
3046
3054
3062
3070

3015
3023
3031
3039
3047
3055
3063
3071

""tJ

:;;0

o(j)
:;;0

»
~
~

Z

(j)

»
z
c

()

o

2

z

(j)

N

W
w

TABLE

6000
10

I

3072
10

6777

3583

(Oclol)

(Decimol)

Octal Decimal
10000· 4096
20000· 8192
30000· 12288
40000 • 16384
50000 • 20480
60000·24576
70000·28672

1.

OCTAL-DECIMAL INTEGER CONVERSION

0

W

..r.

4

5

6

7

3331
3339
3347
3355
3363
3371
3379
3387

3332
3340
3348
3356
3364
3372
3380
3388

3333
3341
3349
3357
3365
3373
3381
3389

3334
3342
3350
3358
3366
3374
3382
3390

3335
3343
3351
3359
3367
3375
3383
3391

3394
3402
3410
3418
3426
3434
3442
3450

3395
3403
3411
3419
3427
3435
3443
3451

3396
3404
3412
3420
3428
3436
3444
3452

3397
3405
3413
3421
3429
3437
3445
3453

3398
3406
3414
3422
3430
3438
3446
3454

3399
3407
3415
3423
3431
3439
3447
3455

3457
3465
3473
3481
3489
3497
3505
3513

3458
3466
3474
3482
3490
3498
3506
3514

3459
3467
3475
3483
3491
3499
3507
3515

3460
3468
3476
3484
3492
3500
3508
3516

3461
3469
3477
3485
3493
3501
3509
3517

3462
3470
3478
3486
3494
3502
3510
3518

3463
3471
3479
3487
3495
3503
3511
3519

3521
3529
3537
3545
3553
3561
3569
3577

3522
3530
3538
3546
3554
3562
3570
3578

3523
3531
3539
3547
3555
3563
3571
3579

3524
3532
3540
3548
3556
3564
3572
3580

3525
3533
3541
3549
3557
3565
3573
3581

3526
3534
3542
3550
3558
3566
3574
3582

3527
3535
3543
3551
3559
3567
3575
3583

1

2

0

1

2

3

'4

5

6

7

6000
6010
.6020
6030
6040
6050
6060
6070

3072
3080
3088
3096
3104
3112
3120
3128

3073
3081
3089
3097
3105
3113
3121
3129

3074
3082
3090
3098
3106
3114
3122
3130

3075
3083
3091
3099
3107
3115
3123
3131

3076
3084
3092
3foo
3108
3116
3124
3132

3077
3085
3093
3101
3109
3117
3125
3133

3078
3086
3094
3102·
3110
3118
3126
3134

3079
3087
3095
3103
3111
3119
3127
3135

6400
6410
6420
6430
6440
6450
6460
6470

3328
3336
3344
3352
3360.
3368
3376
3384

3329
3337
3345
3353
3361
3369
3377
3385

3330
3338
3346
3354
3362
3370
3378
3386

6100
6110
6120
6130
6140
6150
6160
6170

3136
3144
3152
3160
3168
3176
3184
3192

3137
3145
3153
3161
3169
3177
3185
3193

3138
3146
3154
3162
3170
3178
3186
3194

3139
3147
3155
3163
3171
3179
3187
3195

3140
3148
3156
3164
3172
3180
3188
3196

3141
3149
3157
3165
3173
3181
3189
3197

3142
3150
3158
3166
3174
3182
3190
3198

3143
3151
3159
3167
3175
3183
3191
3199

6500
6510
6520
6530
6540
6550
6560
6570

3392
3400
3408
3416
3424
3432
3440
3448

3393
3401
3409
3417
3425
3433
3441
3449

62QO
6210
6220
6230
6240
6250
6260
6270

3200
3208
3216
3224
3232
3240
3248
3256

3201
3209
3217
3225
3233
3241
3249
3257

3202
3210
3218
3226
3234
3242
3250
3258

3203
3211
3219
3227
3235
3243
3251
3259

3204
3212
3220
3228
3236
3244
3252
3260

3205
3213
3221
3229
3237
3245
3253
3261

3206
3214
3222
3230
3238
3246
3254
3262

3207
3215
3223
3231
3247
3255
3263

6600
6610
6620
6630
6640
6650
6660
6670

3456
3464
3472
3480
3488
3496
3504
3512

6300
6310
6320
6330
6340
6350
6360
6370

3264
3272
3280
3288
3296
3304

3265
3273
3281
3289
3297
3305
~312 3313
3320 3321

3266
3274
3282
3290
3298
3306
3314
3322

3267
3275
3283
3291
3299
3307
3315
3323

3268
3276
3284
3292
3300
3308
3316
3324

3269·3270
3277 3278
3285 3286
3293 3294
3301 3302
3309 3310
3317 3318
3325 3326

3271
3279
3287
3295
3303
3311
3319
3327

6700
6710
6720
6730
6740
6750
6760
6770

3520
3528
3536
3544
3552
3560
3568
3576

~239

N

(Continued)
3

o

(j)
=t

>
I

()

o

~

"C

--f

m

:;:0

"o
(j)
»

;::c

:;:0

~
~

Z

(j)

7000

3584

to

to

7777

4095

(Octol)

(Decimol)

0

1

2

3

4

5

6

7

7400
7410
7420
7430
7440
7450
. 7460
7470

3840
3848
3856
3864
3872
3880
3888
3896

3841
3849
3857
3865
°3873
3881
3889
3897

3842
3850
3858
3866
3874
3882
3890
3898

3843
3851
3859
3867
3875
3883
3891
3899

3844
3852
3860
3868
3876
3884
3892
3900

3845
3853
3861
3869
3877
3885
3893
3901

3846
3854
3862
3870
3878
3886
3894
3902

3847
3855
3863
3871
3879
3887
3895
3903

3655
3663
3671
3679
3687
3695
3703
3711

7500
7510
7520
7530
7540
7550
7560
7570

3904
3912
3920
3928
3936
3944
3952
3960

3905
3913
3921
3929
3937
3945
3953
3961

3906
3914
3922
3930
3938
3946
3954
3962

3907
3915
3923
3931
3939
3947
3955
3963

3908
3916
3924
3932
3940
3948
3956
3964

3909
3917
3925
3933
3941
3949
3957
3965

3910
3918
3926
3934
3942
3950
3958
3966

3911
3919
3927
3935
3943
3951
3959
3967

3718
3726
3734
3742
3750
3758
3766
3774

3719
3727
3735
3743
3751
3759
3767
3775

7600
7610
7620
7630
7640
7650
7660
7670

3968
3976
3984
3992
4000
4008
4016
4024

3969
3977
3985
3993
4001
4009
4017
4025

3970
3978
3986
3994
4002
4010
4018
4026

3971
3979
3987
3995
4003
4011
4019
4027

3972
3980
3988
3996
4004
4012
4020
4028

3973
3g8r
3989
3997
4005
4013
4021
4029

3974
3982
3990
3998
4006
4014
4022
4030

3975
3983
3991
3999
4007
4015
4023
4031

3782
3790
3798
3806
3814
3822
3830
3838

3783
3791
3799
3807
3815
3823
3831
3839

7700
7710
7720
7730
7740
7750
7760
7770

4032
4040
4048
4056
4064
4072
4080
4088

4033
4041
4049
4057
4065
4073
4081
4089

4034
4042
4050
4058
4066
4074
4082
4090

4035
4043
4051
4059
4067
4075
4083
4091

4036
4044
4052
4060
4068
4076
4084
4092

4037
4045
4053
4061
4069
4077
4085
4093

4038
4046
4054
4062
4070
4078
4086
4094

4039
4047
4055
4063
4071
4079
4087
4095

0

1

2

3

4

5

6

7

7000
7010
7020
7030
7040
7050
7060
7070

3584
3592
3600
3608
3616
3624
3632
3640

3585
3593
3601
3609
3617
3625
3633
3641

3586
3594
3602
3610
3618
3626
3634
3642

3587
3595
3603
3611
3619
3627
3635
3643

3588
3596
3604
3612
3620
3628
3636
3644

3589
3597
3605
3613
3621
3629
3637
3645

3590
3598
3606
3614
3622
3630
3638
3646

3591
3599
3607
3615
3623
3631
3639
3647

7100
7110
7120
7130
7140
7150
7160
7170

36483649
3656 3657
3664 3665
3672 3673
3680 3681
3688 3689
3696 ~697
3704 3705

3650
3658
3666
3674
3682
3690
3698
3706

3651
3659
3667
3675
3683
3691
3699
3707

3652
3660
3668
3676
3684
3692
3700
3708

3653
3661
3669
3677
3685
3693
3701
3709

3654
3662
3670
3678
3686
3694
3702
3710

7200
7210
7220
7230
7240
7250
7260
7270

3712
3720
3728
3736
3744
3752
3760
3768

3713
3721
3729
3737
3745
3753
3761
3769

3714
3722
3730
3738
3746
3754
3762
3770

3715
3723
3731
3739
3747
3755
3763
3771

3716 3717
3724 3725
3732 3733
3740 3741
°3748 3749
3756 3757
31643765
3772 3773

7300
7310
7320
7330
7340
7350
7360
7370

3776
3784
3792
3800
3808
3816
3824
3832

3777
3785
3793
3801
3809
3817
3825
3833

3778
3786
3794
3802
3810
3818
3826
3834

3779
3787
3795
3803
3811
3819
3827
3835

3780
3788
3796
3804
3812
3820
3828
3836

3781
3789
3797
3805
3813
3821
3829
3837

----

."
;:;0

o(j)

;:;0

»
~
~

Z

(j)

»
z
o

()

oo

Z

(j)

~
en

w

N

TABLE

2.

OCTAL

DEC.

OCTAL

.000
.001
.002
.003
.004
.005
.006
.007
.010
.011
.012
.013
.014
.015
.016
.017
.020
.021
.022
.023
.024
.025
.026
.027
.030
.031
.032
.033
.034
.035
.036

.000000
.001953
.003906
.005859
.007812
.009765
.011718
.013671
.015625
.017578
.019531
.021484
.023437
.025390
.027343
.029296
.031250
.033203
.035156
.037109
.039062
.041015
.042968
.044921
.046875
.048828
.050781
.052734
.054687
.056640
.058593

.100
.101
.102
.103
.104
.105
.106
.107
.110
.111
.112
.113
.114
.115
.116
.117
.120
.121
.122
.123
.124
.125
.126
.127
.130
.131
.132
.133
'.134
.135
.136

)

W

OCTAL-DECIMAL FRACTION CONVERSION

DEC.

OCTAL

.125000
.126953
.128906
.130859
.132812
.134765
.136718
.138671
.140625
.142578
.144531
.146484
.148437
.150390
.152343
.154296
.156250
.158203
.160156
.162109
.164062
.166015
.167968
.169921
.171875
.173828
.175781
.177734
.179687
.181640
.183593

.200
.201
.202
.203
.204
.205
.206
.207
.210
.211
~ 212
.213 '
.214
.215
.216
.217
.220
.221
.222
.223
.224
.225
.226
.227
.230
.231
.232
.233
.234
.235

DEC.

~

OCTAL

DEC.
I

~236

.250000
.251953
.253906
.255859
.257812
.259765
.261718
.263671
.265625
.267578
.269531
.271484
.273437
.275390
.277343
.279296
.281250
.283203
.285156
.287109
.289062
.291015
.292968
.294921
.296875
.298828
.300781
.302734
.304687
.306640
.308593

.300
.301
.302
.303
.304
.305
.306,
.307
.310
.311
.312
.313
.314
.315
.316
.317
.320
.321
.322
.323
.324
.325
.326
.327
.330
.331
.332
.333
.334'
.335
.336

.375000
.376953
.378906
.380859
.382812
.384765
.386718
.388671
.390625
.392578
.394531
.396484
.398437
.400390
.402343
.404296
.406250
.408203
.410156
.412109
.414062
.416015
.417968
.419921
.421875
.423828
.425781
.427734
.429687
.431640
..!433593

o
(j)

=i

»
.-()
o
s=
"'tJ

C

-I
I

m

:;:0
"'tJ
:;:0

I

o(j)

::::c

»
I
I

~
~

Z

(j)
I

.037
.040
.041
.042
.043
.044
.045
.046
.047
.050
.051
.052
.053
.054
.055
.056
.057
.060
.061
.062
.063
.064
.065
.066
.067
.070
.071
.072
.073
.074
.075
.076
.077

.060546
.062500
.064453
.066406
.068359
.070312
.072265
.074218
.076171
.078125
.080078
.082031
.083984
.085937
.087890
.089843
.091796
.093750
.0.95703
.097656
.099609
.101562
.103515
.105468
.107421
.109375
.111328
.113281
.115234
.117187
.119140
.121093
.123046

.137
.140
.141
.142
.143
.144
.145
.146
.147
.150
.151
.152
.153
.154
.155
.156
.157,
.160
.161
.162
.163
.164
.165
.166
.167
.170
.171
.172
.173
.174
.175
.176
.177

.185546
.187500
.189453
.191406
.193359
.195312
.197265
.199218
.201171
.203125
.205078
.207031
.208984
.210937
.212890
.214843
.216796
.218750
.220703
.222656
.224609
.226562
.228515
.230468
.232421
.234375
.236328
.238281
.240234
.242187
:244140
.246093
.248046

~237

.240
.241
.242
.243
.244
.245
.246
.247
.250
.251
.252
.253
.254
.255
.256
.257
.260
.261
.262
.263
.264
.265
.266
.267
.270
.271
.272
.273
.274
.275
.276
.277

.310546
.312500
.314453
.316406
.318359
.320312
.322265
.32421"8
.326171
.328125
.330078
.332031
.333984
.335937
.337890
.339843
.341796
.343750
.345703
.347656
.349609
.351562
.353515
.355468
.357421
.359375
.361328
.363281
.365234
.367187
.369140
.371093
.373046

.337
.340
.341
.342
.343
.344
.345
.346
.347
.350
.351
.352
.353
.354
.355
.356
.357
.360
.361
.362
.363
.364
.365
.366
.367
.370
.371
.372
.373
.314
.375
.376
.377

.435546
.437500
.439453
.441406
.443359
.445312
.447265
.449218
.451171
.453125
.455078
.457031
.458984
.460937
.462890
.464843
.466796
.468750
.470703
.472656
.474609
.476562
.478515
.480468
.482421
.484375
.486328
.488281
.490234
.492187
.494140
.496093
.498046

."
;;0

o(j)

:;;c

»
~
~

Z

(j)

»
z
o

()

o

2

z

(j)

N
---------

W
~

t-.)

TABLE

2.'

OCTAL-DECIMAL FRACTION CONVERSION

w

(Continued)

co

OCTAL

DEC,

OCTAL

DEC.

OCTAL

DEC.

OCTAL

DEC,

,000000
.000001
.000002
.000003
,000004
.000005
.000006
,000007
.000010
.000011
.000012
,000013
.000014
.000015
,000016
,000017
,000020
.000021
.000022
,000023
.000024
,000025
,000026
.000027
.000030
.000031
.000032
.000033
.000034
.000035
.000036

.000000
.000003
.000007
.000011
.000015
,000019
,000022
,000026
.000030
.000034
,000038
,000041
.000045
.000049
,000053
.000057
.000061
,000064
.000068
,000072
.000076
.000080
,000083
.000087
.000091
.000095
.000099
.000102
.000106
.000110
.000114

,000100
.000101
,000102
,000103
.000104
.000105
,000106
.000107
,000110
.000111
.000112
,000113
,000114
,000115
.000116
.000117
,000120
.000121
,000122
.000123
.000124
.000125
.000126
.000127
,000130
.000131
.000132
.000133
.000134
.000135

.000244
,000247
,000251
.000255
.000259
.000263
,000267
,000270
.000274
.000278
.000282
.000286
.000289
.000293
.000297
,000301
.000305
,000308
,000312
.000316
.000320
.000324
.000328
.000331
.000335
.000339
.000343
.000347
.000350
.000354
.000358

,000200
,000201
,000202
.000203
,000204
.000205
.000206
.000207
.000210
.000211
.000212
.000213
.000214
,000215
,000216
,000217
,000220
,000221
,000222
.000223
,000224
.000225
.000226
.000227
,000230
,000231
.000232
.000233
,000234
.000235

.000488
.000492
,000495
.000499
.000503
,000507
.000511
.000514
.000518
.000522
.000526
.000530
.000534
.000537
.000541
.000545
.000549
,000553
.000556
.000560
.000564
.000568
.000572
.000576
.000579
.000583
.000587
.000591
.000595
.000598
.000602

.000300
,000301
.000302
.000303
,000304
.000305
.000306
.000307
.000310
.000311
.000312
.000313
.000314
.000315
.000316
.000317
.000320
.000321
,000322
,000323
.000324
,000325
.000326
.000327
.000330
.000331
.000332
.000333
.000334
.000335
.000336

.000732
,000736
,000740
,000743
.000747
.000751
.000755
.000759
,000762
.000766
.000770
.000774
.000778
.000782
.000785
.000789
.000793
.000797
,000801
.000805
.000808
.000812
.000816
.000820
,000823
.000827
.000831
.000835
.000839
.000843
.000846

~000136

~_000236

o

(fi
=i

»
r-

I

()

o

3:'.':

."

C
m

-I

:::0
."

:::0

o(j)

:::0

»
3:'.':
3:'.':

z

(j)

.000037
.000040
.000041
.000042
.000043
.000044
.000045
.000046
,000047
,000050
,000051
,000052
.000053
,000054
,000055
.000056
.000057
.000060
.000061
.000062
.000063
.000064
.000065
.000066
.000067
.000070
.000071
.000072
.000073
.000074
.000075
.000076
.000077

·.oooluf

~·000137

.000122
.000125
.000129
.000133
.000137
.000141
.000144
.000148
.000152
,000156
,000160
.000164
.000167
,000171
.000175
.000179
.000183
.000186
.000190
.000194
.000198
.000202
.000205
.000209
.000213
.000217
.000221
.000225
.000228
.000232
.000236
.000240

.000140
.000141
.000142
.000143
.000144
.000145
.000146
.000147
.000150
.000151
,000152
,000153
.000154
.000155
.000156
.000157
.000160
.000161
.000162
.000163
.000164
.000165
.000166
.000167
.000170
.000171
.000172
.000173
.000174
.000175
.000176
,000177

.000362
.000366
.000370
.000373
.000377
.000381
.000385
,000389
.000392
.000396
.000400
.000404
,000408
.000411
.000415
.000419
.000423
.000427
.000431
.000434
.000438
.000442
.000446
.000450
.000453
.000457
.000461
.000465
.000469
.000473
.000476
.000480
,000484

.0002:37"
.000240
.000241
.000242
.000243
.000244
.000245
,000246
.. 000247
,000250
.000251
.000252
.000253
.000254
.000255
.000256
.000257
.000260
.000261
.000262
.000263
.000264
.000265
.000266
.000267
.000270
.• 000271
.000272
.000273
.000274
.000275
.000276
.000277

.000606
.000610
.000614
.000617
.000621
.000625
.000629
:000633
.000637
.000640
.000644
,000648
.000652
.000656
.000659
.000663
.000667
.000671
.000675
.000679
.000682
.000686
.000690
.000694
.000698
.000701
.000705
.000709
.000713
.000717
.000720
.000724
,000728

.000337
.000340
.000341
.000342
.000343
.000344
.000345
.000346
.000347
.000350
.000351
.000352
.000353
.000354
.000355
.000356
.000357
.000360
.000361
.000362
.000363
.000364
.000365
.000366
.000367
.000370
.000371
.000372
.000373
.000374
.000375
.000376
,000377

.000850
.000854
.000858
.000862
.000865
.000869
,000873
,000877
,000881
,000885
,000888
,000892
,000896
,000900
.000904
.000907
.000911
.000915
.000919
.000923
.000926
.000930
.000934
.000938
.000942
.000946
.000949
.000953
.000957
.000961
.000965
.000968
.000972

"'0
;:;0

o(j)
;:;0

»
~
~

Z

(j)

»
z
o

()

oo

z

(j)

N

W
-0

N

TABLE

2.

OCTAL-DECIMAL FRACTION CONVERSION

~

(Continued)

o

OCTAL

DEC.

OCTAL

DEC.

OCTAL

DEC.

OCTAL

DEC.

.000400
.000401
,000402
.000403
,000404
.000405
,000406
,000407
.000410
.000411
,000412
,000413
,000414
.000415
.000416
,000417
,000420
.000421
,000422

.OQ0976
.000980
,000984
,000988
,000991
,000995
,000999
,001003
,001007
,001010
,001014
,001018
,001022
,001026
,001029
.001033
,001037
,001041
,001045
,001049
,001052
,001056
,001060
,001064
.001068
.001071
.001075
.001Q79
.001083
.001087
,001091

.000500
,000501
,000502
,000503
,000504
.000505
,000506
,000507
,000510
,000511
,000512
,000513
,000514
,000515
,000516
,000517
,000520
,000521
,000522
,000523
,000524
,000525
,000526
,000527
.000530
,000531
,000532
.000533
.000534
,000535
.000536

.001220
,001224
,001228
,001232
.001235
.001239
,001243
,001247
,001251
,001255
.001258
,001262
,001266
,001270
,001274
,001277
,001281
.001285
,001289
,001293
,001296
,001300
,001304
,001308
,001312
,001316
.001319
,001323
,001327
.001331
.001335

.000600
.000601
,000602
,000603
,000604
.000605
,000606
,000607
,000610
,000611
,000612
,000613
,000614
,000615
,000616
.000617
,000620
,000621
,000622
,000623
,000624
.000625
,000626
,000627
.000630
,000631
.000632
.000633
.000634
,000635
,.000636

.001464
.001468
.001472
,001476
.001480
,001483
,001487
,001491
,001495
,001499
,001502
,001506
,001510
,001514
,001518
,001522
,001525
,001529
,001533
.001537
,001541
,001544
,001548
,0:>1552
,001556
.001560
,001564
.001567
.001571
.001575
,OQ157<}

.000700
.000701
,000702
.000703
.000704
,000705
,000706
,000707

.001708
.001712
.001716
.001720
.001724
,001728
,001731
,001735
.001739
,OOi743
.001747
,001750
,001754
,001758
,001762
,001766
,001770
,001773
,001777
.001781
.001785
.001789
,001792
,001796
,001800
,001804
,001808
.001811
,001815
.001819
.001823

~000423

,000424
.000425
,000426
,00,0427
,000430
,000431
,000432
.000433
,000434
.000435
.000436

,OOO~10

,000711
.000712
.000713
.000714
,000715
.000716
,000717
,000720
,000721
,000722
.000723
,000724
.000725
,000726
,000727
,000730
.000731
.000732
,000733
,000734
.000735'
.000736

o
(i)
=i

»
.-()
o
~

."

C

-I

m
;::c
."

;::c

o(j)
»
;::c

~
~

Z

ql

.000437
.000440
.000441
.000442
.000443
.000444;
.000445
.000446
.000447
.000450
.000451
.000452
.000453
.000454
.000455
.000456
.000457
.000460
.000461
.000462
.000463
.000464
.000465
.000466
.000467
.000470
.000471
.000472
.000473
.000474
.000475
.00Q476
.000477

.001094
.001098
.001102
.001106
.001110
.001113
.001117
.001121
.001125
.001129
.001132
.001136
.001140
.001144
.001148
.001152
.001155
.001159
.001163
.001167
.001171
.001174
.001178
.001182
.001186
.001190
.001194
.001197
.001201
.001205
.001209
.001213
.001216

.000537
.000540
.000541
.000542
.000543
.000544
.000545
.000546
.000547
.000550
.000551
.000552
.000553
.000554
.000555
.000556
.000557
.000560
.000561
.000562
.000563
.000564
.000565
.000566
.000567
.000570
.000571
.000572
.000573
.000574
.000575
.000576
.000577

.001338
.001342
.001346
.001350
.001354
.001358
.001361
.001365
.001369
.001373
.001377
.001380
.001384
.001388
.001392
.001396
.001399
.001403
.001407
.001411
•.001415
.001419
.001422
.001426
.001430
.001434
.001438
.001441
.001445
.001449
.001453
.001457
.001461

.000637
.000640
.000641
.000642
.000643
.000644
.000645
.0.00646
.000647
.000650
.000651
.000652
.000653
.000654
.000655
.000656
.000657
.000660
.000661
.000662
.000663
.000664
.000665
.000666
.000667
.000670
.000671
.000672
.000673
.000674
.000675
.000676
.000677

.001583
.001586
.001590
.001594
.001598
.001602
.001605
.001609
.001613
.001617
.001621
.001625
.001628
.001632
.001636
.001640
.001644
.001647
.001651
.001655
.001659
.001663
.001667
.001670
.001674
.001678
.001682
.001686
.001689
.001693
.001697
.001701
.001705

.000737
.000740
.000741
.000742
.000743
.000744
.000745
.000746
.000747
.000750
.000751
.000752
.000753
.000754
.000755
.000756
.000757
.000760
.000761
.000762
.000763
.000764
.000765
.000766
.000767
.000770
.0 0 is a floating point machine),
p = digits to the left of the radix point (p = 0 means all numbers have absolute value less than 1; such numbers are called
"digital" numbers).
b One instruction per word unless noted.
C For computers with circulating storage only the average access time is given.

a

0

(fi
=i

>
r-

()

0

~

""C

C
-t
m
;;:c.
""C

;;:c

0

(j)
;;:c

»
~
~

Z

(j)

PROGRAMMING AND CODING

2-65

Instruction Description. This machine has three index registers
and has only one single-address instruction stored per word. There are two
types of instructions, A and B. Type A instructions contain a fifteen-bit
address portion and a fifteen-bit "decrement" portion (the latter for
index use in certain cases) as well as a three-bit operation portion and a
three-bit "tag." Type B instructions contain an eleven-bit operation
portion, a three-bit tag, and a fifteen-bit address portion.
Instructions are either indexable or nonindexable. Presence of one or
more of the three tag bits automatically adds in the contents of the corresponding index registers into the instruction address. In certain type B
instructions this process will change the operation code as well.
There are two arithmetic elements, an accumulator (AC) of 37 bits plus
sign and a multiplier-quotient register (MQ) of 35 bits plus sign. The
two extra AC bits are for special overflow information. Instruction
sequencing is of the standard single-address type. The IBM 704 has a
special operational mode, the "Trapping Mode," into which it may be
transferred by a special instruction. This allows machine tracing of
programs by observing the flow of control automatically without detailed
interpretation.
Type A instructions are written in the form:

TNX

02301

B

03449

where the three-letter code indicates the operation, the first five-digit
decimal code the decrement to be used with the index registers, the next
letter, one or more of the three index registers (A, B, or C), and the last
five-digit decimal code the address.
Type B instructions are written usually as
SLW

C 2644

where the decrement field is now omitted. In some cases, type B instructions do not have tag locations.
The following list of instructions for the IBM 704 is taken from a "Manual of Operation" (Ref. 54). Notation is standard, C(Y) indicating
contents of location Y, and subscripts corresponding to specific digits.
S, P, Q are the sign and two overflow digits of AC, respectively.
All instructions are indexable except those with an X in the operation
code, designating an index register. The four digits alongside each
mnemonic operation indicate the octal operation equivalent. In cases
where the operation code extends into the address, there may be more
than four digits. The first integer gives the number of cycles (each of
12 microseconds) for performance of the instruction. The detailed handling of overflow and floating point zero is not included in this account, nor
is a complete account of the problems of normalization.

2-66

DIGITAL COMPUTER PROGRAMMING

Fixed Point Arithmetic Operations.
Clear and Add. 2 CLA Y +0500. The C (Y) replace the
C(AC)S,I-35. Positions Q and P of the AC are cleared. The C(Y) are
unchanged.
Add. 2 ADD Y +0400. This instruction algebraically adds
the C(Y) to the C(AC) and replaces the C(AC) with this sum. The C(Y)
are unchanged. AC overflow is possible.
Add Magnitude. 2 ADM Y +0401. This instruction algebraically adds the magnitude of the C (Y) to the C (AC) and replaces the
C (AC) with this sum. The C (Y) are unchanged. AC overflow is possible.
Clear and Subtract. 2 CLS Y +0502. The negative of the
C (Y) replaces the C (AC)S,I-35. Positions Q and P of the AC are cleared.
The C (Y) are unchanged.
Subtract. 2 SUB Y +0402. This instruction algebraically
subtracts the C(Y) from the C(AC) and replaces the C(AC) with this
difference. The C (Y) are unchanged. AC overflow is possible.
Subtract Magnitude. 2 SBM Y - 0400. This instruction
algebraically subtracts the magnitude of the C(Y) from the C(AC) and
replaces the C (AC) with this difference. The C (Y) are unchanged. AC
overflow is possible.
Multiply. 20 MPY Y +0200. This instruction multiplies the
C(Y) by the C(MQ). The 35 most significant bits of the 70-bit product
replace the C (ACh-35 and the 35 least significant bits replace the
C (MQ) 1-35. The Q and P bits are cleared. The sign of the AC is the
algebraic sign of the product. The sign of the MQ agrees with the sign
of the AC.
Multiply and Round. 20 MPR Y -0200. This instruction
executes a multiply followed by a round. (The latter operation is defined
below.) AC overflow is not possible.
Round. 2 RND +0760···010. If position 1 of the MQ contains a 1, the magnitude of the C(AC) is increased by a 1 in position 35.
If position 1 of the MQ contains a zero, the C(AC) remain unchanged.
In either case, the C (MQ) are unchanged. AC overflow is possible.
Divide or Halt. 20 DVH Y +0220. This instruction treats
the C(AC)S,Q,P,I-35 and the C(MQ)I-35 as a 72-bit dividend plus sign, and
the C(Y) as the divisor. If IC(Y)I > IC(AC)I, division takes place, a
35-bit quotient plus sign replaces the C(MQ) and the remainder replaces
the C(AC)S,I_35. The sign of the remainder always agrees with the sign
of the dividend.
If IC(Y)I ~ IC(AC)I, division does not take place and the calculator
stops with the divide-check indicator and light on. Consequently, if po-

PROGRAMMING AND CODING

2-67

sition Q or P of the AC contains a 1, division does not take place since
IC(Y)I < IC(AC)I. The dividend remains unchanged in the AC.
Divide or Proceed. 20 DVP Y +0221. This instruction executes a division (as defined above) if IC(Y)I > IC(AC)I. If IC(Y)I ~
IC (AC) I, division does not take place, the divide-check indicator and light
are turned on, and the calculator proceeds to the next instruction. The
dividend remains unchanged in the AC.
Load MQ. 2 LDQ Y +0560. The C(Y) replace the C(MQ).
The C (Y) are unchanged.
Store MQ. 2 STQ Y -0600. The C(MQ) replace the C(Y).
The C (MQ) are unchanged.
Store Left-Half MQ. 2 SLQ Y -0620. The C(MQ)S,l-17
replace the C(Y)S,l-17. The C(Y)18-35 and the C(MQ) are unchanged.
Store. 2 STO Y +0601. The
C(AC)S,l-35
replace
the
C(Y)S,l-35. The C(AC) are unchanged.
Store Zero. 2 STZ Y +0600. The C (Y) are replaced by
zeros and the sign of Y is made plus.
.
Store Prefix. 2 STP Y +0630. The C(AC)P,l,2 replace the
C(Y)S,l,2' The C(Y)3-35 and the C(AC) are unchanged.
Store Decrement. 2 STD Y +0622. The C(AC)3-17 replace
the C(Yh-17. The C(Y)S,l,2,18-35 and the C(AC) are unchanged.
Store Address. 2 STA Y +0621. The C(AChl-35 replace the
C(Yhl-35. The C(Y)S,l-20 and the C(AC) are unchanged.
Clear Magnitude. 2 CLM +0760···000. The C(AC)Q,P,l-35
are cleared. The AC sign is unchanged.
Change Sign. 2 CHS +0760··· OO~. If the AC sign bit is
negative, it is made positive, and vice versa.
Set Sign Plus. 2 SSP +0760··· 003. A positive sign replaces
the C(AC)s.
Set Sign Minus. 2 SSM - 0760 ... 003. A negative sign
replaces the C (AC)s.
Logical Operations.
Clear and Add Logical Word. 2 CAL Y - 0500. This instruction replaces the C(ACh,l-35 with the C(Y). Thus the sign of the
C (Y) appears in position P of the AC, and the Sand Q bits are cleared.
The C (Y) are unchanged.
Add and Carry Logical Word. 2 ACL Y +0361. This instruction adds the C(Y)S,l-35 to the C(AC)P,l-35, respectively, and replaces the C(AC)P,1~35 with this sum (position S of register Y is treated as
a numerical bit, and the sign of the AC is ignored). A carry out of the P

2-68

DIGITAL COMPUTER PROGRAMMING

bit adds into position 35 of the AC, but does not add into Q. Q is not
changed. The C (Y) are unchanged. No overflow is possible.
Store Logical Word. 2 SLW Y +0602. The C(AC)P,1-35
replace the C(Y)S,1-35. The C(AC) are unchanged.
AND to Acculllulator. 3 ANA Y -0320. Each bit of the
C(AC)P,1-35 is matched with the corresponding bit of the C(Y)S,1-35, the
C(AC)p being matched with the C(Y)s. When the corresponding bit of
both the AC and location Y is a one, a one replaces the contents of that
position in the AC. When the corresponding bit of either the AC or
location Y is a zero, a zero replaces the contents of that position in the AC.
The C(AC)s,Q are cleared. The C(Y) are unchanged.
AND to Storage. 4 ANS Y +0320. Each bit of the
C(AC)P,I-35 is matched with the corresponding bit of the C(Y)S,I-35,
the C(AC)p being matched with the C(Y)s. When the corresponding bit
of both the AC and location Y is a one, a one replaces the contents of that
position in location Y. When the corresponding bit of either the AC or
location Y is a zero, a zero replaces the contents of that position in location
Y. The C(AC) are unchanged.
OR to Acculllulator. 2 ORA Y -0501. Each bit of the
C(AC)P,I-35 is matched with the corresponding bit of the C(Y)S,I-35, the
C (AC)p being matched with the C (Y)s. When the corresponding bit of
either the AC or location Y is a one, a one replaces the contents of that
position in the AC. When the corresponding bit of both the AC and
location Y is a zero, a zero replaces the contents of that position in the AC.
The C(Y) and the C(AC)s,Q are unchanged.
OR to Storage. 2 ORS Y -0602. Each bit of the C(AC)P,I-35
is matched with the corresponding bit of the C(Y)S,1-35, the C(AC)P being
matched with the C (Y)s. When the corresponding bit of either the AC or
location Y is a one, a one replaces the contents of that position in location
Y. When the corresponding bit of both the AC and location Y is a zero,
a zero replaces the contents of that position in location Y. The C(AC)
are unchanged.
COlllplelllent Magnitude. 2 COM +0760··· 006. All ones
are replaced by zeros and all zeros are replaced by ones in the C(AC)Q,P,I-35.
The AC sign is unchanged.
Shift Operations. Shift instructions are used to move the bits in a
word to the right or left of their original positions in the ACor MQ register
or both. With the exception of the RQL instruction, zeros are automatically introduced in the vacated positions of a register. Thus, a shift larger
than the bit capacities of the registers involved in the shifting will have no
significance after the capacities of the registers are exceeded. When an
instruction is interpreted as a shift instruction, the extent of the shift is

PROGRAMMING AND CODING

2-69

determined by the least significant eight bits of the address of the instruction. Since the maximum possible shift is 255, a number larger than
255 in the address part of a shift instruction is interpreted modulo 256.
Acculllulator Lcft Shift. 2-1 ALS Y +0767. The C(AC)Q,P,1-35
are shifted left Y modulo 256 places. If a nonzero bit is shifted into or
through position P, the AC overflow indicator and light are turned on.
Bits shifted past position Q are lost. Positions made vacant are filled in
with zeros.
Acculllulator
Right
Shift. 2-1 ARS Y +0771.
The
C(AC)Q,P,1_35 are shifted right Y modulo 256 places. Bits shifted past
position 35 of the AC are lost. Positions made vacant are filled in with
zeros.
Long Lcft Shift. 2-1 LLS Y +0763. The C (AC)Q,P,1-35 and
the C(MQh-35 are shifted left Y modulo 256 places. Bits enter position
35 of the AC from position 1 of the MQ. If a nonzero bit is shifted into or
through position P, the AC overflow indicator and light are turned on.
Bits shifted past position Q are lost. Positions made vacant are filled in
with zeros. The sign of the AC is replaced by the same sign as that of
the MQ.
Long Right Shift. 2-1 LRS Y +0765. The C(AC)Q,P,1-35
and the C (MQh-35 are shifted right Y modulo 256 places. Bits enter
position 1 of the MQ from position 35 of the AC. Bits shifted past position
35 of the MQ are lost. Positions made vacant are filled in with zeros.
The sign of the MQ is replaced by the same sign as that of the AC.
Logical Lcft. 2-1 LGL Y -0763. The C(AC)Q,P,1-35 and the
C(MQ)S,1-35 are shifted left Y modulo 256 places. Bits enter position S
of the MQ from position 1 of the MQ, and enter position 35 of the AC from
position S of the MQ. If a nonzero bit is shifted into or through position P
of the AC, the AC overflow indicator and light are turned on. Bits shifted
past position Q are lost. Positions made vacant are filled in with zeros.
The sign of the AC is unchanged.
Rotatc MQ Lcft. 2-1 RQL Y -0773. The C(MQ)S,1-35 are
rotated left Y modulo 256 places. The bits rotate from position 1 to
position S of the MQ, and from position S to position 35 of the MQ.
Floating Point Arithlllctic Opcrations.
Floating ADD. 7-11 FAD Y +0300. The C(Y) are algebraically added to the C(AC), and this sum replaces the C(AC) and the
C(MQ). The C(Y) are unchanged. The fractional part of the product is
normalized to between Y2 and 1 in absolute value.
During execution of a floating point addition, the AC or MQ overflow
indicator and the corresponding light on the operator's cons0le are turned

2-70

DIGITAL COMPUTER PROGRAMMING

on by too large a characteristic or too small a characteristic in the AC or
the MQ, respectively.
Unnormalized Floating Add. 6-11 UFA Y -0300. Same
as floating add except the resultis not normalized.
Floating Subtract. 7-11 FSB Y +0302. Same as floating
add except that the negative of the C(Y) is added.
Unnormalized Floating Subtract. 6-11 UFS Y -0302.
Same as floating subtract except that the result is unnormalized.
Floating Multiply. 17 FMP Y +0260. The C(Y) are multiplied by the C(MQ). The most significant part of the product appears in
the AC and the least significant part appears in the MQ.
The product of two floating point numbers is in normalized form if
the multiplier and multiplicand are in this form. If either the multiplier or
multiplicand is not in normalized form, the product is in normalized form
only if a shift of one place is sufficient to normalize· it.
During execution of floating point multiplication, too large or too small
a characteristic in the AC or the MQ, respectively, turns on the AC or the
MQ overflow indicator and the corresponding light on the operator's
console.
Unnormalized
Floating
Multiply. 17 UFM Y -0260.
This operation is the same as floating multiply except that no shifting is
included.
Floating Divide or Halt. 18-IV FDH Y +0240. The C (AC)
are divided by the C(Y), the quotient appears in the MQ and the remainder
appears in the AC. The MQ is cleared before actual division takes place.
If positions Q or P of the AC are not zero, division may take place and
either or both of the AC and/or MQ overflow indicators may be turned on.
When division by zero is attempted, the divide-check indicator and light
are turned on and the calculator stops, and the dividend is left unchanged
in the AC. The quotient is in normalized form if both divisor and dividend
are in that form. If divisor or dividend or both are not in normalized form,
the quotient is in normalized form if

2IC(Y)9-351

>

IC(AC)9-351 ~ !IC(Y)9-351

During execution of a floating point division, t:he ,AC or MQ overflow
indicator and the corresponding light on the operator's console are turned
on for too large or too small a characteristic in the AC or MQ ,respectively.
Floating Divide or Proceed. 18-IV· FDP Y +0241. This
operation is the same as floating divide or halt except for division by zero.
When division by zero is attempted, the divide-check indicator and light
are turned on, division does not take place and the calculator proceeds to
the next instruction. If the magnitude of the fraction in the AC is greater

PROGRAMMING AND CODING

2-71

than (or equal to) twice the magnitude of the fraction in the SR, the dividecheck indicator and light are turned on, division does not take place and
the calculator proceeds to the next instruction. The dividend in the AC is
unchanged.
Control Operations.
No Operation. 2 NOP +0761. The calculator takes the next
instruction in sequence.
Halt and Proceed. 2 HPR +0420. This instruction causes the
calculator to stop. If the start key on the operator's console is depressed,
the calculator proceeds to the next instruction in sequence.
Enter Trapping Mode. 2 ETM +0760···007. This instruction turns on the trapping indicator and also the trap light on the operator's
console. The calculator operates in the trapping mode until a leave trapping mode operation is executed or until either the clear or reset key is
pressed on the console.
Leave Trapping Mode. 2 LTM -0760···007. This instruction turns off the trapping indicator and the trap light on the operator's
console. The calculator will not operate in the trapping mode until another
enter trapping mode operation is executed.
Note. When the calculator is operating in the trapping mode, the
location of every transfer instruction (except trap transfer instructions)
replaces the address part of location 0000, whether or not the conditions for
transfer of control are met. If the conditions are met, the calculator takes
the next instruction from location 0001 and proceeds from that point. The
location of each transfer instruction replaces the address part of location
0000.
Halt and Transfer. 2 HTR Y +0000. This instruction stops
the calculator. When the start key on the operator's console is depressed,
the calculator starts again, taking the next instruction from location Y
and proceeding from there.
Transfer. 2 TRA Y +0020. This instruction causes the calculator to take its next instruction from location Y, and to proceed from
there.
Transfer on Zero. 2 TZE Y +0100. If the C(AC)Q,P,1-35
are zero, the calculator takes its next instruction from location Y and
proceeds from there. If they are not zero, the calculator proceeds to the
next instruction in sequence.
Transfer on No Zero. 2 TNZ Y -0100. If the C(AC)Q,P,1-35
are not zero, the calculator takes its next instruction from location Y and
proceeds from there. If they are zero, the calculator proceeds to the next
instruction in sequence.

2-72

DIGITAL COMPUTER PROGRAMMING

Transfer on Plus. 2 TPL Y +0120. If the sign bit of the AC
is positive, the calculator takes the next instruction from location Y and
proceeds from there. If the sign bit of the AC is negative, the calculator
proceeds to the next instruction in sequence.
Transfer on Minus. 2 TMI Y -0120. If the sign bit of the
AC is negative, the calculator takes the next instruction from location Y
and proceeds from there. If the sign bit of the AC is positive, the calculator
proceeds to the next instruction in sequence.
Transfer on Overflow. 2 TOV Y +0140. If the AC overflow
indicator and light are on as the result of a previous operation, the indicator
and light are turned off and the calculator takes the next instruction from
location Y and proceeds from there. If the indicator and light are off,
the calculator proceeds to the next instruction in sequence.
Transfer on No Overflow. 2 TNO Y -0140. If the AC overflow indicator and light are off, the calculator takes the next instruction
from location Y and proceeds from there. If the indicator and light are on,
the calculator proceeds to the next instruction in sequence after turning
off the indicator and light.
Transfer on MQ Plus. 2 TQP Y +0162. If the sign bit of the
MQ is positive, the calculator takes the next instruction from location Y
and proceeds from there. If the sign bit of the MQ is negative, the calculator proceeds to the next instruction in sequence.
Transfer on MQ Overflow. 2 TQO Y +0161. If the MQ
overflow indicator and light have been turned on by an overflow or underflow in the MQ characteristic during a previous floating point operation,
the indicator and light are turned off, the calculator takes the next instruction from location Y and proceeds from there. If the indicator and light
are not on, the calculator proceeds to the next instruction in sequence.
Transfer on Low MQ. 2 TLQ Y +0040. If the C(MQ) are
algebraically less than the C(AC), the calculator takes the next instruction
from location Y and proceeds from there. If the C (MQ) are algebraically
greater than or equal to the C (AC), the calculator proceeds to the next
instruction in sequence.
Transfer and Set Index. 2 TSX Y +0074. Not indexable.
This instruction places the 2's complement of the location of this instruction
in the specified index register. The calculator takes the next instruction
from location Y and proceeds from there.
The 2's complement is used in this instruction because indexing is a
subtractive process on the IBM 704 and subtracting the 2's complement of
a number is equivalent to adding the number.
Transfer with Index InereIllented. 2 TXI Y +1000. Not
indexable. Contains a decrement part. This instruction adds the decre-

PROGRAMMING AND CODING

2-73

ment to the number in the specified index register and replaces the number in the index register with this sum. The calculator takes the next
instruction from location Y and proceeds from there.
Transfer on Index High. 2 TXH Y +3000. Not indexable.
Contains a decrement part. If the number in the specified index register is
greater than the decrement, the calculator takes the next instruction from
location Y and proceeds from there.
If the number in the specified index register is less than or equal to the
decrement, the calculator proceeds to the next instruction in sequence.
Transfer on Index Low or Equal. 2 TXL Y - 3000. Not
indexable. Contains a decrement part. If the number in the specified
index register is less than or equal to the decrement, the calculator takes
the next instruction from location Y and proceeds from there.
If the number in the specified index register is greater than the decrement,
the calculator proceeds to the next instruction in sequence.
Transfer on Index. 2 TIX Y +2000. Not indexable. Contains a decrement part. If the number in the specified index register is
greater than the decrement, the number in the index register is reduced by
the amount of the decrement, and the calculator takes the next instruction
from location Y and proceeds from there.
If the number in the specified index register is equal to or less than the
decrement, the number in the index register is unchanged, and the calcula tor proceeds to the next instruction in sequence.
Transfer on No' Index. 2 TNX Y -2000. Not indexable.
Contains a decrement part. If the number in the specified index register is
equal to or less than the decrement, the number in the index register is
unchanged, the calculator takes the next instruction from location Y and
proceeds from there.
If the number in the specified index register is greater than the decrement, the number in the index register is reduced by the amount of
the decrement and the calculator proceeds to the next instruction in
sequence.
Trap Transfer. 2 TTR Y +0021. This instruction causes the
calculator to take its next instruction from location Y and to proceed from
there whether in the trapping mode or not. This makes it possible to have an
ordinary transfer even when in the trapping mode.
P Bit Test. 2 PBT -0760···001. If the C(AC)p is a one,
the calculator skips the next instruction and proceeds from there. If
position P contains a zero, the calculator takes the next instruction in
sequence.
Low Order Bit Test. 2 LBT +0760··· 001. If the C (ACh5
is a one, the calculator skips the next instruction and proceeds from there.

2-74

DIGITAL COMPUTER PROGRAMMING

If position 35 contains a zero, the calculator takes the next instruction in
sequence.
Divide Checl{ Test. 2 DCT +0760··· 012. If the divide-check
indicator and light are on, the indicator and light are turned off, and the
calculator takes the next instruction in sequence. If the indicator and light
are off, the calculator skips the next instruction and proceeds from there.
Redundancy Tape Test. 2 RTT -0760··· 012. If the tapecheck indicator and light are on, the indicator and light are turned off and
the calculator takes the next instruction in sequence. If the indicator and
light are off, the calculator skips the next instruction and proceeds from
there.
COlllpare Acculllulator with Storage. 3 CAS Y +0340.
If the C(Y) are algebraically less than the C(AC), the calculator takes the
next instruction in sequence. If the C (Y) are algebraically equal to the
C (AC), the calculator skips the next instruction and proceeds from there.
If the C(Y) are algebraically greater than the C(AC), the calculator skips
the next two instructions and proceeds from there. Two numbers are
algebraically equal when the magnitude of the numbers and the sign are
both equal. A plus zero is algebraically larger than a minus zero.
Indexing Operations.
Load Index frolll Address. 2 LXA Y +0534. Not indexable.
The address part of the C (Y) replaces the number in the specified index
register. The C (Y) are unchanged.
Load Index frolll Decrelllent. 2 LXD Y -0534. Not indexable. The decrement part of the C(Y) replaces the number in the
specified index register. The C(Y) are unchanged.
Store Index in Decrelllen t. 2 SXD Y - 0634. Not indexable. The C (Y)a-17 are cleared and the number in the specified index
register replaces the decrement part of the C(Y). The C(Y)S,l,2,18-35 are
unchanged. The contents of the index register are unchanged if one index
register is specified. If a multiple tag is specified, the logical or of the
contents of these index registers will replace the C (Y)a-17 and will also
replace the contents of the specified index registers.
Place Address in Index. 2 PAX +0734. Not indexable. The
address part of the C(AC) replaces the number in the specified index
register. The C(AC) are unchanged.
Place Decrelllent in Index. 2 PDX -0734. Not indexable.
The decrement part of the C (AC) replaces the number in the specified
index register. The C (AC) are unchanged.
Place Index in Dccrelllent. 2 PXD -0754. Not indexable.
The AC is cleared and the number in the specified index register is placed

PROGRAMMING AND CODING

2-75

in the decrement part of the AC. The contents of the index register are
unchanged if one index register is specified. If a multiple tag is specified,
the logical or of the contents of these index registers will replace the C (AC)a-17
and will also replace the contents of the specified index registers.
Input-Output Operations. The identifying numbers for the various
input-output components appear in the address part of an instruction
whenever the programmer wants to operate one of these units. Whether
the address part of an instruction refers to a storage location or to one
of the components depends on the operation part of the instruction. 80m3
operations make no sense if the address is interpreted as a location in
storage; other operations make no sense if the address is interpreted as a
component identification. Thus, an address is automatically interpreted
by the calculator in the light of what it is asked to do by the operation
part of the instruction.
The addresses of the input-output units are given below.
Component
Cathode ray tube
Tapes
Binary coded decimal
Binary
Drum
Card readp.r
Card punch
Printer

Octal
030

Decimal
024

201-212
221-232
301-310
321
341
361

129-138
145-154
193-200
209
225
241

Read Select. 2-111 RDS Y +0762. This instruction causes
the calculator to prepare to read one record of information from the
component specified by Y. If Y specifies a tape unit, the MQ is cleared by
this instruction.
Write Select. 2-111 WRS Y +0766. This instruction causes
the calculator to prepare to write one record of information on the component specified by Y. WRS 333 8 is used to delay the execution of any
instruction until the MQ is available for computing after reading information from a tape.
Backspace Tape. 2-111 BST Y +0764. This instruction
causes the tape designated by Y to space one record in a backward direction. If the tape designated by Y is positioned at the load point, tp.e
BST Y instruction is interpreted as no operation.
Write End of File. 2-111 WEF Y +0770. This instruction
causes the tape unit designated by Y to leave an end-of-file space, an
end-of-file mark, and a redundancy character on its tape.
Rewind. 40ms-III REW Y +0772. This instruction causes
the tape unit designated by Y to rewind its tape to the load point.

2-76

DIGITAL COMPUTER PROGRAMMING

End of Tape Test. 2 ETT -760··· OIl. This instruction
must be given while the t~pe unit is selected (i.e., after a WRS or WEF
instruction and before the tape disconnects; no more than 744 microseconds
after the last CPY if WRS instruction; and any time up to 40 milliseconds,
if WEF). Failure to program this instruction may cause the tape to be
pulled from its reel. If the tape indicator and the tape indicator light are
off, the calculator skips the instruction immediately following the ETT and
proceeds from that point. If the tape indicator and the tape indicator
light are on, they will be turned off and the calculator will take the next
instruction in sequence (no skip).
If tape instructions are given to a tape while the tape indicator is on,
they will operate normally.
Locate Drulll Address. 2 LDA Y +0460. This instruction
follows a read select or write select instruction referring to a drum unit, and
the address part of the C (Y) specifies the first location of the record to be
read from or written on the drum. Not giving this instruction is equivalent
to giving the instruction with the address part of the C (Y) equal to zero.
Copy and Skip. - I l l CPY Y +0700. This instruction is
used after an RDS, WRS, or another CPY instruction to transfer a word
of information between location Y in storage and an input-output component specified by the address part of the preceding RDS or WRS instruction. When this instruction is executed, the 36-bit word is formed in
the MQ and then is transmitted to storage or to the component. If the
CPY instructions are not given within specific time ranges (found in the
descriptions of these components), the calculator stops, and a read-write
check light on the operator's console is turned on.
If an additional CPY instruction is given after the last word of a unit
record has been copied from a card or a record of tape, the CPY is not
executed, and the calculator skips the two instructions immediately
following the CPY and proceeds from there. If an additional RDS instruction is given for which there is no corresponding record, the calculator
sets up an end-of-file condition. The first CPY instruction given after this
RDS is not executed; instead, the calculator skips the instruction immediately following the CPY and proceeds from there.
Plus Sense. 2 PSE Y +0760. This instruction provides a
means of testing the status of sense switches (and of turning on or off the
sense lights on the operator's console), thus providing the programmer
with flexible means of altering the sequence of instructions being executed.
This instruction also permits the transmission of an impulse to or from the
exit or entry hubs on the printer or card punch.
The address part of this instruction determines whether a light, switch,
printer, or card punch is being sensed, and it further determines which light,
switch, or hub is being sensed.

PROGRAMMING AND CODING

2-77

Minus Sense. 2 MSE Y - 0760. This instruction provides a
means of testing the status of sense lights on the operator's console. The
addresses of the four sense lights are 141-144. If the corresponding sense
light is on, the light is turned off, the calculator skips the next instruction
and proceeds from there. If the light is off, the calculator takes the next
instruction in sequence.
Univac Scientific (1103A) Instruction Logic

The Univac Scientific computer is a (35, 0, 0) binary machine, with
option of (27,8,0). The arithmetic unit contains two 36-bit X (exchange)
and Q (quotient) registers and one 72-bit A register (accumulator).
Negative numbers are represented in one's complement notation.
Input-output is via high-speed paper tape reader and punch, direct card
reader and punch, and Uniservo magnetic tape units, which may be
connected to peripheral punched card readers and punches and a highspeed printer. In addition, information may be recorded on magnetic
tape directly from keyboards by the use of Unitypers. Communication
with external equipment is via an 8-bit (lOA) register and a 36-bit (lOB)
register. Information sent to these registers controls magnetic tapes as
well as other input-output equipment. The program address counter
(PAK) contains the present instruction address. Storage is in up to 12,288
locations of magnetic core storage, along with a directly addressable drum
of 16,384 locations. Instructions are of the two-address form, with six
bits for the operation code and two fifteen-bit addresses (u and v).
The following information is taken from a Univac Scientific Manual
(Ref. 103).
Definitions and Conventions.

I nstruction Word

la5· ..
oc
n

v

u

v

15 bits

15 bits

bg·· .

114 ...

10

Operation code.
First execution address.
Second execution address.

For some of the instructions, the form jn or jk replaces the u address; for
others the form k replaces the v address.
One-digit octal number modifying the instruction.
Four-digit octal number designating number of times instruction
is to be performed.
j
n

2-78

DIGITAL COMPUTER PROGRAMMING

Ii Seven-digit binary number designating the number of places the
word is to be shifted to the left.

Address Allocations (Octal)
00000-07777 4096,
~C
00000-17777 8192, or
100000-27777 12,288 36-bit words.
Q
31000-31777 1 36-bit word.
A
32000-37777 1 72-bit word.
MD 40000-77777 16,384 36-bit words.
Fixed Addresses
FI 00000 or 40001
F2 00001
Fa 00002
F4 00003
Arithmetic Section Registers
A
72-bit accumulator with shifting properties.
AR Right-hand 36 bits of A.
AL Left-hand 36 bits of A.
Q 36-bit register with shifting properties.
X
36-bit exchange register.
Note. Parentheses denote contents of. For example, (A) means contents of A (72-bit word in A); (Q) means contents of Q (36-bit word in Q).
Input-Output Registers
lOA
8-bit in-out register.
lOB
36-bit in-out register.
TWR 6-bit typewriter register.
HPR 7-bit high-speed punch register.
Word Extension
D (u) 72-bit word whose right-hand 36 bits are the word at address u,
and whose left-hand 36 bits are the same as the leftmost bit of the word at u.
S(u) 72-bit word whose right-hand 36 bits are the word at address u,
and whose left-hand 36 bits are zero.
D(Q) 72-bit word-right-hand 36 bits are in register Q, left-hand
36 bits are same as leftmost bit in register Q.
SeQ) same as D(Q) except left 36 bits are zero.
D(AR), S(A R ) are similarly defined.
L(Q) (u) 72-bit word-left-hand 36 bits are zero, right-hand 36 bits
are the bit-by-bit product of corresponding bits of (Q) and word at address

u.

PROGRAMMING AND CODING

2-79

L(Q') (v) 72-bit word-left-hand 36 bits are zero, right-hand 36 bits
are the bit-by-bit product of corresponding bits of the complement of (Q)
and word at address v.
Transmit Instructions.
11 * Transmit Positive TPuvt: Replace (v) with (u).
13 Transmit Negative TNuv: Replace (v) with the comple-

ment of (u).
12

Transmit Magnitude TMuv:

Replace (v) with the absolute

magnitude of (u).
15 Transmit V-address TVuv: Replace the 15 bits of (v) designated by V15 through V29, with the corresponding bits of (u), leaving the
remaining 21 bits of (v) undisturbed.
16 Transmit V -address TVuv: Replace the right-hand 15 bits
of (v) designated by Vo through V14, with the corresponding bits of (u),
leaving the remaining 21 bits of (v) undisturbed.
35 Add and Transmit ATuv: Add D(u) to (A). Then replace
(v) with (AR).
36 Subtract and Transmit STuv: Subtract D(u) from (A).
Then replace (v) with (Au).
22 Left Transmit LTjkv: Left circular shift (A) by k places.
If j = 0 replace (v) with (AL); if j = 1 replace (v) with (AR).
Q-Controlled Instructions.
51

Q-controlled Transmit QTuv:

Form in A the number

L(Q) (u). Then replace (v) by (AR).
52

Q-controlled Add QAuv:

Add to (A) the number L(Q) (u).

Then replace (v) by (AR).
53 Q-controlled Substitute QSuv: Form in A the quantity
L(Q)(u) plus L(Q') (v). Then replace (v) with (AR). The effect is to
replace selected bits of (v) with the corresponding bits of (u) in those
places corresponding to l's in Q. The final (v) is the same as the final (AR).
Replace Instructions.
21

Replace Add RAuv:

Form in A the sum of D(u) and D(v).

Then replace (u) with (AR).
23 Replace Subtract RSuv: Form in A the difference D(u)
minus D(v). Then replace (u) with (AR).
27 Controlled Complement CCuv: Replace (AR) with (u)
leaving CAL) undisturbed. Then complement those bits of (AR) that
correspond to ones in (v). Then replace (u) with (AR).
* Octal notation.

t Mnemonic notation.

DIGITAL COMPUTER PROGRAMMING

2-80

54 Left Shift in A LAuk: Replace (A) with D(u). Then left
circular shift (A) by k places. Then replace (u) with (AR). If u = A,
the first step is omitted, so that the initial content of A is shifted.
55 Left Shift in Q LQuk: Replace (Q) with (u). Then left circular shift (Q) by k places. Then replace (u) with (Q).
Split Instructions.
31

Split Positive Entry SPuk:

Form S (u) in A. Then left circular

shift (A) by k places.
33 Split Negative Entry SNuk: Form in A the complement of
S(u). Then left circular shift (A) by k places.
32 Split Add SAuk: Add S(u) to (A). Then left circular shift
(A) by k places.
34 Split Subtract SSuk: Subtract S(u) from (A). Then left
circular shift (A) by k places.
Two-Way Conditional JUIllP Instructions.

If A71 = 1, take (u) as NI. If A71 = 0,
(NI means next instruction.)
47 Zero JUIllP ZJuv: If' (A) is not zero, take (u) as NI. If (A)
is zero, take (v) as NI.
44 Q-JUlllp QJuv: If Q35 = 1, take (u) as NI. If Q35 = 0, take
(v) as NI. Then, in either case, left circular shift (Q) by one place.
46

Sign JUlllp SJuv:

take (v) as NI.

One-Way Conditional JUIllP Instructions.
41 Index JUlllp IJuv: Form in A the difference D(u) minus 1.
Then if A71 = 1, continue the present sequence of instructions; if A71 = 0,
replace (u) with (AR) and take (v) as NI.
42 Threshold JUIllP TJuv: If D(u) is greater than (A), take (v)
as NI; if not, continue the present sequence. In either case, leave (A) in
its initial state.
43 Equality JUlllp EJuv: If D(u) equals (A), take (v) as NI, if
not, continue the present sequence. In either case leave (A) in its initial
state.
Onc-Way Unconditional JUIllP Instructions.
45 Manually Selective JUIllP MJjv: If the number j is zero,
take (v) as NI. If j is 1, 2, or 3, and the correspondingly numbered MJ
selecting switch is set to "jump," take (v) as NI; if this switch is not set to
"jump," continue the present sequence.
37 Return JUlllp RJuv: Let y represent the address from which
CI was obtained. Replace the right-hand 15 bits of (u) with the quantity
y plus 1. Then take (v) as NI.

PROGRAMMING AND CODING

2-81

14 Interpret IP: Let y represent the address from which CI was
obtained. Replace the right-hand 15 bits of (F l ) with the quantity y
1.
Then take (F2) as NI.

+

Stop Instructions.
56 Manually Selective Stop MSjv: If j = 0, stop computer
operation and provide suitable indication. If j = 1, 2, or 3 and the correspondingly numbered MS selecting switch is set to "stop," stop computer
operation and provide suitable indication. Whether or not a stop occurs,
(v) is NI.
57 Program Stop PS-Stop computer operations and provide
suitable indication.
External Equipment Instructions.
17 External Function EF -v: Select a unit of external equipment
and perform the function designated by (v).
76 External Read ERjv: If j = 0, replace the right-hand 8 bits
of (v) with (lOA); if j = 1, replace (v) with (lOB).
77 External 'Vrite E'Vjv: If j = 0, replace (lOA) with the righthand 8 bits of (v); if j = 1, replace (lOB) with (v). Cause the previously
selected unit to respond to the information in lOA or lOB.
61 PRint PR-v: Replace (TWR) with the right-hand 6 bits of (v).
Cause the typewriter to print the character corresponding to the 6-bit code.
63 PUnch PUjv: Replace (HPR) with the right-hand 6 bits of (v).
Cause the punch to respond to (HPR). If j = 0, omit seventh level hole;
if j = 1, include seventh level hole.
Arithmetic Instructions.
71 Multiply MPuv: Form in A the 72-bit product of (u) and (v),
leaving in Q the multiplier (u).
72 Multiply Add MAuv: Add to (A) the 72-bit product of (u)
and (v), leaving in Q the multiplier (u).
73 Divide DVuv: Divide the 72-bit number (A) by (u), putting
the quotient in Q, and leaving in A a non-negative remainder R. Then
replace (v) by (Q). The quotient and remainder are defined by: (A)j =
(u) . (Q) + R, where
~ R < 1(u) I. Here (A) i denotes the initial
contents of A.
74 Scale Factor SFuv: Replace (A) with D(u). Then left circular shift (A) by 36 places. Then continue to shift (A) until A34 ~ A35 .
Then replace the right-hand 15 bits of (v) with the number of left circular
shifts, k, which would be necessary to return (A) to its original position.
If (A) is all ones or zeros, k = 37. If u is A, (A) is left unchanged in the
first step, instead of being replaced by D (AR).

°

DIGITAL COMPUTER PROGRAMMING

2-82

Sequenced Instructions.
75 RePeat RPjnw: This instruction calls for the next instruction,
which will be called Nluv, to be executed n times, its u and v addresses
being modified or not according to the value of j. Afterwards the program
is continued by the execution of the instruction stored at a fixed address Fl.
The exact steps carried out are:
(a) Replace the right-hand 15 bits of (F 1 ) with the address w.
(b) Execute Nluv, the next instruction in the program, n times.
(c) If j = 0, do not change u and v.
If j = 1, add one to v after each execution.
If j = 2, add one to u after each execution.
If j = 3, add one to u and v after each execution.
The modification of the u address and v address is done in program control
registers. The original form of the instruction in storage is unaltered.
(d) On completing n executions, take (Ft), as the next instruction. F 1 normally contains a manually selective jump whereby the
computer is sent to w for the next instruction after the repeat.
(e) If the repeated instruction is a jump instruction, the
occurrence of a jump terminates the repetition. If the instruction is a
Threshold Jump or an Equality Jump, and the jump to address v occurs,
(Q) is replaced by the quantity j, (n - r), where r is the number of executions that have taken place.
Floating Point Instructions.
64

Add FAuv:

point sum (u)

+ (v).

Form in Q the normalized rounded packed floating

65 Subtract FSuv: Form in Q the normalized rounded packed
floating point difference (u) - (v).
66 Multiply FMuv: Form in Q the normalized rounded packed
floating point product (u) . (v).
67 Divide FDuv: Form in Q the normalized rounded packed
floating point quotient (u) -;- (v).
01 Polynolllial Multiply FPuv: Floating add (v) to the floating
product (Q)i' (u), leaving the packed normalized rounded result in Q.
02 Inner Product FIuv: Floating add to (Q)i the floating product
(u) . (v) and store the rounded normalized packed result in Q. This
instruction uses Me location F4 = 00003 for temporary storage, where
(F4) f = (Q)i.The subscripts i and f represent "initial" and "final."
03 Unpack UPuv: Unpack (u), replacing (u) with (U)M and replacing (v)c with (u)c or its complement if (u) is negative. The characteristic portion of (U)l contains sign bits. The sign portion and mantissa

PROGRAMMING AND CODING

2-83

portion of (v)t are set to zero. Note. The subscripts M and C denote the
mantissa and characteristic portions.
04 Normalize Pack NPuv: Replace (u) with the normalized
rounded packed floating point number obtained from the possibly unnormalized mantissa in (u) i and the biased characteristic in (v )0' Note.
It is assumed that (u) i has the binary point between U27 and U2G; that is,
that (u) i is scaled by 2-27 •
05 Normalize Exit NEj-: If j = 1 normalize without rounding
until a master clear or until the instruction is again executed with j = o.
Univac II Instruction Logic

The Univac I and II are successive models of one of the earliest computers produced successively by the Eckert-Mauchly Corporation and
later the Remington-Rand Univac Division of the Sperry-Rand Corporation. The latter machine is compatible with programs written for the
former. Univac II is a (12, 0, 0) decimal machine.
The basic storage of the Univac II is 2000 words on magnetic cores of
12 alphanumeric characters each. Larger memories up to 10,000 words
are available. The secondary storage is on magnetic tape units called
Uniservos. All input-output, except through a console keyboard, is via
the magnetic tape units, which may be loaded directly from typewriter
(Unityper) or from punched cards (card-to-tape converter) and unloaded
by typewriter, high-speed printer, or tape-to-card converter. The Univac
II has a "variable field length" property which is designed to be of use in
data processing. All arithmetic is in fixed point "digital" numbers (absolute value less than one).
Registers. The following are the registers in the Univac II computer:
1.
2.
3.
4.
5.
6.
7.

rA
rX

Accumulator
X register
rL Quotient register
rF Extraction register
rW 9-word transfer register
rZ 60-word transfer register
60-word input register
rI

The following Univac II instrumentation code is taken from a Univac II
manual (Ref. 34).
Conventions. In describing the actions caused by Univac II system
instructions, the phrase "transfer the contents of ___ to ___ " is taken
to mean: the information in the component following the "of" is duplicated
in the component following the "to." The component to which information
is transferred is erased of its original contents just before the new informa-

DIGITAL COMPUTER PROGRAMMING

2-84

tion is entered into it. Unless otherwise specified, the contents of the component from which information is transferred remains unaltered.
SYIllbology. A symbolic notation is used to designate the operations
caused by the execution of an instruction. This symbolic notation, as
described below, is shown for each instruction. In addition a verbal
description is given.
Symbol

Meaning

III

)

r
X
X

is transferred to
a main storage location whose address is m
the contents of the element within the parentheses. Thus,
(m) = the contents of a main storage location where address
is m
register, the letter of the register follows the r. Thus, rA =
register A
those characters of any element, X, which correspond to
character positions in rF containing extractors
those characters of any element, X, which correspond to
character positions in rF containing nonextractors.

An instruction is symbolized by three characters-two characters specify
the operation code, the third character, always m, stands for the fourdigi t address portion of the instruction.
One-Word Transfer Instructions.
BOIll (Ill) ~ rA, rX. Transfer the contents of the storage location
specified by ill to both register A and register X.
FOIll (Ill) ~ rF. Transfer the contents of the storage location
specified by ill to register F.
LOIll (Ill) ~ rL, rX. Transfer the contents of the storage location
specified by ill to both register L and register X.
HOIll (rA) ~ Ill. Transfer the contents of register A to the storage
location specified by m.
COIll (rA) ~ Ill; 0 ~ rAe Transfer the contents of register A
to the storage location specified by m. Clear register A to a word of
decimal zeros.
GOIll (rF) ~ Ill. Transfer the contents of register F to the storage
location specified by m.
IOIll
(rl. ) ~ Ill. Transfer the contents of register L to the storage
location specified by m.
JOIll (rX) ~ Ill. Transfer the contents of register X to the
storage location specified by ill.

PROGRAMMING AND CODING

2-85

KOm (rA) -? rL; 0 -? rAe Transfer the contents of register A
to register L. Clear register A to a word of decimal zeros.
Arithmetic Instructions.
AOm (m) - ? rX; (rX) + (rA) -? rAe Transfer the contents of
the storage location specified by m to register X. Then send the contents
of register X and register A to the Adder and add them. Return the sum
to register A.
AHm (m) -? rX; (rX) + (rA) -? rA, m. Transfer the contents
of the storage location specified by m to register X. Then send the contents of register X and register A to the Adder and add them. Return the
sum to both register A and the storage location specified by m.
XOm (rX) + (rA) -? rAe Send the contents of register X and
register A to the Adder and add them. Return the sum to register A.
SOm - (lll)"-? rX; (rX) + (rA) -? rAe Transfer the contents
of the storage location specified by m to register X. In transit reverse the
sign of the word being transferred (from 0 to -, or from - to 0). Then
send the contents of register X and register A to the Adder and add them.
Return the sum to register A. (Note: plus signs are represented by 0.)
SHm - (lll) -? rX; (rX) + (rA) - ? rA, m. Transfer the contents of the storage location specified by m to register X. In transit
reverse the sign of the word being transferred (from 0 to -, or from - to
0). Then send the contents of register X and register A to the Adder and
add them. Return the sum to both register A and the storage location
specified by m.
MOm (m) -? rX; (rL) X (rX) - ? rA (rounded). Transfer the
contents of the storage location specified by m to register X. Then multiply
the contents of register L by the contents of register X. Return an 11digit product, with the least significant digit rounded, to register A. The
previous contents of rX and rF are destroyed.
NOm - (lll) ~ rX; (rL) X (rX) ~ rA (rounded). Transfer the
contents of the storage location specified by m to register X. In transit
reverse the sign of the word being transferred. Then multiply the contents
of register L by the contents of register X. Return an ll-digit product,
with the least significant digit rounded, to register A. The previous contents of register X and register F are destroyed.
POrn (m) ~ rX; (rL) X (rX) - ? rA, rX (22 digits). Transfer
the contents of the storage location specified by m to register X. Then
multiply the contents of register L by the contents of register X. Return
the sign and first 11 digits of the product to register A. Return the sign
and second 11 digits of the product to register X. The previous contents
of register F are destroyed.

2-86

DIGITAL COMPUTER PROGRAMMING

DOm. (m.) ~ rA; (rA) -;- (rL) ~ rA (rounded), ~ rX (unrounded). Transfer the eontents of the storage location specified by m
to register A. Then divide the contents of register A by the contents of
register L. Return a rounded quotient to register A, and an unrounded
quotient to register X.
The Second-Digit Modifier F. The second-digit modifier Fallows
the isolation and independent treatment of groups of characters, which are
stored as a part of a word. Two memory-to-register one-word transfer
instructions and six arithmetic instructions may be written with the second
instruction digit, F (instead of a zero as they have been shown). The
second instruction digit F modifies the instruction and causes it to be
operative on only a portion of the word. Those characters of the word
upon which it is desired to have the instruction operate are indicated to the
computer by an "extract pattern."
The Extract Pattern. Each of the 63 Univac II system characters is
either an extractor or a nonextractor. Those characters whose sevenplace code representations have a binary zero in their rightmost bit positions are extractors; e.g., decimal 1. Those characters whose seven-place
Univac II system code representations have a binary one in their rightmost bit positions are nonextractors; e.g., decimal O.
An extract pattern is a word so arranged that characters which are
extractors occupy the same character positions within the extract pattern
word as are occupied within their word by those characters that it is
desired to enter an operation. All other character positions in the extract
pattern are nonextractors. The extract pattern governing an operation
must be in register F at the time of execution of the operation. Extract
patterns are stored in the main storage and brought to register F (by an
FOm instruction) as needed.
The second instruction digit F can modify the Bam and Lam one-word
transfer instructions. As modified by the second instruction digit F, the
BFm and LFm instructions direct the central computer to:
1. Transfer to corresponding character positions in the appropriate
registers (the same register affected by the unmodified instruction), only
those characters of the storage location specified by m whose positions in
the word in m correspond to positions in register F containing extractors.
2. Place zeros in those positions in the receiving registers which correspond to nonextractors in register F. Thus,
BFm.

(rn)

~

rA, rX; 0 ~ rA, rX.

LFm.

(rn)

~

rL, rX; 0 ~ rL, rX.

The second instruction digit F can modify the AOm, Sam, MOm,
NOm, Pam, and Dam arithmetic instructions. As modified by the F the

PROGRAMMING AND CODING

2-87

AFm, SFm, MFm, NFm, PFm, and DFm instructions direct the central
computer to:
1. Transfer to corresponding positions in the appropriate registers (the
same registers affected by the unmodified instruction) only those characters
in the storage location specified by m correspond to positions in register F
containing extractors.
2. Place zeros in those positions in the receiving registers which correspond to nonextractors in register F.
3. Then perform the proper arithmetic function returning the complete
results to the appropriate registers. Thus,

+ (rA) ~ rAe
(rX) + (rA) ~ rAe

AFIll

(iii)

~

rX;

0 ~ rX;

SFIll

(iii)

~

rX;

0

MFIll

(iii)

~

rX;

O~rX;

(rL) X (rX) ~ rA (rounded).

NFIll

(iii)

~

rX;

O~rX;

(rL) X (rX) ~ rA (rounded).

PFIll

(iii)

~

rX;

O~rX;

(rL) X (rX) ~ rA~
rX (22 digits).

DFIll

(iii)

~

rA;

O~rA;

(rA)

~

rX;

(rX)

(rL)

~
~

rA (roundcd)~
rX (unrounded).

COIllposite Extract Instructions.
EOIll (iii)~ (rA) ~ rAe Form a composite word in register A by
transferring to register A those characters of the contents of the storage
location specified by m, whose positions in m correspond to character
positions in register F containing extractors. Do not alter those characters
in register A corresponding to character positions in register F containing
nonextractors.
EFIll (rA)~ (.!!!) ~ Ill~ rAe Form a composite word in both m and
register A by transferring to register A those characters of m whose positions in m correspond to character positions in register F containing
nonextractors. Do not alter those characters in m corresponding to
character positions in register F containing extractors. Return the composite word, thus formed, tom.
Control Instructions.
UOIll JUIllP to Ill. Take next instruction word from the storage
location specified by m of right-hand instruction of the instruction word
containing the DOm instruction, rather than the next sequential storage
location. Then continue sequential operations from m.
QOIll If (rA) = (rL)~ JUIllp to Ill. Send the contents of both
register A and register L to the comparator, and compare them. If they

2-88

DIGITAL COMPUTER PROGRAMMING

are found to be equal take the next instruction word from the storage
location specified by m of the right-hand instruction of the instruction
word containing the QOm rather than the next sequential storage location.
Then continue sequential operation from m. If the contents of register A
do not equal the contents of register L continue on with uninterrupted sequential operations.
TOIll If (rA) > (rL), JUlllp to Ill. Send the contents of both register A and register L to the comparator, and compare them. If the contents
of register A are found to be algebraically greater than the contents of
register L, take the next instruction word from the storage location specified
by m of the right-hand instruction of the word containing the Tam instruction rather than the next sequential storage location. Then continue
sequential operation from m. If the contents of register A are not greater
than the contents of register L continue on with uninterrupted sequential
operations.
OOIll SKIP. Proceed to the next instruction.
901ll
STOP. Stop processing.
ROIll 000000 UO (c + 1) ~ Ill. Place in the storage location
specified by m the following word: 000000 UO (c + 1), where c = the
storage location of the instruction word of which Ram order is a part.
Shift Instructions .
•nlll
Shift (rA) right, with sign, n places. * Shift all twelve
characters of the word in register A the number of places specified by n to
the right. (The n least significant digits of the word are destroyed by this
shift.) Place zeros in the n left-hand character position of register A.
;nlll Shift (rA) left, with sign, n places. * Shift all twelve
characters of the word in register A the number of places specified by n to
the left. (The n left-hand characters of the word are destroyed by this
shift.) Place zeros in the n-least significant digit positions of register A.
-nlll Shift (rA) right, excluding sign, n places. * Shift the
eleven significant digits (excluding sign) the number of places specified by
n to the right. (The n least significant digits of the word will be destroyed
by this' shift.) Place zeros in the n-most significant digit positions excluding sign of register A.
Onlll Shift (rA) left, excluding sign, n places. * Shift the
eleven significant digits (excluding sign) the number of places specified
by n to the left. (The n-most significant digit of the word will be destroyed
by this shift.) Place zeros in the n-least significant digit positions of
register A.

* n = may be any digit from 1 to 9.

PROGRAMMING AND CODING

2-89

Multiword Transfer Instructions.
Vnlll (lll, III + I, .. " III + n - I) ~ rW. If n = 0, skip. If
n equals 0, treat this instruction as a skip instruction. If n equals any other
digit, transfer n consecutive words beginning with the word in m from the
main storage to register W.
'Vnlll (r'V) ~ lll, III + I, .. " III + n - 1. If n = 0, skip. If
n equals 0, treat this instruction as a skip instruction. If n equals any other
digit, transfer n consecutive words from register W to n consecutive storage
locations in the main storage beginning with the storage location specified
bym.
Ynlll (lll, III + 1, .. " III + IOn - 1) ~ rZ. If n = 0, 7, 8, 9,
skip. If n = 0, 7, 8, 9 treat this instruction as a skip instruction. If n = 1,
2, 3, 4, 5, or 6, transfer IOn consecutive words beginning with the word in
storage location m from the main storage to register Z.
Znlll
(rZ) ~ lll, III + I, .. " III + IOn - 1. If n = 0, 7, 8, 9,
skip. If n = 0, 7, 8, or 9 treat this instruction as a skip instruction. If n
equals 1, 2, 3, 4, 5, or 6, transfer IOn consecutive words from register Z to
IOn consecutive storage locations in the main storage beginning with the
storage location specified by m.
Input-Output Instructions.
Inlll 60 words frolll tape to rI, forward. Read the next block
from tape mounted on Uniservo n, with the tape moving in the forward
direction. Place the block as it is being read from tape, into register I.
2nlll 6{) words frolll tape to rI, backward. Read the next block
from the tape mounted on Uniservo n, with the tape moving in the backward direction. Place the block, as it is being read from tape, into register
I in the same word order as it would have been placed in register I had it
been read with a forward read.
30111 (rI) ~ lll, III + I, .. " III + 59. Transfer the contents of
register I to 60 consecutive storage locations beginning with storage
location m.
40111 (rI) ~ lll, III
1, .. " III
59. Same as 30m instruction,
above.
3nlll (rI) ~ lll, III + I, .. " III + 59; 60 words frOlll tape ~
rI, forward. Transfer the contents of register I to 60 consecutive storage
locations beginning with storage location m. Then read the next block
from the tape mounted on Uniservo n, with the tape moving in the forward
direction. Place the block, as it is being read from tape, into register I.
4nlll (rI) ~ lll, III + I, ... , III + 59; 60 words frOlll tape to rI,
backward. Transfer the contents of register I to 60 consecutive storag.e

+

+

2-90

DIGITAL COMPUTER PROGRAMMING

locations beginning with storage location m. Then read the next block
from the tape mounted on Uniservo n with the tape moving in the backward direction. Place the block, as it is being read from tape, into register I
in the same word order as it would have been placed in register I had it
been read with a forward read.
10m Supervisory Control Keyboard ~ m. Stop processing until
a word is typed on the supervisory control keyboard. When a word has
. been typed, and the word release key has been depressed, place the typed
word into storage location m.
5nm (m, m + 1, ... , m + 59) ~ Tape, 250 characters per
inch. Transfer the contents of the 60 consecutive storage locations
beginning with storage location m to register O. Then write the contents of
register 0 onto the tape mounted on Uniservo n at a recording density of
250 characters per inch.
7nm (m, m + 1, ... , m + 59) ~ Tape, 50 characters per inch.
Transfer the contents of the 60 consecutive storage locations beginning
with storage location m to register O. Then write the contents of register 0
onto the tape mounted on Uniservo n at a recording density of 50 characters per inch.
50m (m) ~ S.C.P. Write the contents of storage location m on
the supervisory control printer. This instruction can be modified by a set
of buttons on the supervisory control panel to cause the contents of:
1. Register A.
2. Register L.
3. Register X.
4. Register F.
5. The Control Counter, or
6. The Control Register.
7. Successive storage locations beginning with a specified storage
location to be printed on the supervisory control printer.
6nm Rewind tape. Rewind the tape mounted on Uniservo n.
8nm Rewind tape with interlock. Rewind the tape mounted on
Uniservo n. Set an interlock on Uniservo n which will cause the computer
to stop if any other order is directed to that Uniservo.
The input-output instructions which direct Uniservo operations are
symbolized with a second instruction digit of n. The n specifies the
particular Uniservo to which the instruction is directed and is usually
written as 1, 2, 3, 4, 5, 6, 7, 8, 9,-, A, B', C, D, E, or F. It may, however, be
written as a delta (A). If it is written as a A, the Uniservo to which the
order is directed is determined by a set of 16 buttons (one for each Uniservo) on the supervisory control console. Only one of these buttons may
be depressed at anyone time. The Uniservo corresponding to the depressed button becomes Uniservo A.

2-91

PROGRAMMING AND CODING
Breakpoint Ins true tions.

,Ill Breal{point stop. If the comma breakpoint switch on the
supervisory control panel is in the breakpoint position, stop. If the
comma breakpoint switch is not in the breakpoint position,' skip.
Qnlll If the button in the breakpoint section of the supervisory
control panel corresponding to n is not depressed, treat as a OOIll instruction. If the button in the breakpoint section of the supervisory control
panel corresponding to n is depressed, perform the comparison between the
contents of register A and register L, light a neon on the supervisory control
panel indicating whether or not a jump would normally take place, and
stop. The operator can then force a jump or no jump to take place and
continue processing.
Tnlll If the button in the breakpoint section of the supervisory
control panel corresponding to n is not depressed, treat as a TOm instruction. If the button is depressed, perform the comparison between the
contents of register A and register L, light a neon on the supervisory
control panel indicating whether or not a jump would normally take place,
and stop. The operator can then force a jump or no jump to take place
and continue processing.
SUllllllary Table. A summary of the instructions for Univac II is
given in Table 8.
TABLE 8.
Instruction
AOO1
AF01
AH01
BOO1
BFnl
COO1
DOO1
EOO1
EF01
FOO1
GOO1
HOO1
1001
JOO1
KOO1
LOO1

Execution
Time,a
microseconds

200
200
240
120
120
120
(3700)
120
200
120
120
120
120
120
120
120

SUMMARY OF UNIVAC II INSTRUCTIONS

Description
(01) ~ rX; (rX)
(rA)~' rA
(01) ~ rX; 0 ~ rX; (rX)
(rA) ~ rA
(01)~rX; (rX)
(rA)~rA~01
(01)~rA, rX
(iii) ~ rA, rX; O~ rA, rX
(rA) ~ 01; O~ rA
(01) ~ rA; (rA) + (rL) ~ rA (rounded)
rX (unrounded)
(01)
(rA) ~ rA
(rA)
(m)~rA~01

+
+

+

+
+

(01)~rF

(rF)~

01
01
(rL) - 7 01
(rX) ~ 01
(rA) - 7 rL; 0 ~ rA
(01)~rL; rX
(rA)~

a Times shown in parentheses are statistical averages. The exact times for execution
depends upon the data upon which these orders are operating.

TABLE

8.

SUMMARY OF UNIVAC

LFm
MOrn
MFm

Execution
Time,a
microseconds
120
(1900)
(1900)

NOm
NFm

(1900)
(1900)

POrn

(1900)

PFm

(1900)

Qnm

200

ROm
SOm
SHm
SFm
Tnm

120
200
280
200
200

UOm
Vnm
Wnm
XOm
Ynm
Znm
OOm
.nm
;nm
-nm
Onm
90m
,Om
Inm
2nm
30m
40m
3nm

120
40n
40n
120
80
405n
80
405n
120
80
40n
80
40n
80
40n
80
40n
120
120
(3500)
(3500)
2675
2675
3500

Instruction

80
80

+
+
+
+
+
+
+
+

4nm

(3500)

5nm

(3500)

6nm
7nm

299
(3500)

8nm

200

II

INSTRUCTIONS

(Continued)

Description
(m) -+ rL; 0 -+ rL
(m) -+ rX; (rL) X (rX) -+ rA (rounded)
(m) -+ rX; 0-+ rX; (rL) X (rX) -+ rA
(rounded)
- (m) -+ rX; (rL) X (rX) -+ rA (rounded)
- (m) -+ rX; 0-+ rX; (rL) X (rX) -+ rA
(rounded)
(m) -+ rX; (rL) X (rX) -+ rA, rX (22 digits
unrounded)
(m) -+ rX; 0-+ rX; (rL) X (rX) -+ rA, rX
(22 digits unrounded)
If (rA) = (rL), jump to m; stop if breal{point
n is selected
Record 000000 UO [c
I] in m
- (m) -+ rX; (rX)
(rA) -+ rA
- (m) -+ rX; (rX)
(rA) -+ rA -+ m
- (rn) -+ rX; 0-+ rX; (rX)
(rA) -+ rA
If (rA) > (rL), jump to m; stop if breakpoint
n is sclected
Jump to m
(m), (m
I), .. " (m
n - I) -+ rW
(rW) -+ m, m
I··· m
n - I
(rX)
(rA) -+ rA
(m), (m
I), .. " (m
IOn - I) -+ rZ
(rZ) -+ m, m
I,' . " m
IOn - I
SKIP
Shift (rA) right, with sign, n places
Shift (rA) left, with sign, n places
Shift (rA) right, without sign, n places
Shift (rA) left, without sign, n places
STOP
Stop if comma breal{point is selected
60 words from tape n to d, forward
60 words from tape n to d backward
(d) -+ m, m
I, .. " m
59
Same as 30m, above
(d) -+ m, m
I" . " m
59; 60 words from
tape n to d, forward
(d) -+ m, m
I" . " m
59; 60 words from
tape n to d, backward
(m), (m
I), .. " (m
59) -+ tape n, 250
characters/inch
Rewind tape n
m, (m
I), .. " (m
59) -+ tape n, 50 characters/inch
Rewind tape n, with interlock

+
+
+

+

+

+

+

+

+

+

+
+
+

+

+

+
+
+
+

+

+

+

+

a Times shown in parentheses are statistical averages.
The exact times for execution
depends upon the data which these orders are operating.

2-92

PROGRAMMING AND CODING

2-93

IBM 650 Instruction Logic

The basic IBM 650 is a magnetic drum (10,0,0) decimal computer with
one-pIus-one address instruction logic. It has a storage of 1000 or 2000
10-digit words (plus sign) with addresses 0000-0999 or 0000-1999. More
extended versions of the equipment have built-in floating point arithmetic
and index accumulators, but the basic machine will be described here.
There are three arithmetic registers in addition to the standard program
register and program counter. All information from the drum to the
arithmetic unit passes through a signed 10-digit distributor. A twentydigit accumulator is divided into a lower and upper part, each of 10 digits
with sign. Each of these is addressable (distributor 8001, lower accumulator 8002, and upper accumulator 8003). Each accumulator may be
cleared to zero separately (in IBM 650 terminology, "reset"). The entire
20-digit register can be considered as a unit, or each part separately (but
affecting the other in case of carries). The 10-digit instruction is broken
down into the following form:
9
1
Op.
Code

10

8

7 6 5
1 1 1
Data
Address

41 21 31 1
N ext Instruction
Address

0
Sign

One particular instruction, Table Look-Up, allows automatic table search
for one particular element in a table, which can be stored with a corresponding functional value. Input-output is via 80-digit numerical punched
cards. An "alphabetic device" allows limited alphabetical entry on cards.
Only certain 10-word groups on the magnetic drum are available for input
and output. The following information is taken from an IBM 650 manual
(Ref. 102). Much of the input-output is handled via board wiring, which
is not described in detail below. The two-digit pair represents the machine
code. The BRD (Branch on Digit) operation is used with special board
wiring to tell when certain specific card punches exist.
Inpu t-Outpu t Instructions.

70 RD (Read). This operation code causes the machine to read
cards by a two-step process. First, the contents of the 10 words of read
buffer storage are automatically transferred to one of the 20 (or 40) possible
10-word groups of read general storage. The group selected is determined
by the D address of the Read instruction. Secondly, a card is moved under
the reading brushes, and the information read is entered into buffer storage
for the next Read instruction.

2-94

DIGITAL COMPUTER PROGRAMMING

71 PCH (Punch). This operation code causes card punching in
two steps. First the contents of one of the 20 (or 40) possible 10-word
groups of punch storage are transferred to punch buffer storage. The
group selected is specified by the D address of the Punch instruction.
Secondly, the card is punched with the information from buffer storage.
69 LD (Load Distributor). This operation code causes the contents of the D address location of the instruction to be placed in the
distributor.
24 STD (Store Distributor). This operation code causes the
contents of the distributor with the distributor sign to be stored in the
location specified by the D address of the instruction. The contents of the
distributor remain undisturbed.
Addition and Subtraction Instructions.
10 AU (Add to Upper). This operation code causes the contents
of the D address location to be added to the contents of the upper half of
the accumulator. The lower half of the accumulator will remain unaffected
unless the addition causes the sign of the accumulator to change, in which
case the contents of the lower half of the accumulator will be complemented.
Also, the units position of the upper half of the accumulator will be reduced
by one.
15 AL (Add to Lower). This operation code causes the contents
of the D address location to be added to the contents of the lower half of
the accumulator. The contents of the upper half of the accumulator could
be affected by carries.
II SU (Subtract from Upper). This operation code causes the
contents of the D address location to be subtracted from the contents of
the upper half of the accumulator. The contents of the lower half of the
accumulator will remain unaffected unless the subtraction causes a change
of sign in the accumulator, in which case the contents of the lower half of
the accumulator will be complemented. Also, the units position of the
upper half of the accumulator will be reduced by one.
16 SL (Subtract from Lower). This operation code causes the
contents of the D address location to be subtracted from the contents of
the lower half of the accumulator. The contents of the upper half of the
accumulator could be affected by carries.
60 RAU (Reset and Add into Upper). This operation code
resets the entire accumulator to plus zero and adds the contents of the D
address location into the upper half of the accumulator.
65 RAL (Reset and Add in to Lower). This opera tion code
resets the entire accumulator to plus zero and adds the contents of the D
address location into the lower half of the accumulator.

PROGRAMMil~G

AND CODING

2-95

61 RSU (Reset and Subtract into Upper). This operation code
resets the entire accumulator to plus zero and subtracts the contents of the
D address location into the upper half of the accumulator.
66 RSL (Resct and Subtract into Lower). This operation code
resets the entire accumulator to plus zero and subtracts the contents of the
D address location into the lower half of the accumulator.
AccuIllulator Store Instructions.
20 STL (Store Lower in MCIllory). This operation code causes
the contents of the lower half of the accumulator with the accumulator
sign to be stored in the location specified by the D address of the
instruction. The contents of the lower half of the accumulator remain
.undisturbed.
It is important to remember that the D address for all store instructions
must be 0000-1999. An 8000 series D address will not be accepted as
valid by the machine on any of the store instructions.
21 STU (Store Upper in MeIllory). This operation code causes
the contents of the upper half of the accumulator with the accumulator
sign to be stored in the location specified by the D address of the instruction. If STU is performed after a division operation, and before another
division, multiplication, or reset operation takes place, the contents of the
upper accumulator will be stored with the sign of the remainder from the
divide operation (Op-Code 14). The contents of the upper half of the
accumulator remain undisturbed.
22 STDA (Store Lower Data Address). This operation code
causes positions 8-5 of the distributor to be replaced by the contents of the
corresponding positions of the lower half of the accumulator. The modified
word in the distributor with the sign of the distributor is then stored in the
loca tion specified by the D address of the instruction.
23 STIA (Store Lower Instruction Address). This operation
code causes positions 4-1 of the distributor to be replaced by the contents
of the corresponding positions of the lower half of the accumulator. The
modified word in the distributor with the sign of the distributor is then
stored in the location specified by the D address of the instruction. The
contents of the lower half of the accumulator remain unchanged, and the
sign ·of the accumulator is not transferred to the distributor. The modified
word remains in the distributor upon completion of the operation.
Absolute Value Instructions.
17 AABL (Add Absolute to Lower). This operation code
causes the contents of the D address location to be added to the contents
of the lower half of the accumulator as a positive factor regardless of the

2-96

DIGITAL COMPUTER PROGRAMMING

actual sign. When the operation is completed, the distributor will contain
the D address factor with its actual sign.
67 RAABL (Reset and Add Absolute into Lower). This
operation code resets the entire accumulator to zeros and adds the contents
of the D address location into the lower half of the accumulator as a
positive factor regardless of its actual sign. When the operation is completed, tlie distributor will contain the D address factor with its actual sign.
18 SABL (Subtract Absolute frolll Lower). This operation
code causes the contents of the D address location to be subtracted from
the contents of the lower half of the accumulator as a positive factor
regardless of the actual sign. When the operation, is completed, the
distributor will contain the D address factor with its actual sign.
68 RSABL (Reset and Subtract Absolute into Lower). This
operation code resets the entire accumulator to plus zero and subtracts
the contents of the D address location into the lower half of the accumulator
as a positive factor, regardless of the actual sign. When the operation is completed, the distributor will contain the D address factor with its actual sign.
Multiplication and Division.

19 MULT (Multiply). This operation code causes the machine
to multiply. A 10-digit multiplicand may be multiplied by a 10-digit
multiplier to develop a 20-digit product. The multiplier must be placed
in the upper accumulator prior to multiplication. The location of the
multiplicand is specified by the D address of the instruction. The product
is developed in the accumulator beginning in the low-order position of the
lower half of the accumulator and extending to the left into the upper half
of the accumulator as required.
14 DIV (Divide). This operation code causes the machine to
divide without resetting the remainder. A 20-digit dividend may be divided by a 10-digit divisor to produce a 10-digit quotient. In order to
remain within these limits, the absolute value of the divisor must be
greater than the absolute value of that portion of the dividend that is in the
upper half of the accumulator. The entire dividend is placed in the 20position accumulator. The location of the divisor is specified by the D
address of the divide instruction.
64 DIV RU (Divide and Reset Upper). This operation code
causes the machine to divide as explained under operation code 14 (DIV).
However, the upper half of the accumulator containing the remainder with
its sign is reset to zeros.
Branching Instructions

(Decision Operations).

44 BRNZU (Branch on Non-Zero in Upper). This operation
code causes the contents of the upper half of the accumulator to be exam-

PROGRAMMING AND CODrNG

2-91

ined for zero. If the contents of the upper half of the accumulator is
nonzero, the location of the next instruction to be executed is specified by
the D address. If the contents of the upper half of the accumulator is zero,
the location of the next instruction to be executed is specified by the I
address. The sign of the accumulator is ignored.
45 BRNZ (Branch on Non-Zero). This operation code causes
the contents of the entire accumulator to be examined for zero. If the
contents of the accumulator is nonzero, the location of the next instruction
to be executed is specified by the D address. If the contents of the accumulator is zero, the location of the next instruction to be executed is
specified by the I address. The sign of the accumulator is ignored.
46 BRMIN (Branch on Minus). This operation code causes
the sign of the accumulator to be examined for minus. If the sign of the
accumulator is minus, the location of the next instruction to be executed
is specified by the D address. If the sign of the accumulator is positive,
the location of the next instruction to be executed is specified by the I
address. The contents of the accumulator are ignored.
47 BROV (Branch on Overflow). This operation code causes
the overflow circuit to be examined to see whether it has been set. If the
overflow circuit is set, the location of the next instruction to be executed
is specified by the D address. If the overflow circuit is not set, the location
of the next instruction to be executed is specified by the I address.
90-99 BRD 1-10 (Branch on 8 in Distributor Position 1"';10).
This operation code examines a particular digit position in the distributor
for the presence of an 8 or 9. Codes 91-99 test positions 1-9, respectively;
of the test word; code 90 tests position 10. If an 8 is present, the location
of the next instruction to be executed is specified by the D address. If a 9
is present, the location of the next instruction to be executed is specified by
the I address. The presence of other than an 8 or 9 will stop the machine.
Shift Instructions.

30 SRT (Shift Right). This operation code causes the contents
of the entire accumulator to be shifted right the number of places specified
by the units digit of the D address of the shift instruction. A maximum
shift of nine positions is possible. A data address with units digit of zero
will result in no shift. All numbers shifted off the right end of the accumulator are lost.
31 SRD (Shift Round). This operation causes the contents of
the entire accumulator to be shifted right the number of places specified
by the units digit of the D address of the instruction. A 5 is added (-5 if
the accumulator is negative) in the twenty-first (blind) position of the
amount in the accumulator. A data address units digit of zero will shift
10 places right with rounding.

2.98

DIGITAL COMPUTER PROGRAMMING

35 SLT (Shift Left). This operation code causes the contents of
the entire accumulator to be shifted left the number of places specified by
the units digit of the D address of the instruction. A maximum shift of
nine positions is possible. A data address with a units digit of zero will
result in no shift. All numbers shifted off the left end of the accumulator
are lost. However, the overflow circuit will not be turned on.
36 SCT (Shift Left and Count). This operation code causes
(1) the contents of the entire accumulator to be shifted to the left until a
nonzero digit is in the most significant place, (2) a count of the number of
places shifted to be inserted in the two low-order positions of the accumulator. This instruction is to aid fixed-point scaling.
Table Look-Up Instructions.
84 TLU (Table Look-Up). This operation code performs an
automatic table look-up using the D address as the location of the first
table argument and 'the I address as the address of the next instruction to
be executed. The argument for which a search is to be made must be in
the distributor. The address of the table argument equal to, or higher
than (if no equal exists) the argument given is placed in positions 8-5 of the
lower accumulator. The search argument remains, unaltered, in the distributor.
Miscellaneous Instructions.
00 No-Op (No Operation). This code performs no operation.
The data address is bypassed, and the machine automatically refers to the
location specified by the instruction address of the No-Op instruction.
01 Stop. This operation code causes the program to stop provided
the programmed switch on the control console is in the stop position. When
the programmed switch is in the run position the 01 code will be ignored
and treated in the same manner as 00 (No-Op ).
Datatron 205 Instruction Logic

'

A typical magnetic drum computer of the single-address type is the
,Datatron 205 computer manufactured by the ElectroData Division of the
Burroughs Corporation. The following description of the machine is
obtained from a Datatron manual (Ref. 32). This computer, in its simplest
form, is a fixed point, decimal (10, 0, 0) computer. The numbers are
"digital" numbers, in absolute value less than one. Each instruction (and
number) occupies one machine word. The address part of an instruction
occupies the four least significant digits, with a two-digit operation code
immediately preceding.
Storage is on a magnetic drum with 4000 words capacity. A quick

PROGRAMMING AND CODING

2-99

access storage (recirculating loop) has a capacity of 80 words in four
separate blocks of 20 words each. Addresses in the main storage range
from 0000 through 3999; addresses in the quick access storage are 4000,
5000, 6000, and 7000. Numbers block-transferred back and forth between
main and quick access storage can ordinarily be altered in one while
remaining unchanged in the other.
Registers.

A register. This register contains 11 decimal-digit positions. Ten
are for the number or instruction and one for the algebraic sign. This
register acts as an accumulator, and the results of most operations appear
here at the end of the operation.
R register. This register contains 10 decimal-digit positions (no
algebraic sign). In several operations, it serves as an extension of the A
register and holds the 10 least significant digits of the number contained
in the combined A and R registers.
B register. This register contains 4 decimal-digit positions, and
is used to facilitate the modification of commands and for tallying. As
each command is received from memory, it is checked to determine whether
its address part is to be modified or not. This is determined by a 1 or a 0
in the algebraic sign position. If the sign digit is 1, the four-digit number
contained in the B register is added absolutely to the four least significant
digits (the address part) of the command, and the command is then executed as modified by the contents of the B register. It is important to note
that the commands with negative sign, as stored in the memory, are not
altered by the operation of this register; they are temporarily modified in
the electronic registers immediately before execution. Thus, the same
command may be executed many times during a computation, temporarily
modified each time by a different number in the B register.
The R register may be loaded from the drum by means of a right shift
through the A register.
Information to be punched out on paper tape or printed on the typewriter comes from the A register.
Arithllletic Instructions. In all arithmetic operations one operand is
stored in the A register, the other having been fetched from the storage
Ioca tion specified in the address part of the command word. If the sign
digit of the command word is 1, the B register will be added to the address
before the command arrives at the C register. If on input the sign digit
of the command is 3, the B register will be added to the address before the
command reaches the drum; and the word will be stored with a 1 in the
sign digit, to produce B modification on execution. If on input the sign
digit of the command word is 2, the B register will be added to the address

2-100

DIGITAL COMPUTER PROGRAMMING

before the command reaches the drum and the word will be stored with a
In the following description the alphanumeric codes and
two-digit numbers in parentheses after the name of the command are those
used on standard code sheets.

oin the sign digit.
Addition.

ADD (ad x, 74). Add to the number in the A register the number in
storage location x. This command and associated add commands do not
affect the contents of the R register.
SUBTRACT (su x, 75). Subtract from the contents of the A register
the number in storage location x.
ADD ABSOLUTE VALUE (ada x, 76). Add to the A register the
number in storage location x with a positive sign attached.
SUBTRACT ABSOLUTE VALUE (sua x, 77). Subtract from the
number in the A register the value of the number in storage location x with
a positive sign attached.
CLEAR AND ADD (ca x, 64), CLEAR AND SUBTRACT (cs x, 65),
CLEAR AND ADD ABSOLUTE VALUE (caa x, 66), and CLEAR AND
SUBTRACT ABSOLUTE VALUE (csa x, 67). These commands clear
the A register before the operation, and then have the same effect as the
corresponding commands without the clearing.
Multiplication.
MULTIPLY AND HOLD (Inh x, 60). Bring the number from
storage location x into the D register; multiply it by the number in the A
register; and hold the 20-digit product in the A and R registers. In the
MULTIPLY-HOLD command, R is considered to be an extension of A.
Before any multiplication command the R register is automatically cleared.
MULTIPLY AND ROUND OFF (Inr x, 70). Bring the number
from storage location x into the D register; multiply it by the number in
the A register and round off. If the first digit of R is 5 or greater, increase
the absolute value of the number in the A register by 10- 1
If the first
digit of R is less than 5, do not change A. In either case, the R register is
cleared after the command has been executed. There is no possibility of
overflow upon execution of a MULTIPLY AND ROUND OFF command.
ROUND OFF (ro, 23). If the first digit of R is 5 or greater, add
10-10 to the absolute value of the number in the A register and clear R. If
the first digit of R is less than 5, clear R. Overflow is possible if A contains
all 9's and the first digit of R is 5 or greater.

°.

Division.
DIVIDE (div x, 61). Divide the number in the A and R registers by
the number in storage location x. In this case the R register is considered

PROGRAMMING AND CODING

2-101

as an extension of A. If the number in A and R is less in absolute value
than the number in x, the division is performed; the A register will contain
the 10-digit quotient; and the R register will contain the true remainder
after the DIVIDE command has been executed. If, however, the number
in A and R is greater in absolute value or equal to the number in the D
register, the overflow toggle is set; and A and R are cleared.
CLEAR R (cl R, 33). Set all digits of the R register to zero.

Logical Insiructions.
Unit Adjust.
UNIT ADJUST (ua, 06). Set the "I" toggle in the first position of
the A register. This command effectively increases an even digit in AI,
making it odd; and leaves an odd digit unchanged. This command is
normally used after a right shift to compensate for overflow on an addition.
It allows the coder to compensate for the overflow without testing for sign.
Al before ua

Al after ua

o

1
1

1

2
3

7
8

3
3
5
5
7
7
9

9

9

4

5
6

Storage. The results of arithmetic operations are stored in the A
register. The transfer of these results to storage is effected by two commands which do not affect the R register. They are:
TO MEMORY AND HOLD (tInh x, 12). Store the number in the
A register in storage location x, and retain the number in the A register.
TO MEMORY AND CLEAR (tInC x, 02). Store the number in the
A register in storage location x, and clear the A register, including the sign
position.
Shift.
SHIFT RIGHT (sr n, 13). Shift the number in the A and R registers, not including sign, n places to the right (n is interpreted modulo 20).
The n rightmost digits are lost. The n leftmost digits become zero. In this
command as well as the following command, the number of shifts (n) is
indicated by the address part of the command word.

2-102

DIGITAL COMPUTER PROGRAMMING

SHIFT LEFT (sl r~ 14). Circulate the number in the A and R
registers, not including sign, n places to the left (n is interpreted modulo
20). The n leftmost digits in A become the n rightmost significant digits
in R.
LOGICAL CYCLE LEFT (lcl n~ 01). Circulate the A register, including the sign digit, n + 1 places to the left (n is interpreted modulo 20).
The R register is not affected by this command.
SPECIAL LEFT SHIFT (spl y~ 15). If the number in the A register
is not zero, shift the A and R registers to the left until the first nonzero
digit in A is in the first position of the A register. Change of control does
not take place. If the A register contains zero, replace the contents of
the A register by the contents of the R register and change control to
storage location y.
This command normalizes the number in A and R and, therefore, is
frequently used in floating point operations.
Since it is important to know the number of shifts that occur as a result
of the SPECIAL LEFT SHIFT, a count of these shifts is stored in the
special counter.
Special Counter. The special counter is a four-toggle binary counter
recycling on 15 (1111). It is used in the machine for three purposes:
1. To count the shifts during multiplication.
2. To count the shifts during division.
3. To count the shifts necessary to normalize a number with a special
left. The number in the special counter after the completion of a MULTIPLY or DIVIDE command is 9 (except' when division sets the overflow
toggle). After a SPECIAL LEFT (spl y) command the special counter'
shows the number of zeros that were to the left of the first nonzero digit
in A before the shift. In the case where A = 0, the special counter counts
to 10. The number in the special counter is retained until a multiply,
divide, or other special left has been executed. In all these cases it is
cleared before the new number is added to it. Information may be obtained
from the special counter by means of two commands.
ADD SPECIAL COUNTER (spc+~ 16). Add (algebraically) the
number in the special counter scaled 10-10 to the number in the A register.
SUBTRACT SPECIAL COUNTER (spc-~ 17). Subtract (alge:braically) the number in the special counter scaled 10-10 , from the number
in the A register.
As in the addition commands, there is a possibility of overflow. Also,
the special counter can contain a forbidden combination (when A =
o before spl). In such a case, the execution of the special counter (either
add or subtract) command will signal the forbidden combination alarm,
and the computer halts.

PROGRAMMING AND CODING

2-103

EXTRACT (ex x, 63). In normal operation, storage location x will
contain a combination of O's and l's. This number is referred to as an
extract combination. For the digits of the extract combination that are
zeros, replace the corresponding digits in the A register including the sign
by zeros. For the digits of the extract combination that are ones, leave
the corresponding digits in the A register, including the sign, unchanged.
Loop Transfer.
BLOCK TRANSFER INTO A LOOP (bl (4) ~ x, 34). Block transfer into the 4000 loop the 20 words at storage location x through storage
location x 19, the main storage and loop addresses corresponding modulo
20. The commands bl(5) ~ x, bl(6) ~ x, bl(7) ~ x are executed in the
same way as the above command, the 20 words being blocked into the
5000, 6000, and 7000 loops respectively. Because it is not possible to block
transfer from one loop to another, all blocking commands are interpreted
modulo 4000. Information transferred from main storage into a highspeed loop remains in main storage.
BLOCK TRANSFER INTO MAIN MEMORY (bl(4) ~ x, 24).
Block transfer into 20 main storage positions starting at storage location x
the words in the 4000 loop. The words will go into main storage locations
corresponding modulo 20 to their loop addresses. The bl(5) ~ x, bl(6) ~
x, bl (7) ~ x commands are defined as above with the exception that 5000,
6000, and 7000, respectively, are substituted for 4000. After execution of
the command, the information is retained in the loop until new information
is written in.

+

Change Control.
UNCONDITIONAL CHANGE OF CONTROL (cu y, 20). Change
control unconditionally to storage location y. This command replaces the
contents of the control counter with the address part of the cu command.
CONDITIONAL CHANGE OF CONTROL (cc y, 28). If the
overflow toggle is set, change control to y and reset the overflow toggle to O.
If the overflow toggle is not set,. ignore this command.
Control Block Transfer. The two commands listed below and two
of the commands under Control-Record are a combination of change of
control commands and block transfer.
BLOCK AND UNCONDITIONAL CHANGE OF CONTROL
(cub y, 30). Block transfer into the 7000 loop the words at 20 consecutive
locations starting at main storage location y, and change control to the
image y in the 7000 loop; y is interpreted modulo 4000. It is important to
note that the words occupy locations in the 7000 loop which are congruent

2-104

DIGITAL COMPUTER PROGRAMMING

modulo 20 to their previous main storage addresses. Change of control is
effected by replacing the first two digits in the address part of the command
word by 70 and placing this in the control counter. This command, therefore, automatically changes control to the 7000 loop.
BLOCK AND CONDITIONAL TRANSFER OF CONTROL (ccb
y, 38). If the overflow toggle is set, this command acts in the same way
as the cub y command described in the previous paragraph. If the overflow toggle is not set, this command is ignored.
Since the control counter performs the operation of counting up one
only after the command word has been fetched, it can be seen readily that
the cub command must replace the first two digits by 70, not merely replace
the first digit by 7. If, say, a cub 2999 were executed and only the first
digit were replaced by 7, one command execution would cause a control
change from the 7000 loop into main storage.
Control-Record.
UNCONDITIONAL CHANGE OF CONTROL AND RECORD
(cuR y, 21). Clear the R register; replace its four most significant digits
with the contents of the control counter; and change control unconditionally to storage location y. This command records the address from which a
departure into a subroutine has been made and makes it possible to provide
in advance for a control change to the next address in the main routine.
,CONDITIONAL CHANGE OF CONTROL AND RECORD (ccR
y, 29). If the overflow toggle is set, clear the R register, replace its four
most significant digits with the contents of the control counter, and change
control to storage location y. If the overflow toggle is not set, ignore this
command.
BLOCK, UNCONDITIONAL CHANGE OF CONTROL AND
RECORD (cubR y, 31). Clear the R register and replace its four most
significant digits with the contents of the control counter; block transfer
the words in storage location y and the following 19 locations into the
7000 loop and change control unconditionally to the number corresponding
to y in the 7000 loop.
BLOCK, CONDITIONAL TRANSFER OF CONTROL AND
RECORD (ccbR y, 39). If the overflo\v toggle is set, effect a cubR y
command. If the overflow toggle is not set, ignore this command.
All block transfer commands are interpreted modulo 4000. The y's in
the commands that perform a blocking operation are interpreted modulo
4000, while those in other commands are interpreted modulo 8000. These
commands do not disturb the contents of any register.
ZERO CHECK (z y, 04). If the A register does not contain ±O
before the execution of this command, change control to storage location

PROGRAMMING AND CODING

2-105

y. If the A register contains ±O, ignore this command (-0 is changed
to +0).
SIGN COMPARE (sgc x, 73). If the sign of the A register is the
same as the sign of the word in storage location x, do not set the overflow
toggle. If the sign of the A register is not the same as the sign of the word
in storage location x, set the overflow toggle.
The SIGN COMPARE command is usually followed by a cc, ccR, ccb,
or ccbR command. If it is not, the setting of the overflow toggle will cause
the machine to stop. It is only because of the sgc x command that the
programmer need know the sign of zero.

B Register.
REPLACE B (B x, 72). Set the B register to the last four digits in
storage location x. The sign of the number in x has no bearing on the
setting of B.
INCREASE B (B+, 32). Add 1 to the contents of the B register.
If the B register before the execution of a B+ command contains 9999,
it will contain 0000 after the execution of the command.
B TO A (B ~ A, 11). Clear the A register and then replace its four
rightmost digits with the contents of the B'register. The B register is not
changed by this command.
DECREASE B (B- y, 22). If the B register before the execution
of this command did not contain zero, subtract 1 from the contents of the B
register and change control to storage location y. If the B register before
the execution of this command contained zero, do not change control. In
this case the command leaves the B register set to 9999.
STOP (s, 08). Halt the machine. The operator can continue his
program by pressing the CONTINUOUS button.
Input-Output Instructions.
Paper Tape and Keyboard Input. The INPUT SELECTOR switch
may be set to OPTICAL READER, MECHANICAL READER (on the
Flexowriter) or KEYBOARD.
INPUT (in x 00). Start reading the first word on the tape or received
from the keyboard into storage location x. Read following words into the
next consecutive locations. (See Special Use of the Sign Column below.)
SINGLE DIGIT ADD INPUT (dA 10). Algebraically, add to the
contents of the A register in the Ala position the positive value of the
number punched on the keyboard or read by the mechanical reader or
photoelectric reader. When the command is executed, the machine will
stop until a digit has been entered, after which it resumes operation.
SPECIAL USE OF THE SIGN COLUMN. Words containing numbers other than a or 1 in the sign column are used for control of the input

2-106

DIGITAL COMPUTER PROGRAMMING

device and for B modification of words during input. A 2 or 3 placed in the
sign column will cause the address part of the word to be modified by the
B register as the word is read into storage. In storage, the word will have
a positive sign if there was a 2 in the sign column, a negative sign if there
was a 3 in the sign column. In both cases, the word will be stored with
the contents of the B register added to its address part. This is summarized
in Table 9.
TABLE

9.

SPECIAL USE OF SIGN COLUMN, INPUTS

Sign Column
on Input

B Modification
before Execution

B Modification
on Input

o

No

1

Yes

No
No

2

No

Yes

3

Yes

Yes

0

TO

3

Comments
May be a command
} or part of the data
Sign appears in
storage as 0
Sign appears in
storage as 1

An input sign 4 is used only to control input and causes the command
to be read directly into the C register. The effect of each of these numbers
with cu or STOP appears in Table 10.
TABLE

10.

Sign
Column
4
5

a

SPECIAL USE OF SIGN COLUMN, INPUTS

4

TO

Tape Stops or
Keyboard is
Deactivated

B Modification
before Execution

No
No

Yes

Yes
Yes

Yes

7

No
No

With the IN command, a 6 or 7 in the sign column does not stop the input device.

The commands most often used with an input control digit in the sign
column are cu, cub, in, and stop.
Flexowriter and Paper Tape Output. There are two printout commands. With either of them, the second digit of the address part is a coded
, format instruction to the Flexowriter, Flexowriter punch or console punch.
(The two punches carry along the format instruction as an information
digit for. the typewriter control. It does not affect format until the printing
operation is carried out.) These instructions, which are sensed and carried
out before any other part of the command is executed, are as follows:

PROGRAMMING AND CODING
Second Address Digit

o
1
2
3

4

5
6

7

8
9

2-107

Instruction
None.
Feed out one character-space of blank tape (10 to the
inch). (This instruction has no effect on the Flexowriter.)
Print decimal point and suppress sign digit.
Suppress sign digit and substitute a space for sign digit
when the word is printed.
Translate alphanumerically, two A register digits per
alphanumeric character.
Actuate carriage return.
Actuate tab key.
Stop printout. Idle the computer if any printout command comes up before the typewriter control RESET
is pressed.
Actuate space bar.
None.

PRINT OUT (po n, 03). This command prints out the sign and n
digits of the A register (unless the sign has been suppressed by a 2 or a 3
format instruction), n being interpreted modulo 20. The R register is not
affected. The A register, including the sign, is circulated n + 1 places left.
This operation differs from that of the shift commands in that they do not
shift the sign.
The format instruction digits make it possible to control format completely by proper construction of the computer command word.
PRINT OUT (po f, 07). The po f command carries out the format
instruction contained in the second address digit.
PUNCH OUT (po n, 03; po f, 07). The console punch uses the same
two commands as the Flexowriter and typewriter control with the difference
that the OUTPUT SELECTOR is set to TAPE. The console punch has
no connection with the typewriter control except that its output tape may
be an input to various arrangments of the typewriter control patch panel.
ALPHANUMERIC CODE. Typewriter action corresponding to the
various two-digit combinations read out from the A register is given in
Table 11. Alphanumeric information comes out on the console punch as
pairs of decimal digits. The format instruction (4) accompanies the information so that when the tape is read for printing later it will be translated
by the typewriter control into alphanumeric Flexowriter action.
Since it takes two digits to represent one alphabetic character, a po 0406,
written 0.0000030406, will print out three alphabetic characters from the
A register. Example. If (A) = +.7065464646, and the command mentioned in the above paragraph is executed, the following characters will be
printed out: if6.

DIGIT AL COMPUTER PROGRAMMING

2-108

TABLE 11.
Typewriter Action
L.C.
a
b
c
d
e
f
g
h
j
k
1
m
n

U.C.
A
B
C
D
E
F
G
H
I

J
K
L
M
N

0

0

p
q
r
s
t
u
v
w
x
y
z

P
Q

R
S
T
U
V
W
X
Y
Z

TYPEWRITER ACTION CORRESPONDING TO
VARIOUS TWO-DIGIT CODES

Alphanumeric
Code
20
61
62
63
64
65
66
67
70
71
72
36
73
74
75
76
77
21
22
23
52
53
54
55
56
57

Typewriter Action
L.C.
0
1
2
3
4
5
6
7
8
9

U.C.
)
1/2
&

/
$

%
?

*

+

Lower case
Upper case
Space
Color shift
Ignore
Back space
Tab
Carriage return
Stop

Alphanumeric
Code
40
41
42
43
44
45
26
47
40
51
54
25
26
31
32
33
27
30
34
35
00
01
06
05
07

Punched Card Input-Output.

CARD INPUT ([1000 - Ill] ci x, 44). Read in m cards, starting at
storage location x. The number of words per card, from 1 to 8, is set on
a selector switch. The first three digits of the command word, excluding
sign, are 1000 - m. The x is interpreted as follo\vs:

0000
1000
2000
3000

= 0000

4000
5000
6000
7000

= 1000
= 2000
= 3000

= 0000

= 1000
= 2000
= 3000

8000 = 4000
9000 = 4000

After the command, the storage cells which have received new information
are x through x
mk - 1
(20 - k), where m is the number of cards
read, and k is the setting of the input WORDS PER CARD switch.

+

+

PROGRAMMING AND CODING

2-109

CARD/TABULATOR OUTPUT ([1000 - m] co x, 54). Punch
out m cards, starting at storage location x. The number of words per card,
from 1 to 8, is set on a selector switch. The first three digits of the command word, excluding sign, are 1000 - m. The x is interpreted as for card
input. After the command, the 4000 loop contains the words transferred
from x + mk - 1 + (20 - k) and the 19 preceding cells, where m is the
number of cards punched, and k is the setting of the output WORDS PER
CARD switch.
For tabulator output, the command is the same except that the words
"line" and "printed" are substituted for the words "card" and "punched,"
respecti vely.
Magnetic Tape.
TAPE SEARCH (ts x, 42). In preparation for a TAPE READ or
WRITE command, search for block x on the tape unit designated by the
third digit of the command word. As with word addresses on the drum, x
is the last four digits of the command word. If a TAPE READ or WRITE
command is fetched before the addressed block is found, skip the EXECUTE cycle of the tr or tw command and set the overflow toggle.
TAPE READ (tr x, 40). From the tape unit designed by the third
digit of the command word, read as many consecutive blocks of 20 words
each as are indicated by the first two digits of the command word. Write
these words in successive storage locations beginning with storage location x.
TAPE WRITE (tw x, 50). On the tape unit designated by the third
digit of the command word, write as many consecutive blocks of 20 words
each as are indicated by the first two digits of the command word. These
words will be read from successive storage locations, beginning with
storage location x.
REWIND (rw,52). Rewind the tape in the tape unit, designated by
the third digit of the command word, to the 0000 end. If the rewind
switch on the designated tape unit is in the normal position upon completion of the rewind, the unit will be locked out of the system. If the
switch is in the rewind-ready position, the unit can again be called upon for
a subsequent search, read, or write operation.
Royal-McBee LGP-30 Instruction Logic
A typical small machine is the LGP-30, built by Librascope and marketed by Royal-McBee. It is desk size, its input-output is a Flexowriter,
and it has a single-address instruction code with a 30 binary digit word
length using digital numbers (absolute value less than one). The instruction code for this magnetic drum (30, 0, 0) binary machine is exceedingly

DIGITAL COMPUTER PROGRAMMING

2-110

simple, lacking the complex optimization features of the "next instruction
address" or the recirculating loop. There is only one input and one output
instruction.
List of Instructions. The following list of commands is taken from
an LGP-30 instruction manual (Ref. 66).
Instructiona
B
nI
Bring.

A

nI

S

nI

M

nI

N

nI

D

nI

H

nI

C

nI

Y

nI

R

nI

E

nI

U

nI

T

nI

I
P

x

Z

t

0

Effect

Clear the accumulator, and add the contents of m to it.
Add contents of m to the contents of the accumulator, and retain
the result in the accumulator.
Subtract the contents of m from the contents of the accumulator,
and retain the result in the accumulator.
Multiply the number in the accumulator by the number in
memory location m, and terminate the result at 30 binary places.
Multiply the number in the accumulator by the number in m,
and retain the least significant half of the product.
Divide the number in the accumulator by the number ill memory
location m, and retain the rounded quotient in the accumulator.
Hold. Store contents of the accumulator in m, and retain the
number in the accumulator.
Clear. Store contents of the accumulator in m and clear the
accumulator.
Store only the address part of the word in the accumulator in
memory location m, while leaving the rest of the word undisturbed in memory.
Return address. Add one, to the address held in the counter
register .(C) and record in the address portion of the instruction
in memory location m. The counter register normally holds the
address, of the next i:qstruction to be executed.
Extract, or logical product order, i.e., clear the contents of the
accumulator to zero in those bit po·sitions occupied by zeros in m.
Transfer control to m unconditionally, i.e., get the next instruction from m.
'
Test, or conditional transfer. Transfer control to m only if the
number in the accumulator is negative.
Input. Fill the accumulator from the Flexowriter.
Print a Flexowriter symbol. The symbol is denoted by the track
number part of the address (x).
Stop. Contingent on five switch (T 1 · · · Ts) settings on the
control panel.

a The address part of the instruction is denoted by m when it refers to a memory
]ocation.

PROGRAMMING AND CODING

2-111

Instruction Logic of the Soviet Strela (Arrow)

A typical general purpose digital computer using three-address instruction logic is the Strela (Arrow) constructed in quantity under the leadership
of Iu. Ia. Basilewskii of the Soviet Academy of Sciences, and described in
detail by Kitov (Ref. 61). This computer uses a (35, 6, 0) binary floating
point number system. Its instruction word, of 43 digits, contains a sixdigit operation code, and three 12-digit addresses, with one breakpoint bit.
In octal notation, two digits represent the operation, four each the addresses, and one bit the breakpoint. This machine operates with up to
2048 words of high-speed cathode ray tube storage.
Input-output is ordinarily via punched cards and punched paper tape.
A "standard program library" is attached to the computer as well as magnetic tape units (termed "external accumulators" below). Note. This
computer is different from both the BESM described by Lebedev (Ref. 65)
and the Ural reported by Basilewskii (Ref. 7). Apparently, it is somewhat
lower in performance than BESM.
Since all arithmetic is ordinarily in floating point, "special instructions"
perform fixed point computations for instruction modifications.
Ordinarily instructions are written in an octal notation, but external to
the machine operation symbols are written in a mnemonic code. The
notation used is similar to that described below for the EASIAC. The
two-digit numerals are the octal instruction equivalent.
Arithllletic and Logical Instructions.

01. + a. ~ y. Algebraic addition of (a) to ({3) with result in 'Y.
02. + 1 a. ~ y. Special addition, used for increasing addresses
of instructions. The command (a) or ({3) is added to the number ({3) or (a)
and the result sent to the cell with address 'Y. As a rule, the address of the
instruction being changed corresponds to the address 'Y.
03.
a. ~ y. Subtraction with signed numbers. From the
number (a) is subtracted the number ({3) and the result sent to 'Y.
04. - 1 a. ~ y. Difference of the absolute value of two numbers
I(a)1 - I ({3)1 = ('Y).
05. X a. ~ y. Multiplication of two numbers (a) and ({3) with
result sent to 'Y.
06. " a. ~ y. Logical multiplication of two numbers in cells
a and {3. This instruction is used for extraction from a given number or
instruction a part defined by the special number ({3).
07. V a. ~ y. Logical addition of two numbers (a) and ({3) and
sending the result to cell 'Y. This instruction is used for forming numbers
and commands from parts.

2-112

DIGITAL COMPUTER PROGRAMMING

10. Sh a. p y. Shift of the contents of cell a by the number of
steps equal to the exponent of the ({3). If the exponent of the ({3) is positive then the shift proceeds to the left, in the direction of increasing value;
if negative, then the shift is right. In addition, the sign of the number,
which is shifted out of the cell, is lost.
II. - 2 a. p y. Special subtraction, used for decreasing the
addresses of instructions. In the cell a is found the instruction to be transformed, and in cell {3 the specially selected number. Ordinarily addresses
a and 'Yare identical.
12. ~ a. p y. Comparison of two numbers (a) and ({3) by
means of digital additions of the numbers being compared modulo two. In
the cell 'Y is placed a number possessing ones in those digits in which inequivalence results in the nuinbers being compared.
Control Instructions.

13. C a. p 0000. Conditional transfer of' control either to instruction (a) or to instruction ({3), depending on the results of the preceding
operation. With the operations of addition, subtraction, and subtraction
of absolute values, it appraises the sign of the result: for a positive or zero
result it transfers control to the command (a), for negative results to the
command ({3).
The result of the operation of multiplication is dependent on the relationship to unity. Transfer is made to the command (a) in the case where the
result is greater than or equal to one, and to command ({3), if it is smaller
than one.
For conditional transfer after the operation of comparison, transfer to
the instruction (a) is made in the case of equality of binary digits, and to
({3) when there is any inequivalence.
After the operation A (logical sequential multiplication) the conditional
transfer command jumps to the instruction (a) when the result is different
from zero, and to instruction ({3) when it is equal to zero.
A forced comparison is given by

C a. a. 0000
The third address in this command is not used and in its place is put zero.
14. 1-0 a. 0000 0000. This instruction is executed parallel
with the code of the other operations, and guarantees bringing into working
position in good time the zone of the external accumulator (magnetic tape
unit) with the address a.
15. H 0000 0000 0000. This instruction executes an absolute
halt.
Group Transfer Instructions. Special instructions for group transfer serve for the accomplishment of a transfer of numbers to and from the

PROGRAMMING AND CODING

2-113

accumulators. In the second address in these instructions stands an integer,
designating the quantity of numbers in the group which must be transferred. Group transfers always are produced in increasing sequence of
addresses of cells in the storage.
16. Tl 0000 n y. The instruction Tl guarantees transfer from
a given input unit (with punched cards, perforated tape, etc.) into the
storage. In the third address 'Y of the instruction is indicated the initial
address of the group of cells in the storage where numbers are to be written.
With punched paper tape or punched cards the variables are written in
sequence, beginning with the first line.
17. T2 0000 n y. The instruction T2 guarantees transfer of a
group of n numbers from an input unit into the external accumulator in
zone 'Y.
20. T3 a. n y. This instruction guarantees a line-by-line sequence of transfers of n numbers from zone a of the external accumulator
into the cells of the storage beginning with the cell with address 'Y.
21. T4 a. n 0000. This instruction guarantees the transfer
to the input-output unit (to punched paper tape or punched cards) of a
group of n numbers from the storage, beginning with address a. The
record on punched paper tape or punched cards as a rule will begin with
the first line and therefore a positive indication of the addresses of the
record is not required.
22. T5 a. n y. Instruction T5 guarantees transfer of a group
of n numbers from one place in the storage with initial address a into
another place in the storage with initial address 'Y.
23. To a. n y. Instruction To guarantees transfer of a group
of n numbers from the storage with initial address a into the external
accumulator with address 'Y.
24. T7 a. n 0000. Instruction T7 serves for transfer of n
numbers from the zone of the external accumulator with address a into
the input-output unit.
Instructions T2 and T7 cannot be performed concurrently with other
machine operations.
Standard Subroutine Instructions. Certain instructions in the
Strela, although written as ordinary instructions are actually "synthetic"
instructions which call on a subroutine for computation of the function
involved. The amount of machine time (number of basic instruction
cycles) for an iterative process depends on the required precision of the
computed function. The figures given below are based on approximately
ten-digit decimal numbers with desired precision one in the tenth place.
25. D a. p y. This standard subroutine serves for execution
of the operation of division: The number (a) is divided into the number
({3) and the quotient is sent to cell 'Y.

2-114

DIGITAL COMPUTER PROGRAMMING

The actual operation of division is executed in two steps: the initial
obtaining of the value of the inverse of the divisor, by which the dividend
is then multiplied. The computation of the inverse is given by the usual
Newton formula, originally used with the ED SAC (Ref. 108).

Yn+1 = Yn(2 - Yn X ).
For x = d . 2P , where! < d < 1, the first approximation is taken as 2-p •
The standard subroutine takes 8 to 10 instructions and can be executed in
18-20 machine cycles (execution time for one typical command).
26. V
a. 0000 "I. This instruction guarantees obtaining the
value
from the value x = (a) and sending the result to cell 'Y. Initially
I/VX is computed by the iteration formula

vx

where the first approximation is taken as
yo =

2[p/2],

the bracket indicating "integral part of." After this the result is multiplied
by x to obtain
This standard subroutine contains 14 instructions and
is executed in 40 cycles.
27. eX a. 0000 "I. This instruction guarantees formation of
eX for the value x = (a) and sending the result to cell 'Y. The computation
is produced by means of expansion of eX. in a power series. The standard
subroutine contains 20 instructions and is elmcuted in 40 cycles.
30. In x a. 0000 "I. This instruction guarantees formation of
the function In x for the value x = (a) and sending the result to location 'Y.
Computation is produced by expansion of In x in series. The subprogram
contains 15 instructions and is executed in 60 cycles.
31. sin x a. 0000 "I. This instruction guarantees eIcecution of
the function sin x and sending the result to location 'Y. The computation
is produced in two steps: initially the value of the argument is translated
into the first quadrant, then the value of the function is obtained by a
series expansion. The subroutine contains 18 instructions and is executed
in 25 cycles.
32. DB a. n "I. This instruction performs conversion of a
group of n numbers, stored in locations a, a
1, ... from binal"y-coded
decimal into binary and sending of the result to locations 'Y, 'Y
1, ....
The subroutine contains 14 instructions and is executed in 50 cycles (for
each number).
33. BD a. n "I. This instruction performs the conversion of a
group of n numbers stored in locations a, a
1, ... from the binary system into binary-coded decimal and sends them to locations 'Y, 'Y + 1, .. • .

vx.

+

+

+

PROGRAMMING AND CODING

2-115

The subroutine contains only 30 instructions and is executed with 100 cycles
(for each number).
34. MS a. n 'Y' This is an instruction for storage summing.
This instruction produces the formal addition of numbers, stored in locations beginning with address ex, and the result is sent to location,... Numbers and instructions are added in fixed point. This sum may be compared
with a previous sum for control of storage accuracy.
Instruction Logic of the MIDAC

The MIDAC, Michigan Digital Automatic Computer (Ref. 25), was
constructed on the basis of the design of the SEAC at the National Bureau
of Standards. Its instruction code is particularly of interest because it
incorporates the index register concept into a three-address binary instruction. Numbers in this machine are (44,0,0) fixed points. The word length
is 45 binary digits with serial operation.
Word Structure. The data or address positions of an instruction are
labeled the ex, {j, and ,.. positions. Each contains twelve binary digits
represented externally as three hexadecimal digits. Four binary digits, or
one hexadecimal digit, are used to convey the instruction modification or
relative addressing information. The next four binary digits or single
hexadecimal digit represents the operation portion of the instruction. The
final binary digit is the halt or breakpoint indicator for use with the instruction.
For example, the 45-binary-digit word,
000001100100000011001000000100101100000001011
considered as an instruction would be interpreted as
ex

000001100100

{j-y

000011001000

000100101100

abcd
0000

Op
0101

halt
1

In external hexadecimal form this would be written

064 Oc8 12c 0 5
The above binary word is the equivalent machine representation of the
following instruction: "Take the contents of hexadecimal address 064, add
to it the contents of hexadecimal address Oc8, and store the result in hexadecimal address 12c. There is no modification of the 12-binary-digit
address locations given by the instruction. Upon completion of the operation, stop the machine if the proper external switches are energized." The
binary combination represented by 5 is the operation code for addition.
Data or Addresses. The addresses given by the twelve binary digits
in each of the three locations designate in the machine the individual
acoustic storage cells and blocks of eight magnetic drum storage cells. The

2-llb

DIGITAL COMPUTER PROGRAMMING

addresses from 0 to 1023 (decimal) or 000 to 3FF (hexadecimal) correspond
to acoustic storage cells. The addresses from 1024 to 4095 (decimal) or
400 to FFF (hexadecimal) correspond to magnetic drum storage blocks. In
certain operations, however, the addresses 0 to 15 (decimal) or 0 to F
(hexadecimal) represent input-output stations rather than storage locations.
These twelve-binary-digit groups will in some cases be modified by the
machine in order to yield a final twelve-binary-digit address. The method
of processing will depend on the values of the instruction modification
digits. After modification, the final result will then be interpreted by the
control unit as a machine address.
In some instructions, namely those that perform change of control
operations, which involve cycling and counting rather than simple arithmetic operations on numbers, the a and f3 positions in an instruction are
not considered as addresses. In those cases, they are used instead as
counters or tallies. In other instructions, which do not require three
addresses, but only one or two, the f3 position is not considered as an
address. In these cases, the oddness or evenness of the f3 address is used
to differentiate between two operations having the same operation code
digits. That is, the parity of binary digit P22 is used as an extra function
designator.
Instruction Modification Digits. The four binary digits P9-P6 are
used as instruction modification or relative addressing digits. Their normal
function is relatively simple; nevertheless, the possible exceptions to the
general rule can make their behavior complicated. These four digits are
labeled the a, b, c, and d digits. Ordinarily the a digit is associated with
the a position, the b digit with the f3 position, and the c digit with the 'Y
position in an instruction.
When binary digit P22 (or the f3 position) is used in an instruction to
represent extra operation information, the instruction modification digit b
is ignored. In the case of input and output instructions, when the various
address positions represent machine address locations on the drum, inputoutput stations, or block lengths, and modification of these addresses is not
desired in any case, the corresponding relative addressing digits are ignored.
The purpose of the instruction modification digits is to tell the machine
whether or not to modify the twelve binary digits making up the corresponding address position in an instruction by addition of the contents of
one or the other of two counters. In the normal case, if the a, b, or c digit
is a zero, the twelve binary digits in the corresponding position are interpreted, unchanged, as the binary representation of the machine address of
the number word to be processed by the instruction.
If one or more of the a, b, or c digits is a one, the contents of one of two

PROGRAMMING AND CODING

2-117

auxiliary address counters is added to the corresponding twelve binary
digits to yield a final address usually different from that given by the
original twelve-digit portion of the instruction word. The addresses are
then said to be relative to the counter.
The two counters involved in the address modification feature of the
MIDAC are known as the instruction counter and the base counter. In
the normal case, if the fourth instruction modification or d digit is a zero,
the contents of the instruction counter will be added to the contents of the
various twelve-digit addresses (dependent on the values of the a, b, and c
digits) before further processing of the instruction. If the a digit is one and
the d digit zero, the contents of the instruction counter will be added to the
a address; similarly for band d digits and {1 address, etc.
If the d digit is a one, the contents of the base counter will be normally
added to the contents of the twelve digits in the a, {1, and "I positions (again
dependent on the values of the a, b, and c digits), before further processing
of the results. If the a digit is one and the d digit one, the contents of the
base counter will be added to the a address, etc.
The effect of the instruction modification digits may be summarized as
follows:
The contents of the two counters will be designated by Cd (d = 0, 1).
Co = contents of the instruction counter,
C1 = contents of the base counter.
Then the modified addresses a', {1', and "I' are related to the a, {1, and "I
addresses appearing in the instruction by the following:
"I'

=

"I

+ CCd

(a, b, c, d

= 0, 1).

In certain instructions addresses relative to one of the two counters may
be prohibited. Thus, if in a particular instruction a may be relative only
to the instruction counter, then for that instruction
a'

= a

°

+ aCo,

no matter whether the d digit is a or a 1.
The notation (a'), ({1'), or ("I') is used to indicate the word stored in the
location whose address is a', {1', or "I'.
Instruction Counter. The instruction counter is a twelve-binary
digit (modulo 4096) counter which contains the binary representation of the
address of the instruction which the control unit is processing or is about to
process. In normal operation when no change of control operation is being
processed, the contents of the instruction counter is increased by one at
the completion of each instruction. Thus, normally the next instruction to

2-118

DIGITAL COMPUTER PROGRAMMING

be processed is stored in the acoustic storage cell immediately following the
cell which contains the present instruction.
A change of control operation is one ,vhich selects a next instruction not
stored in sequence in the acoustic storage. That is, at the completion of
such instructions the contents of the instruction counter is not increased by
one, but instead is changed entirely.
Base Counter. The base counter is a second twelve-binary-digit
counter (modulo 4096), physically identical to the instruction counter,
which contains the binary representation of a base number or tally. Unlike
the instruction counter, however, the base counter does not sequence
automatically, but remains unchanged until a change of base instruction is
processed. This counter serves two primary purposes, dependent on the
usage to which it is put:
1. It may contain the address of the initial word in a group, thus serving
as a base address to which integers representing the relative position of a
given word in the group of words may be added by using the address
modification digits.
2. It may contain a counter or tally which can be increased by a base
instruction. This instruction makes use of the address modification digits
to change the counter so as to count the number of traversals of a particular
cycle of instructions.
Instruction Types. Instructions used in MIDAC can be divided into
three categories: change of information, change of control, and transfer
of information. The first category can be further subdivided into arithmetic and logical instructions. In the arithmetic instructions are included
addition, subtraction, division, various forms of multiplication; power
extraction, number shifting; and number conversion instructions. The
sole logical instruction is extract, which modifies information in a nonarithmetic fashion.
The transfer of information or data transfer instructions include transfers
of individual words or blocks of words into and out of the acoustic storage
and drum and magnetic tape control.
The possible change of control instructions includes two comparisons
that provide different future sequences dependent on the differences of two
numbers. In the compare numbers or algebraic comparison, the difference
is an algebraic, signed one. In the compare magnitudes or absolute comparison, the difference is one between absolute values. Two other instructions, file and base, perform other tasks beside transferring control. The
file instruction transfers control unconditionally. The file instruction files
or stores the contents of the base or instruction counter in a specific address
position of a particular word in the storage. The base or tally instruction

PROGRAMMING AND CODING

2-119

provides a method for referring addresses automatically relative to the
address given by the base counter, irrespective of its contents. The base
instruction also gives a conditional transfer of control.
The nineteen MIDAC instructions can be described functionally as
follows:
Change of Information.
1. Add. (a') + ({3') is placed in "'('. Result must be less than 1 in
absolute value.
2. Subtract. (a') - ({3') is placed in "'('. Result must be less than
1 in absolute value.
3. Multiply, Low Order. The least significant 44 binary digits of
(a') X ({3') are placed in "'('.
4. Multiply, High Order. The most significant 44 binary digits of
(a') X ({3') are placed in "'('.
5. Multiply, Rounded. The most significant 44 binary digits of
(a') X ({3') ± 1.2-45 are placed in "'('. The 1.2-45 is added if (a') X ({3')
is positive, and subtracted if (a') X ({3') is negative.
6. Divide. The most significant 44 binary digits of ({3')/ (a') are
placed in "'('. (N ote the inversion of order of a and (3.) Result must be
less than 1 in absolute value.
7. Power Extract. The number n . 2-44 is placed in "'(' where n is
the number of binary O's to the left of the most significant binary 1 in (a').
The b digit is ignored; (3 may be any even number. If (a') is all zeros, zero
is placed in "'('.
B. Shift Number. The 44 binary digits immediately to the right
of the radix point in (a') . 2
~

¢

I
a

{3

"(
a'

{3'

"('

(a')
({3')

("(')
~

Ci

less than
grea ter than
greater than or equal to
is not identical to
absolute value
the cell whose floating address appears in the first component of an
instruction
the cell whose floating address appears in the second component
of an instruction
the cell whose floating address appears in the third component of
an instruction
the cell whose address is obtained by modifying the address of a
by the contents of the proper tally
the cell whose address is obtained by modifying the address of {3 by
the contents of the proper tally
the cell whose address is obtained by modifying the address of "(
by the contents of the proper tally
the contents of a'
the contents of {3'
the contents of "('
becomes the new contents of
instruction sequencer

Characters.

0

1
2
3
4
5
6
7
8
9
A
B
C
D
E

F

a
b
c
d
e
f

G
H
I

g
h

W w
X x

J

j
k

Y
Z
&

K
L
M
N
0
p
Q

R
S
T
U
V

I
m
n
0

p
q
r
s
t
u
v

/

y
z
1

"2
1

$

"4

%

"4

?
!

*

(
)

"
¢

3

(Back space)
(Space)
(U pper case shift)
(Lower case shift)
(Tab)
(Carriage return)
(Color shift)
(Back space)

2-124

DIGITAL COMPUTER PROGRAMMING

TABLE 12.
Operation
Code
add
sub
mul
div
xfr
cmp

EASIAC, SUMMARY

Operation
Add
Subtract
Multiply
Divide
Transfer
Compare

OF

OPERATIONS

Symbolic Notation
(a') + (f3') ~ "('
(a') - (f3') ~ "('
(a') X (f3') ~ "('
(a') + (f3') ~ "('
(a') ~ "('
if (a') ~ ({1'): (C i )
if (a') < (f3'):
if
~ ({1'): (C i )
if (a') < (f3'):

l(a')1

jmp
lev
ret

Compare absolute
values
Jump
Leave}
Return

set-x
ndx-x
cyc-x

Set tally x
Index tally x
Cycle tally x

fil-x
stp

File tally x
Stop

pno

Print out numbers

rno

Read in numbers

pch

Print out alphanumeric
characters

rch

Read in alphanumeric
characters

sqr
s-c

Square root
Sine-cosine

V (a') ~"('

atn

Arctangent

arctan (f3') ~ "('

cav

+ 1 ~ Ci

"(' ~ Ci
1 ~ Ci
"(' ~ Ci

+

"(' ~ C i

"(' ~ Ci
Address of order immediately following
last unpaired lev order ~ Ci
(a') ~ Tx
(a') + (Tx) ~ Tx
if (Tx) + 1 ~ (f3'): 0 ~ T x,
(C i ) + 1 ~ C i
if (Tx) + 1 < (f3'): (Tx) + 1 ~ T x,

"(' ~ Ci
(Tx) ~ "('
Halt computer. Upon pushing start
button, process next instruction and
continue
Print (a') numbers starting at {1' with
("(') digits to the right of the decimal
point. Print carriage returns after
each number but the last
Read in (a') numbers from station (f3')
and store, starting at "('
If (a') is a number, print (a') characters
starting at "('
If (a') is a character, print characters
[starting at "(' to, but not including, the
first occurrence of (a')
If (a') is a number, read in (a') characters from station (f3') and store,
starting at "('
If (a') is a character, read characters
from station (f3') and store, starting at
"(' to, and including, the first occurrence of (a')
sin (a') ~ {1', cos (a') ~ "('
(a')

PROGRAMMING AND CODING

2-125

EASIA C Error Prin tou t.
Code No.

1.

2.
3.
4.
5.
6.

7.
8.
9.
10.

Error
Trying to interpret a noninstruction
More than 5 unpaired lev instructions
A ret instruction with no unpaired lev preceding
In a simple loop more than 250 times
Attempt to jump to, or to obtain an instruction or operand
from a nonexistent cell (i.e., a cell before the first instruction
or more than 250 cells beyond the first)
Attempt to divide by 0, take the arctan of 0/0, or take the
square root of a negative number
Not used
Not used
Operand not right type of information
Operand not integer, or not in required range
Attempt to read, print, or generate a number too large
Attempt to put result or to read in to a cell already containing
an instruction

Address where computation stopped
Error code (see above)
Contents of: Tl
"
"T2
"
"T3
"
"T4
"
"Ts
"
"To

002a07
8
2

o
o
1

o

o
o

"

OOOaOO
001aOO
000a07

004aOO
000b21

1
14

Jump table

Demonstration Problem.

Problem. Evaluate f(x) = aox4 + alx3 + a2x 2 + a3X + a4 for x =
1, 2, 3, ... , 25.
After the 25 values of x have been evaluated, print out the 25 values of
f(x).
The values of the coefficients are:
a2 = 0.02,

ao = 1,
f(x) = X4

a3 = -23,

+ 1.5x3 + 0.02X2 -

23x - 56.

a4 = -56.

2-126

DIGITAL COMPUTER PROGRAMMING

For easier computation let
f(x) = {[(aox

+. aI)x + a2]x + a3}x + a4.

Analysis. For one value of x the problem would consist of:
1. Calculating aox.
2. Calculating aox + aI.
3. Calculating (aox
aI )x.
4. Calculating (aox + aI)x + a2.
5. Calculating [(aox + aI)x + a2]x.
6. Calculating [(aox + aI)x + a2]x + a3.
7. Calculating {[(aox + al)x + a2]x + a3}x.
8. Calculate f(x) = {[(aox + aI)x + a2]x + a3}x + a4.

+

Additional Steps.
9. Setting any tallies needed.
10. Reading in a new value of x for the iterative process.
11. Storing the value of f(x).
12. Counting the number of times an iteration takes place.
13. Printing out the 25 values of f(x).
14. Stopping the computer.
15. Writing all the constants and temporaries which will be needed
during computation.
Flow Diagram.

Yes
No

Print out 25
values f{x)

Stop

PROGRAMMING AND CODING

2-127

PROGRAM FOR EVALUATION OF A POLYNOMIAL

Instructions
fa--aOO
fa--aOl

Numbers
fa-bOO

fa--cOO

cO2
cOO* ('1'1)
dOO
cOO
cOO
eOO
eOO
cOO
eOO
eOO
eOO
lc02
dOO
2c02

0
cO2
bOO
lbOO
dOO
2bOO
dOO
3bOO
dOO
4bOO
0
0
2c02
cOl

0
dOO
cOO
cOO
cOO
cOO
cOO
eOO
cOO
cOO
cOl * ('1'1)
0
aOl
lc02

set-l
add
mul
add
mul
add
mul
add
mul
add
xfr
ndx-l
cmp
pno

0

0

0

stp

1
1.5
.02
-23.
-56.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

fa-cOl
empty--24
fa-cO2

fa-dOO
fa-eOO
end

o ~'1'l
x = Xi, current X
aoX
aoX
al
(aox
al)x
(aox
al)x
a2
[(aox
al)x
a2jx
[(
a2]x
a3
([
]x
a31x
f(x) = I
Ix a4
f(x) ~ cOO*('1' 1)

+
+
+
+
)+

+

+
+
+

+

+

1
'1'1 ~ '1'1
< 25? Yes, to aOl; no, go on
Print out 25 values of f (x) beginning with cell cOl.
Stop computer

x

ao~

a1
a2
a3
a4

coefficients

values of x
J

i

i

!

}Answersf(x)

25 temporaries
0
1
25

Constant 0
Constant 1
Constant 25
Current x, empty cell
Partial answers, empty cell

2-128

DIGITAL COMPUTER PROGRAMMING

7. TRADITIONAL PROGRAMMING TECHNIQUES

Method. The traditional hand-programming method for a scientific or
engineering problem for a high-speed digital computer occurs in the following sequence:
1. Selection of a numerical method of solution, a priori appraisal of
errors, selection of finite difference step size, and decision as to digit length
of numbers (single or multiple precision).
2. Preparation of a flow diagram using the symbology of Sect. 4 or a
similar one.
3. Static translation from the flow diagram into a sequence of instructions and listing of the constants, both in the original language of the
machine (generally octal or hexadecimal notation for binary machines,
decimal or alphanumeric decimal for equipment using that machine
notation).
4. Entry into the machine of this sequence of information, now considered merely as a string of machine words, on punched cards or punched
paper tape.
5. Checking or debugging of the written procedure by comparison of
contents of the machine registers during and after performance of the
problem, with previously obtained partial results computed by hand.
6. Upon obtaining deviations between the hand-computed results and
those read out on lights or by printer from the machine, a complete search
of the pertinent portion of the program to determine the error or errors.
7. Correction of the errors by changing the set of coded instructions,
with or without the corresponding change in the flow diagram, and then a
return through steps 3 through 7 until all results check with the handcomputed values. (Mistakes may occur in the hand computation.)
8. Upon complete satisfaction that the program performs as it should,
entry of supplementary parameters in machine language and performance
of all necessary cases.
PrograInIning Errors. The above sequence is precisely that of Fig. 1,
Sect. 1. However, the repetition of steps 3 through 7 are the most routine,
detailed, and time-consuming part of the process. These steps are most
prone to error and at the same time require the lowest level of basic skills.
One minor mistake in transcription, hand conversion, or data punching,
if not caught, can cause major mistakes in output, or a frustrating search
requiring vast outlays of programmer and computer time.
Once a programming error is discovered, instructions must be changed,
and often inserted or deleted. In the latter case, succeeding instructions
will acquire new addresses, and any instructions referring to them must be
changed to refer to the new address. One minor error can therefore cause
a chain reaction of corrections. This may be avoided by patching or

PROGRAMMING AND CODING

2-129

inserting transfer of control instructions to remote unused locations, where
insertions may be made without complete renumbering of addresses.
Similar insertions of transfer of control instructions can be used to accomplish deletions. These procedures tend to cause further programming
errors.
Physical Restrictions on Programming

One ever present set of restrictions on digital computer programming
is that set of measures of magnitude (human effort, elapsed time, computer
time, computer storage) that describe the programming process and its
relation to the external practical world. Unfortunately, evaluation of most
of these measures is mainly a matter of experience.
Human Time. No formulas are available that can predict the amount
of human time required to program a particular problem, given an original
general description of a problem. Experience indicates that such time
estimates are usually underestimated. The advent of automatic programming has generally decreased the amount of programmer time needed.
If an estimate of the (static) number of instructions is available (this
may be obtained by comparison with previously written programs), then
an estimate of human cost (and therefore time) may be based on the
common estimate for cost of hand-coded programs of $5.00 per checked out
instruction. This figure compares very unfavorably, of course, with corresponding programming costs using the translator-compilers of the IT,
Fortran, Math-matic types.
Elapsed Time. Overall elapsed time is a function of the previously
discussed variables and is particularly a function of the machine aids to the
programming process available. Regular routine program debugging
procedures, such as described by Pietrasanta (Ref. 82), can aid markedly
in decreasing elapsed time. Combined use of translators with hand-coded
insertions, if easily available (such as with the IT system, see Sect. 12),
may cut elapsed programming time markedly.
General discussions of the programming process from this point of view
are available, for scientific problems, in Carr (Ref. 20), and for data processing problems, in Gottlieb and Hume (Ref. 113).
Computer Time. The original estimate was made by Burks, Goldstine,
and von Neumann (Ref. 19) that in most scientific problems the multiplication time of a computer would be the dominant factor, and therefore
an estimate of the number of such operations, multiplied by the time per
multiplication, would give a reasonable time estimate. The most satisfactory method of such estimations at present, however, is still an experimental one for any particular problem.
Computer Storage. Sooner or later almost every computer will find
its primary storage completely saturated by a problem, which must then

2-130

DIGITAL COMPUTER PROGRAMMING

be broken up into component parts and fed into the main storage'in smaller
blocks. If there is no secondary storage, this process is dependent on the
flexibility and speed of external input-output equipment, such as punched
cards or punched paper tape. If there is secondary internal storage, such
as magnetic drum storage or magnetic tape units, the amount of time that
a problem requires will depend very strongly on the method of division
of a problem into pieces, and the routing of these pieces in and out of main
working storage in the most efficient sequence. Some of the obvious
procedures possible are:
1. Storage of data in main storage and bringing in programs in blocks
from secondary storage.
2. Storage of program in main storage and bringing in data in blocks
from secondary storage.
3. Mixture of (1) and (2).
A discussion of the third process, with the inclusion of built-in checks, is
given in Brown et al. (Ref. 18). The most experience with such hierarchy
transfer of information has been by users of the Univa,c I, which had a
relatively small main storage in the form of acoustic delay lines and a large
secondary storage in the form 'of magnetic tape units. A discussion of an
automatic system which fac'es the problem of segmenting a program, either
data or instructions, into pieces is given by this group (see Ref. 2). The
general conclusions of these and other workers is that while rules may be
set up to prescribe the storage hierarchy manipulation process so that a
computer may do it automatically, it is imperative that a programmer be
allowed to override any automatic segmenting and allocation system in
order to provide increased efficiency.
Minhnal Latency PrograInIning. For those computers with a oneplus-one address instruction scheme, on the other hand, machine allocation
of storage seems satisfactory in a large majority of cases. Most work of
this type has been done for the IBM 650. Gordon (Ref. 41) first wrote
a program assigning next instruction addresses automatically by machine
for this computer; this was later incorporated into SOAP (Symbolic
Optimal Assembly Program) (Ref. 83).
ExaInples of COInputer PrograInIning

The most straightforward way to describe the process of digital computer
programming is to give a sequence of equivalents for each type of element
in the flow diagram notation already discussed. Two "target" machine
languages will be described in the list of equivalents: a computer with a
single-address (actually "one-plus-one") instruction logic, the IBM 650;
and a computer with a three-address instruction logic, the MIDAC (Michigan Digital Automatic Computer). (See Sect. 6.)

PROGRAMMING AND CODING

2-131

In the examples that follow, the first few will be in the original languages
of these machines, so that the results will be the actual ones that might be.
used. The later ones will use symbolic addresses in place of the usual
decimal or hexadecimal integer addresses. This allows much easier understanding of the routines. These symbolic addresses will generally use five
or fewer alphanumeric symbols, such as are used in the SOAP (Symbolic
Optimal Assembly Program) for the IBM 650. The MIDAC notation
used on that machine with the MAGIC system is somewhat simpler, but
comparable, and for uniformity the same addressing system will be used.
For the IBM 650, when the next instruction address (NI Add) is not written,
it means that the next instruction follows directly below in sequence~ See
Sect. 6 for instruction codes of the IBM 650 and MIDAC computers.
Notation.

"store"
Upper accumulator
Lower accumulator
Contents of location n
Address of the location containing a

Au
AL

C(n)
Loc(a)

Parentheses surrounding an address mean it is modified during the
program. Dotted lines drawn underneath instructions indicate conditional
transfer of control. Solid lines indicate unconditional transfer of control.
ArithIlletic Boxes. A typical arithmetic box would be that of Fig. 11

-~)--il Yl~(Y2 + Y3)/(Y4
FIG. 11.

II--~)-

x Ys)

An arithmetic box.

where the values of YI, Y2, .. " etc., are "digital numbers." The corresponding sequence of IBM 650 instructions, using the SOAP assembly
language notation, is given in Table 13. It is assumed that numbers are so
TABLE 13.

SOAP
Symbolic
Program
RAU
YOO04
MPY YOO05
STU
TOOOI
RAU
YOO02
AUP
YOO03
DIV
TOOOI
STL
YOOO1

IBM 650 PROGRAM FOR PROBLEM OF FIG. 11
Machine Language
Program

Location
0100
0101
0102
0103
0104
0105
0106

Operation
60
15
21
60
10
14
20

Data
Address
0204
0205
0301
0202
0203
0301
0201

NI
Address
0101
0102
0103
0104
0105
0106
0107

Explanation
Y4~Au

C(Au) X Y5~ AL
C(Au) ~ h
Y2~Au

C(Au) + Y3 ~ Au
C(Au)/h ~ AL
C(A L) ~ YI

2-132

DIGITAL COMPUTER PROGRAMMING

scaled so that overflow would not occur. The next instruction address of
. the IBM 650 may be omitted in the SOAP program, since it is filled in
automatically. The translation of this program, with both data and next
instruction address included, is given alongside the original sequence, with
explanation at right. It is supposed that the following decimal address
storage assignments have been made:
Program:
Y0001:
T0001:

(instructions follow in sequence)
(other Y's follow in sequence)
(other T's follow in sequence)

100
201
301

(Generally, if minimum latency or optimal coding were used, the location
of successive instructions and the corresponding next instruction addresses
would not appear in sequence.)
On the MIDAC, the corresponding program in the MAGIC system
might be used (see Table 14). It is assumed that the same storage assignTABLE 14.

MIDAC PROGRAM: FOR PROBLEM OF FIG. 11
Machine Language Program
(Hexadecimal)

MAGIC Symbolic
Program
Y04 Y05 TOl MU
Y02 Y03 T02 AD
T01 T02 YOl DV

Hexadecimal
Location
064
065
066

a
Address
OCC
OCA
12E

{3

l'

Address
OCD
aCE
12D

Address
12D
12E
OC9

Operation
08
05

OB

Explanation
Y4 X Y5~ tl
Y2 + Y3~ t2
t2/fI ~ YI

ments hold as above. N ate that a computer with a three-address instruction logic does not use an accumulator and does not need as many machine
words to perform the same problem in this case. (Hereafter, machine
language translations will be omitted.)
COIllparison Boxes. The act of comparison can generally be accomplished by one instruction using either type of logic. A typical comparison
box would be that of Fig. 12. Now assign the same locations for YI and
program as before, and assume in addition that the number .15 is in
location tl. All numbers are "digital." The IBM 650 program is given in

FIG. 12.

A typical comparison.

PROGRAMMING AND CODING

2-133

Table 15. The MIDAC program is given in Table 16. The "base" instruction (BA) is a simple transfer of control instruction to 104, which
corresponds to the next address "0108" of instruction 0104 of the IBM 650
program above. In Table 16 C(Y2) is assumed originally zero.
TABLE

Location:
0100
0101

(102

15. IBM 650 SOAP PROGRAM FOR COMPARISON OF
Data
Operation Address
RAL
YOOOI
SLO
TOOOI
BMI
0105
RAL
STL

0105
0106
0107
0108

RAU
YOOOI
MPY
YOOOI
STU
YOO02
(continue)
16.

(::
102

103
104

Explanati9n
C(A L) - tl ~ AL
C(A L) < 0 ~ NI Add = 105

)

YI~AL
C(A L) ~

Y2

YI~Au

C(Au) X YI ~ Au
C(Au) ~ Y2

MIDAC MAGIC PROGRAM FOR COMPARISON
a

Decimal
Location

YOOOI
YOO02

{3

OF FIG.

12

'Y

Address
Y1

AdAddress dress
T1
103
- - - -"- - - - - Y1
Y2
Y1
000
001
104
Y1

12

YI~AL

---------

0103
0104

TABLE

Next
Instruction
Address

FIG.

Y1
Y2
(continue)

Operation
CN

- - - -

Explanation
YI

< 11 ~ NI Add = 103

EX

YI~Y2

BA

000

MU

YI X YI ~ Y2.

.

< 001 ~ NI Add = 104

Indicial Boxes. Indicial boxes in a flow diagram are most often part of
a more elaborate loop or induction structure. Index modification is usually
accomplished in two ways: (1) in the arithmetic unit; (2) by means of an
index register.
Performance of an inductive process usually involves four separate
functions:
1. Initial setting of an index or counter to an initial value (often, but
not always, zero or one).
2. Modification of an address of arithmetic (or other) instruction as a
function of the index.
3. Increasing the value of, or incrementing, the index (in some cases
this may be a decrementing process).

2-134

DIGITAL COMPUTER PROGRAMMING

4. Testing the value of the index to see if the induction has be~n completed.
An example of a process containing all four of these functions is the comn

putation of the vector inner product

L

aib i • It is assumed that the

i=l

numbers are "digital" and that they are so scaled that no overflow will
occur. The flow diagram is as in Fig. 13.

FIG. 13.

n
~ aibi.

Vector inner product,

i = 1

Programmers are generally advised, even if it costs more instructions, to
preset all counters, instructions, etc., to original conditions as is shown on
the flow diagram of Fig. 13 rather than afterwards, as could possibly be
done with "loops within loops." It is possible to make use of input of
TABLE 17. IBM 650 SOAP PROGRAM FOR VECTOR INNER PRODUCT, FIG. 13
Location
0100
0101
0102
0103
r~0104

0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118

Next
Instruction
OpeI;Data
ation
Address
Address
RAL
TOOOO
STL
SIGMA
RAL
TOOOI
STL
10000
RAL
0120
ALO
10000
STL
0110
RAL
0121
ALO
10000
STL
0111
RAU
(AOOOO)
MPY (BOOOO)
AUP
SIGMA
STU
SIGMA
RAL
10000
ALO
TOOOI
STL
10000
SLO
NOOOI
__B__M! ___ O~O~~

0119

HLT

0120
0121

RAU
MPY

OOOO~
AOOOO
BOOOO

Explanation
O~AL

C(A L )

~ ~

1 X 1O-6~ AL
C(A L ) ~ i X 10- 6

"RA U AOOOO" ~ AL
Form "RAU Loc (ai)"
C(A L ) ~ 0110
"MPY BOOO" ~ AL
Form "MPY Loc (b i )"
C(A L ) ~ 0111
ai~Au

bi~ Au
~
C(Au)~Au
C(Au)~ ~
i X 10-6~ AL

C(Au) X

+

(1 X 10- 6) + C (AL) ~ AI.
(i + 1) X 10-6~ i X 10- 6
C(A L) - (n + 1) X 10-,6 ~ AL
C(A L) < O~NI Add = 0104

Stop
Base instruction for ai
Base instruction for bi

PROGRAMMING AND CODING

2-135

information from outside the computer to do the initial setting. However,
in this case, one cannot start over at the initial internal instruction, but
must start over at the point of reading in of instructions. The process of
"resetting" counters to their original condition after the testing process
is completed should not be used unless one is willing to take the consequences of possible improper runs upon starting over.
Note that a temporary location ~ (SIGMA) is used to hold the partial
sum. The coding for the IBM 650, using address modification in the
arithmetic unit, is given in Table 17. (It is assumed that location TOOOO
contains 0, TOOOI contains 1 X 10- 6 , T0002 contains n X 10-6 , al is in
A0001, a2 in A0002, bi in B0001, b2 in B0002, ... , etc., and (n + 1) X 10-6
in location NOOOl.)
In this program (Table 17) locations 100-103 preset the initial conditions,
locations 104-109 modify the instruction addresses, locations 114-116
perform the incrementing, and locations 117-118 perform the comparison.
This program may be rewritten as in Table 18 to use the two instructions
being modified themselves as counters. (Hereafter symbolic addresses will
be used as instruction location addresses as well as data.) Note that now
the flow diagram of Fig. 13 is not followed precisely.
TABLE 18.

ALTERNATE IBM 650 SOAP PROGRAl\I FOR VECTOR INNER PRODUC'l'

Location
BEGIN

Opcration
RAL
STL
RAL
STL
RAL
STL
RAL
ALO
STL
RAL
ALO
STL
SLO
/BMI

ENTRY

I

I
\

\

MULT1
MULT2
NEXT
INST1
INST2
TEST1

Data
Address
TOOOO
SIGMA
INST1
MULT1
INST2
:MULT2
1\1:ULT1
1'0001
:MULTl
1\1:ULT2
1'0001
MULT2
TESTl
MULT1

Next
Address

Explanation
lO-7

~

{RAU AOOOO ---> MULT 1

f :MPY ROOOO -7 MULT2

1RAU
Generate
Loc (ai)
J

1

Generate
J MPY Loc (bi)
}IS i = n

+ 1?

---------HLT
'~RAU
MPY
AUP
STU

RAU
MPY
MPY

0000
MULT2
NEXT

(AOOOO)
(BOOOO)
SIGMA
SIGMA

ENTRY

AOOOO
BOOOO
B(n
1)

MULT2
NEXT
NEXT

+

}:!: + (a, X b,) ---> :!:
Initial instruction
Initial instruction
Test instruction

2-136

DIGITAL COMPUTER PROGRAMMING

In certain Cases the latter technique may prove quicker or may require
less storage. (Above, the second technique requires twelve instead of
fifteen instructions in the loop itself.) Only the first procedure will be
coded for the MIDAC as shown in Table 19.
TABLE 19. MIDAC MAGIC PROGRAM FOR VECTOR INNER PRODUCT, FIG. 13
Location
BEGIN

a

Address
INCRE
TOOOO
INSTR
r-~MULTI (AOOOO)
TOO02
I
I
10000
I
INCRE
I
L__ ~ "'- _____ IOOOO

{3

Address
TOOOO
TOOOO
TOOOO
(BOOOO)
SIGMA
INCRE
MULTI
TESTI

Operl'
Address ation
10000
AD
SIGMA
AD
MULTI AD
TOO02
MU
SIGMA
AD
AD
10000
MULTI. AD
MULTI CN

Explana tion
l~i
O~~

Set instruction
ai

X bi~ t2

t2 +

i+

~.~ ~

l~i

Increase addresses
~ n~NI = MULTI

i

------------------

INCRE
INSTR
TESTI

000

000

000

001
(AOOOO)
(n + 1)

001
(BOOOO)

000
TOO02
000

(n + 1)

RI

Stop

00
MU
00

Increment
Base instruction
End of cycle test

Use of Index Registers. The augmented IBM 650, with index
registers, has three index registers, A, B, and C, of four decimal digits each.
Modification of an address at execution time by using an index register
will be indicated by one of these letters following the address in a "tag"
position. The modified program for vector inner product given in Table 20
requires some new IBM 650 instructions not previously described, and
uses a value of n = 100.
RSA. Reset and subtract from index accumulator A. Index accumulator
A will be reset to zero and the data address will be subtracted from it.
AXA. Add to index accumulator A. Add the data address to index
accumulator A.
NZA. Branch on nonzero index accumulator A. If the contents of the
index accumulator A is nonzero, take the next instruction from the data
address. Otherwise take the next instruction from the instruction address.
RAA. Reset and add to index accumulator A. Index accumulator A will
be reset to zero and the data address will be added to it.
Note that the program of Table 20 is much shorter when using the index
registers, but the flow diagrarri has been slightly altered so as to count down
from i = -100 to i = O. The instructions in location ENTER and its
successor still perform their operations in an increasing sequence, however.
The MIDAC has one index register, the base counter, which is added to
any address in an instruction; at the time of execution, when that address

2-137

PROGRAMMING AND CODING
TABLE 20. IRM 650 (AUGl\IENTED) SOAP PROGRAl\I FOR
VECTOR INNER PRODUCT WITH INDEX REGISTERS

Next
Instruction
OperData
Tag
Explanation
ation Address Tag Address
-lOO~i
RSA
0100
RAL
TOOOO
lO~~
STL
SIGMA
AOlOl A
r~ENTER
RAU
I
MPY
BOlOl A
2; +
X b,---> 2;
SIGMA
:
AUP
I
STU
SIGMA
0001
:
AXA
i+ l~i
L__________ NZA ENTER
NEXT
i > 0 ~ NI = ENTER
Location

j

NEXT

HLT

0000

a,

Stop

is "tagged" with a negative sign. One operation, the base operation, is
used to set, increase and test the counter. The instruction
-a

{3

-BA

'Y

performs all of the following operations in sequence:
C (Base Counter) + a ~ Base Counter;
if C (Base Counter) < (3 ~ Next Instruction Address equals 'Y;
if C (Base Counter) ~ (3 ~ Next Instruction Address is i~ sequence,
and a ~ Base Counter.
Thus the base counter is ordinarily set to zero by an instruction

000

000

000

BA

The above vector inner product program for MIDAC would now be that
of Table 21.
TABLE 21.
Location
BEGIN

l\UDAC MAGIC PROGRAM FOR VEC1'OP.. INNER PRODUCT
WITH AN INDEX REGISTER
{3

'Y

Address
000
SIGMA
- BOOOI
SIGMA

Address
000
SIGMA
T0002
SIGMA

a

Address
000
SIGMA
r-~ ENTER
- AOOO1
l
T0002

L _________ ~~~~ - -

Operation
BA
SU
MU
AD

:00 - ~~'~:t- ~~:)

Explanation
Clear base counter
O~~

ei X bi~ t2

+ t2~ ~
< n~NI =

~

i

Stop

ENT~R

2-138

DIGITAL COMPUTER PROGRAMMING

Note that here the counter i ranges from 0 to n - 1. The comparison
in efficiency between the IBM 650 and MIDAC is not a completely Iair one,
since some of the features of the IBM 650 (performance of instructions froL1
the accumulator, use of the distributor, etc.) have not been used. N evertheless, these examples do show the marked advantage in this type of
cyclical problem of a three-address instruction logic with index register
over a comparable single-address instruction logic.
Multiway Switch. The flow diagram notation for the variable remote
connector, or multi way switch, provides another example of address modification. Such a multiway switch might be used with a table look-up
process, such as is required in many function evaluation processes, interpretive programs, and other problems in which performance is dependent
upon a value of a function. The flow diagram is given in Fig. 14, where,

FIG. 14.

A multi way switch.

dependent on the value of j, control jumps to one of n + 1 remote connections.
Four possible programs are described below, two for a single-address
(IBM 650) and two for a three-address (MIDAC) instruction logic, with
and without the use of index registers.
EXAMPLE 1.
IBM 650 SOAP program for multiway switch without use
of index accumulators. Note performance of an instruction from the
lower accumulator.
Location
BEGIN
r--JUMP
I

I

JOOOO

:

ALPHA

~

I
1//

/",;r

1< . .
..........
......

'"

Operation
RAL
ALO
NOP

Data
Address
JUMP

Instruction
Address

JOOOO

8002
(ALPHA)

00

0000

0000

j

Explanation
\Set JUMP to
J "NOP 0000 (ALPHA + j)"
Jump to (Xj(performed in Ad

2-139

PROGRAMMING AND CODING

EXAMPLE 2.
MIDAC MAGIC program for multiway switch without
use of base counter, see Table 23.

Location

Address

BEGIN

JOOOO

r--JUMP
JOOOO
I
ALPHA
I
I
I

I
I

I

II

I

11

__

a

000
000

{3
Address

JUMP
000
000

Operation

'Y

Address

AD

JUMP
(ALPHA)
j

BA
00

Explanation

tet JUMP to

"000 000 (ALPHA + j)
BA"
Jump to ai

} Locations "'0,

",>Y'

... , an

--

~-........

....

"1,

.... "-

EXAMPLE 3.
IBM 650 (Augmented) SOAP program for multiway
switch with index register. Note that for the special case where the
address of the RAA instruction is greater than 7999, the index register A
is loaded directly.

Location
BEGIN
JOOOO
ALPHA

Operation
RAL
RAA

.Data
Address
JOOOO
8002

Instruction
Address

Tag

ALPHA

Tag

Explanation
j ~ Index Acc A;
A } jump to aj

----------------------------00

0000

j

Locations ao,
aI, ... ,an

j
. EXAMPLE 4.
MIDAC MAGIC program for multi way switch with an
index register. Again in this case the use of the base counter is hindered
because there is no direct way to store an integer in it.

Location
BEGIN
r--JUMP2

{3
a
Address Address
000 . 000
JOOOO
JUMPl
(000)
999

'Y

Address
000
JUMP2
-ALPHA

I

:

I
I

i /f

JOOOO
JUMPl
ALPHA

V---~'

.

...............

....:11...

j
000

000

999

000
-ALPHA

OperExplanation
ation
BA
Clear base counter
AD Store j in a of JUMP2
BA j ~ base counter,
jump to ai
00
BA
.jLocations ao, aI,
" ' , an

2-140

DIGITAL COMPUTER PROGRAMMING

Dynalllic Stop. I t is possible to code a transfer to the same instruction
to give a tight loop that accomplishes the equivalent of stopping the machine
but allows it to run on at high speed. For computers with electrostatic
storage, where the "read-around" or "consultation ratio" is important, this
is definitely not recommended. It has mainly been used on computers
without built-in halt instructions. On the two machines being used in
examples, the following would constitute "dynamic stops."
EXAMPLE 1. IBM 650 SOAP program for dynamic stop.

Location
LOOP

Operation
NOP

EXAMPLE 2.
Location
LOOP

Data
Address
0000

Instruction
Address
LOOP

Explanation
NI Add = LOOP

MIDAC MAGIC program for dynamic stop.
a

{j

Address
000

Address
001

'Y

Address
LOOP

OperExplanation
ation
BA NI Add = LOOP

Subroutine Linkages. Entry to subroutines must accomplish the
following:
1. Store the address of the next word (which may contain the next main
program address, or else a program parameter to be used in the subroutine).
2. Transfer control to the first address of the subroutine.
This is given by the flow diagram of Fig. 15 .

.·.~Gr---~08f---+-~- - - - I

Subroutine

1---)~--0

'---------'

FIG. 15.

Two main program entries to the same subroutine.

On the IBM 650, the transfer of information about the position to which
control is to be returned in the main program in one technique makes use
of the one-plus-one address features of the computer. The next instruction
to which control is to be returned in the main program is loaded in an
available machine register (the distributor) and then, after transfer to the
subroutine, the latter stores the next-instruction in an exit-instruction
location (Table 22). Note that the exit instruction originally is loaded with
a halt instruction, so that if control should be transferred improperly to the

PROGRAMMING AND CODING
TABLE 22.
Location

2-141

IBM 650 SOAP PROGRAM FOR SUBROUTINE ENTRY
Operation

Data
Address

Next
Instruction
Address

Explanation

"RAL AOOOO", to
Distr., jump to
{subroutine
RJUMP
NEX'r
fStore next instr. in
lEXIT

SUBRN
Sub- [
routine
EXIT

(HLT

0000

0000)

EXIT instruction

subroutine, the computer would stop. Such safeguards are sometimes
useful in debugging programs.
If the IBM G50 did not have a next instruction address and'no special
subroutine entry instruction were avaihtble, the following so-called Wheeler
entry (Ref. 108) could be used. The instruction JlVIP is not an actual
IBM 650 instruction.
Location
SELF
~

UBRN

Subroutine

Next
Data Instruction
Address
Address
Explanation
SELF
"RAL SELF" ~ AL
ALa THREE
"RAL (SELF + 3)" ~ AL
JJVIP SUBRN
Jump to subroutine
-------N ext instruction
RAL AOOOO
Operation
RAL

r

EXIT

THREE

SDA

EXIT

JMP

(0000)

00

0003

Store NIAdd in EXIT

This becomes
"JMP (SELF

0000

'

+ 3)"

2-1.42

DIGITAL COMPUTER PROGRAMMING

With an index accumulator, the following subroutine sequence could be
used to provide a return jump from a subroutine on the IBM 650.
Location
JUMP

Operation
RAA

NEXT

RAL

I

SUBRN

Subroutine

EXIT

Next
Data
Instruction
Address Tag Address Tag
NEXTSUBRN

Explanatlon
"NEXT" ~
LA.A.; jump
{
to ~ubroutine

AOOOO

{Now. Irrelevant)

xxx

xxxxx

0000

A

Return to the
address given by
{ C(LA.A.)

(Here the sequences of x's indIcate the operation and data address can be
anything. LA.A. stands for index accumulator A.)
In the MIDAC's typical three-address instruction logic, one instruction,
the "file" (FI) operation, performs the same function as the instruction
labeled JUMP for the modified IBM 650.
Location
JUMP

Cl
{3
'Y
Address Address Address
·EXIT
001
SUBRN

AOOOO BOOOO

SUBRN

EXIT

COOOO

Operation

FI

Explanation
" (JUMP
1)" to 'Y position
{ of EXIT,jump to SUBRN

+

AD

(Irrelevant)

000

001

(000)

Note. If program parameters (variables needed in the subroutine) are
required, they are generally stored in (1) the accumulator and other
p::>sitions, except in the Wheeler entry method, and (2) registers following
the JUMP instruction in the main program. In the latter case, the subrJutine entries or the subroutines themselves must be altered in an obvious
fashion.
Table Look-Up. In many cases, it is desired to find the value of a
function stored in a table. Since the process of finding an inner product
described above obviously requires looking up ai (and bi ) in a table with

PROGRAMMING AND CODING

2-143

argument i, a similar procedure can also be used, as long as the arguments
occur at equal intervals. The flow diagram for one approach is shown in
Fi6 . 16; no actual coding is included. Here the argument is x at equal

~_i_~_[X_I_AX_]---,I---~)---t1
FIG. 16.

Table look-up of y

Y -Y;,

I--~---IS

= f(x).

intervals Ax,and the function values are Yi. Again [... J means "integral
part of." The result will be the value in the table corresponding to [xl.
The table look-up instruction on the IBM 650 (see Sect. 6) provides 11
similar technique using only one instruction on the IBM 650. Several
hardware restrictions render this instruction less useful, but it is still a
very powerful device.
A binary table look-up procedure may often prove most efficient when
an equal interval table or table look-up operation is not available. Suppose
there exist 16 arguments, xo, ... , XI5 in a table. A value of x is given, and
it is desired again to find the approximation Y = f(x) from a table of
Yi(i = 0, ... , 15). The flow diagram is shown in Fig. 17. Again, no
coding is included.
This process may obviously be recorded in a recursive (loop) structure.
The number of comparisons in this process is C(N) ~ log2 N, where N is
the number of elements in the table.

(Portion of
di:lgram omitted)

FIG. 17.

Binary table look-up procedure.

2-144

DIGITAL COMPUTER PROGRAMMING

Programming with Secondary Storage

Since secondary storage varies from digital computer to computer, it is
difficult to give specific rules for its usage. The various devices which have
been attached to general purpose computers as secondary storage include:
(1) magnetic drums, (2) magnetic tape units, and (3) large-scale random
access devices (bin type magnetic tape units, magnetic disks, large-size
drums).
All these devices employ magnetic methods of recording, and are therefore storage of a general nonvolatile nature. They nevertheless have the
capacity for malfunctions; dust on a magnetic surface, improper relay
closure, etc., may cause an incorrectly read or written digit. It is therefore
necessary, if satisfactory reliability or built-in checks are not available, to
include programmed checks, usually by using storage-summing techniques,
to guarantee proper performance. These techniques are described below
under Integrated Systems (see Sect. 10).
Some magnetic drum systems are integrated into the high-speed storage
unit; here the only programming requirement is to provide economy of
performance either by minimal latency programming or an interlace
feature. (See Ref. 103.) Use of magnetic drums in this fashion causes no
basic problems. Drum equipment used as a secondary storage, however,
entails a scheduling problem that generally can be solved exactly only by a
computer itself, a procedure which has not been followed. Simpler methods
of approximate solution are needed. Programs for such hierarchy transfer
are discussed in Sect. II.
The use of magnetic tape units is very dependent on the presence or
absence of built-in checking, ability to read both forward and backward,
presence of fixed or variable block length. The reader is urged to consult
Sect. 6, and then the various manufacturer's operation manuals or reports
(see Refs. 34, 50, 54, 93, 103, and 148) for a fuller discussion of the instructions that govern magnetic tape equipment.
Large-scale, so-called random access storage, as embodied in tape bin
storage (see Ref. 119) and magnetic disk storage (see Ref. 118) basically
require methods of mapping call words of long digit length (for example,
inventory parts numbers) into a smaller number of digits giving the address
in the random access storage. A parts number, ten digits in length, may
correspond to a five-digit address in a random access unit. How can a
unique correspondence be made? Certainly if there are more than 100,000
different parts, this is impossible; but if there are fewer than that, some
method of randomization may allow an almost one-to-one mapping from
the set of parts numbers (scattered thinly throughout the entire ten-digit
range) into the set of storage addresses (most of which would be used),

PROGRAMMING AND CODING

2-145

One popular technique is a variation of the so-called mid-square procedure
(see Ref. 74), to produce (in this case) the desired five-digit address.
EXAMPLE. Suppose an inventory parts number were 1122305151. The
twenty-digit product of the number with itself is:
12595688518611232801
L....-J

If one uses digits 8 through 12 to provide a five-digit address, one obtains
85,186. With high probability, out of a group of 100,000 parts numbers
each with ten digits, no two of them will have the same set of five midsquare digits. If more than one number does have a duplicate address
under this mapping, the address can be tagged as an "exception" and either
a second mid-square process based on the center ten digits of the resultant
square, or another group of five digits in the square, may be used to generate a new address, which again can be tested for duplications, etc.
Sorting and Merging. One primary problem that involves the use of
secondary storage is the problem of rearrangement of input data in an
ordered fashion. This problem can occur on one hand in assembly programs where symbolic addresses are to be arranged in an easily entered,
ordered list or, on the other hand, in any sort of business file maintenance
problem where inquiries or changes that are not externally ordered in
sequence are to be compared with a main file. Goldstine and von Neumann
(see Ref. 19, Part II, Vol. II) developed the first theoretical analysis of two
of the main methods of information rearrangement and compared the use
of a general purpose digital computer for these purposes with standard
punched card equipment, with some advantage in favor of the former.
Later studies, as listed in Seward's dissertation (Ref. 140), produce a better
"informational advantage" as far as use of a general purpose digital computer is concerned, but still indicate that this present machine structure is
far from dominant in such performance.
There are two general classes of information rearrangement:
1. Merging. The act of taking two (or more) previously numerically
increasing (or decreasing) ordered sequences of numerical information
and combining them in one numerically increasing (or decreasing) sequence.
2. Sorting. The act of taking an arbitrarily ordered sequence of (numerical) information and arranging it in a numerically increasing (or decreasing) sequence. Since alphabetical information in a computer is most
often encoded in some numerical form that is ordered analogous to the
position in the alphabet, these definitions also cover merging and sorting of
alphabetical and other nonnumerical information.
Such blocks of information (called items) are usually sorted with respect
to a key, a sequence of one or more symbols (digits) which are pertinent to

2-146

DIGITAL COMPUTER PROGRAMMING

the position of the information in the sequence. In this discussion, it will
be assumed, without loss of generality, that the key is numeric and the
ordering desired is generally increasing.
Use of Main Storage in Sorting. If the blocks of information to be
sorted each contain few enough computer words, many of them may be
stored in the high-speed storage of a computer. During the sorting process,
the relative values of the keys (usually located at the beginning of a block)
may be used to exchange entire blocks. A simpler and often more effie lent
process, however, is to move only the addresses of the blocks rather than the
blocks themselves after a comparison of the keys has been made. Thus, if
n blocks of m words are to be sorted, to be stored in nm positions, space
must be also left for n addresses, which will be shuffled into an order corresponding to the order into which the blocks should be moved. After this
process of rearranging the n addresses is completed, the corresponding
blocks may then be read out onto secondary storage in the proper sorted
order. This technique may obviously be extended to use of magnetic
drums as well, since they in general have a relatively small access time.
Sorting Methods

There are two main types of sorting: (1) digital sorting and (2) merge
sorting.
Digital Sorting. This method uses successive digits (or groups of
digits) in the key to arrange the sequence being sorted into an ascending
order. This is the method usually used on punched card equipment, where
the information is passed through the sorter one time for each digit in the
key, and the cards are collected in one of a number of output units (10 in a
decimal sorter) at the end of each pass. If one starts at the least significant
digit and proceeds up~vard in sequence, ordering the entire stack by digits
after each pass, the entire process requires d passes, where d is the number
of digits in the key.
The logical extreme of the digital sort technique is the so-calle~ addresssorting technique on a stored-program computer. If, for example, in a
decimal computer single words are to be sorted on a two-digit key, each
value of which is to appear only once, this key may be used as an index to
modify a storage address for each word in turn. Thus, if the resultant
storage block for ordered information is in locations 1900 to 1999, and if
the two-digit key is 65, the machine word corresponding should be sent to
location 1965. Even if the information being sorted is in larger blocks, if
the keys are unique and occur densely within the entire possible range of
key values, a similar technique may be used, either with the blocks themselves or with their addresses. Duplicate keys, if very few occur, may be
handled by signals designating an exceptional case.

PROGRAMMING AND CODING

2-147

With magnetic tape units, (decimal) digital sorting may be achieved by
reading from one tape and storing the output on one of ten tapes, each
corresponding to a possible digit of the key. With two banks of ten-tape
units, the previous output can be used as the next input, with the next
successive significant digit being sorted on in order.
The time required for such a digital sort is
T

=t

X n,

where T is total time, t is time for one passage of the entire information
through the storage, and n the number of digits, or as Seward (Ref. 140)
has noted, approximately
T

= NA[logr R]

where N is the number of items being sorted, A the access time to read or
write items in the storage, the range of the key is from 0 to R, and r is the
base or radix used in representing the key.
Sorting by Merging. This technique is that recommended by Goldstine
and von Neumann for internal sorting. Sorting by merging consists in
taking two or more ordered groups of items and merging them into one
ordered group (usually called a string). Figure 18 shows an example of
such a merging process.
Goldstine and von Neumann (Ref. 19) have discussed merging in detail
in the case where information is stored in the main storage. The flow
diagram is shown in Fig. 19. In this case, an item Xi consists of a one-word
Merged
St . g
rr

Ordered
String

NO.~2-(
~ 3

1
3

~ 7

Ordered
String
No.2
2
______ 8

8~

711

~

12

~ ~~::===---= 14

21

11

______ 13

14

-17

~17~~ 22
21

25_______

22 ~

---------=

26~ ~~ - - -_________

24

28

~

30.
26
-----28
32
31 ______
~30~

~31~35
32
35

FIG. 18.

Example of sorting by merging.

~
..j:Io.

00

o

(i)
=i

»
r()

o

~

"C

--i

Yes
The bOX-;..!w k ...:-X i71

~WOUld consist of:

m

;;:0
-0
;;:0

o(j)
:;::c

»
~
~

Z

(j)

Wl_U q i +1
and similarly for W k _

yi+ 1 and Zr _ W r
FIG. 19.

Merging two strings of m and n item<:: each of order p.

PROGRAMMING AND CODING

2-149

key Xi followed by p other words (p is the order of the item). A string S
will consist of n items, where n is the length of the string. A string would
then contain n (p + 1) words. The flow diagram describes the merging of
two strings S = (Xl, X2, .. " Xn) (of n items) and T = (yI, y2, .. " ym)
(of m items) to produce an ordered string R = (ZI, Z2, Z3, .. " Zn+m)
where each Zi is one of the previous X's or V's such that the keys Xi and
yi are now arranged in increasing order. The string Xi would be given
by Xi = (Xi, UI i, .. " U p i ), yi by yi = (yi, VI i, .. " vp i ), and Zi by
Zi = (Zi, WI i, •• " wp i ).
In the general case of merging two strings from two tapes into a third
string on a third tape, there would need to be further storage boxes included in the flow diagram.
Sorting of an arbitrarily ordered string of length N can now be accomplished by successive merging. This can be accomplished as follows:
1. Each pair of items in sequence is merged by considering each a string
of length one to form a string of length two.
2. Each pair in sequence of strings of length 2v(v = 1, ... ) is merged,
using the merging process described above, to yield a merged string of
length 2,,+1.
3. When 2,,+1 ~ N and there is only one string, the process is complete.
The fact that N is not exactly equal to 2" can be disregarded by considering the remaining r" = N - 2" elements as a separate string which
mayor may not be merged at each stage of the process.
An example of the merge-sort process is given for a general string of 35
items (here merely keys) in Fig. 20.
A non ordered string of items {A 1, A 2, A 3, •• " AN}, each of order p, to
be sorted may be manipulated by the flow diagram of Fig. 21. Here the
merge routine of Fig. 19, with parameters m and n, is the heart of the
process. There will be two indices involved, v, indicating the number of
overall mergings that have been completed, and w, the number of mergings
of strings of length 2" that have been completed for this value of v. To use
the subroutine, the main program furnishes values m", and n"" which are
used as m and n in the merge routine, and the addresses of Xl, yI, and ZI.
The resulting merged sequence {Zk} is stored beginning at the address of
Xl. (The manipulation of these addresses is not included in the merge
routine, for the sake of simplicity, but it is an obvious extension of the
flow diagram of Fig. 21.)
For the worst possible case, when the keys are present in exactly the
reverse order, the number of comparisons required for sorting n items,
C (N), which may be considered a measure of the amount of effort needed to
sort using this method, can be shown to be bounded from above:
C(N)

~

N log2 N

2-150

Initial
String
50
27
39
2
21
46
65
20
3
5
61
29
16
31
15
11
48
28'
4
44
49
17
62
55.
18
43
9
25
33
12
20
19
56
63
42

DIGIT AL COMPUTER PROGRAMMING

Sequences Sequences Sequences Sequences Sequences
of 2
of 8
of 16
of 32
of 42
2
2
27 }
20
50
3
3
21
39
5
4
}
50
27
11
5
39
15
9
21 }
20
46
21 )
46
16
11
46
20
50
12
20 }
21
65
65
65
15
27
3
16
5
29
17
11
18
31
}
29 }
61
61
15
39
19
46
16
20
16 }
31
15
29
21
50
16
31
61
25
11 }
15
31
61
65
26
4
4
27
28 }
48
17
28
9
)
44
12
28
29
41 }
48
44
17
31
48
18
33
17 }
17 }
49
49
19
49
39
55
25
55
43
55 }
62
62
26
62
44
28
9
46
18 }
43
12
33
48
)
25
43
18
49
}
43
19
44
50
25
48
55
12 }
12 }
33
19
26
49
61
26
62
33
55
19 }
26
33
43
62
65
42
42
42
56 }
42
63
56 }
56
56
56
42}
63
63
63
63

2~)

3~

~}

2~

11]

2~

2~

1~

}

}

FIG. 20.

}

Sequences
of 64- (or less)
2
3
4
5
9
11
12
15
16
17
18
19
20
21
25
26
27
28
29
31
33
39
42
43
44
46
48
49
50
55
56
61
62
63
65

An example of merge-sorting by pairs.

(It can be easily shown where N

= 2v, van integer, that:

C(N) = N log2 N - N

+ 1 (N = 2v)

and the bound can be 'extended by somewhat more complicated analysis.)
For the most favorable case, when the items are already sorted by key,
the number of comparisons can be made as low as

C(N)

~

N.

i

)

,mw-N - 2
nw-O

v 1

+

w

m w- 2 V
nw _N_(2 v+1 w +2 V )

Address(X 1) __ Address(A 2V +1 W + 1)
Address(yl) __ Address(A2V+lW+2V+l)
Address(Zl) _ Address(A 2V +1 W+1)

mw~2V

"'0
;;C

o(j)
»
;;C

nw- 2v

~
~

Z

(j)
Merging
routine of

Fig. 19

v+l

»
z
o

o
oo
Z

(j)

FIG. 21.

Sorting a sequence of N items using merging.
t;-->
U1

2-152

DIGITAL COMPUTER PROGRAMMING

This requires that the merging routine of Fig. 21 be reprogrammed in a
more complicated fashion to take advantage of the possibility of an original
string that is almost ordered.
For sorting external to a high-speed storage, where the number of comparisons is no longer dominant, but rather the amount of input and output,
a similar process can be used, but here the strings resulting at the various
stages of the merging process would be divided approximately equally on
two (or more) output tapes. Upon passage through the entire data, the
tape units being used for the output strings could now be rewound, and
their information considered the input for a new merging process. If one
item is read in successively (rom each tape, keys compared, and the item
with the smaller key sent to one of several output tapes, successively
larger strings can be built up as with the internal storage procedure. If
there are 2b tape units available, the number of passages through the entire
information will be
10gb N,
where b units are used for input and b for output. The detailed procedure
in this case depends upon how many items can be held in the internal
storage at one time. In general, it is best to perform internal sorts whenever possible and in as large a string as possible. If it is possible to hold
only two items in the internal storage at once, it may pay to modify the
von Neumann-Goldstine procedure to allow merging to continue to produce
a string as long as a sequence of keys is monotone. This string would be
rea,d out on one of the output tapes. The next string, of arbitrary length
depending on the sequence of keys read in, would be put out on another
tape, etc. Upon exhaustion of the input information, the role of input and
output tapes would be reversed.
Other Internal Sorting Methods

Seward (Ref. 140) has collected statistics for various other methods of
internal sorting:
Finding the SIllallest. Find the smallest of a group N, and store it.
Find the smallest of the group N - 1, and store it. Continue the process
until the group is exhausted. The number of comparisons is

C (N) = N (N - 1) .
2
Interchanging Pairs. Compare, and interchange if necessary, the
pairs beginning with an odd-numbered item (1,3,5, ... , N). Repeat for
the pairs beginning with even-numbered items. Alternate this process
until no interchanges occur. The number of comparisons in the worst
. possible case is
C(N) = N2/2.

PROGRAMMING AND CODING

2-153

Sorting by Sifting. Compare items in sequence, moving them forward in the list until an item with smaller key is reached. When the last
item is "sifted" the items are ordered. The number of comparisons in the
worst case is
C(N)

= N(N

- 1) .
2

Partial Sorting. Items 1 and 2, 2 and 3, .. " j and j + 1, .. " are
compared, interchanging where necessary. The process is repeated until
no interchanges occur. Again
C(N)

= N(N

- 1) .

2

It is apparent from a more detailed study that the bounds on number
of comparisons given by digital sorting or sorting by merging with
C(N)

=N

log2 N

are by far the best. Except in rare cases where much information is known
about the a priori sequence of the items, only these two methods should be
used.
A Practical Exam pIe

As a practical example of a process in use with magnetic tape units on
an actual equipment, the following procedure taken from a description of
the use of magnetic tapes on the IBM 650 is given. (See Ref. 148.) A
tape record on this machine (block stored on or read from tape) ranges
from 1 to 60 words. It is assumed first that one item may be stored in a
record. In this procedure:
1. The original sequence of items (here written on two tapes) is processed
and written on two output tapes.
2. The two output tapes, considered as new input tapes, are merged
to write two other output tapes. The process is repeated until completion.
At each step, two new records are compared with each other and with
the last output record written out. If either one of these is in proper
sequence with the last output record written out, it is written out on that
tape. If not, a new sequence is started on the second tape using the item
with the smallest key. The process is shown by an example, and in the flow
diagram of Fig. 22. When no new sequence has been set up during a
merging pass, W = 0, and the entire process is complete. In the case below,
strings are separated by vertical lines.

~
U1
~

o

(j)
=i

»
.-()
o
~

---:0

C

-I

m

;::c

";::co

(j)

;::c

»
~
~

Z

(j)

FIG. 22.

Two-tape merge sorting process.

PROGRAMMING AND CODING

2-155

EXAMPLE.

First Pass
Initial Tape 1
23, 13, 11, 18, 29, 4, 5, 30, 15, 10
Initial Tape 2
16, 6, 24, 2, 17, 22, 33, 9, 7, 28
Output Tape 3
16, 23 12, 11, 17, 18, 22, 29, 33 17, 15, 28
Output Tape 4
6, 13, 24 I 4, 5, 9, 30 110
These tapes now become input tapes 1 and 2.
Second Pass
Output Tape 3
6, 13, 16, 23, 24 I 7, 10, 15, 28
Output Tape 4
2,4, 5, 9, 11, 17, 18, 22, 29, 30, 33
These tapes now become input tapes 1 and 2.

I

Third Pass
Output Tape 3
2, 4, 5, 6, 9, 11, 13, 16, 17, 18, 22, 23, 24, 29, 30, 33
Output Tape 4
7, 10, 15, 28
These tapes now become input tapes 1 and 2.
Fourth Pass
Output Tape 3

~4,~6,7,~

10, 11, 13, 15,

1~

17, 18,22,23,24,28,

29,30,33
Output Tape 4
8. AUTOMATIC PROGRAMMING: DEVELOPMENT AND OBJECTIVES
Defini tion. A utomatic programming can be defined as all those methods
which attempt to shift the burden of formulation and programming of
problems for automatic computers onto the machines themselves.
AutoInatic Coding SysteIns. Bemer (Ref. 141) has collected a list
of various automatic coding systems for computers which is reproduced in
Table 23. This list shows that:
1. The amount. of effort put into automatic coding systems has been
large.

Note.

Fig. 22 explanation.

Given four tape units numbered 1, 2, 3, 4:
Let m, m + 1 be the numbers of the input tape units,
n, p
be the numbers of the output tape units,
i
be the index on tape m,
j
be the index on tape m + 1,
k
be the index on tape n,
l
be the index on tape p.
Let I m • i
be the ith item on tape m, etc.,
k(A)
be the key for item A, etc.,
be the number of items on tape m,
io
be the number of items on tape m + 1.
io

TABLE

System Name
Computer
or Acronym
AFAC
IBM 704
CAGE
FORC
FORTRANa
NYAP
PACT IAa
REG-SYMBOLIC
SApa
NYDPP
KOMPILER3
ACOM
IBM 701
BACAIC
BAP
DOUGLAS
DUAL
607
FLOP
JCS 13
KOMPILER 2
NAA ASSEMBLY
PACT Ia
QUEASY
QUICK
SHACO
SO 2
SPEED CODING
IBM 705-1, 2 AC01\1
AUTOCODERa
ELI
FAIR
PRINT Ia
SYMB. ASSEM.
SOHIO
FORTRAN
IT
AFAC

23.

AUTOMATIC CODING SYSTEMS (REF.

Developed by
Allison G.M.
General Electric
Redstone Arsenal
IBM
IBM
Pact Groupb
Los Alamos
United Aircraft
Servo Bur. Corp.
UCRL Livermore
Allison G.M.
Boeing Seattle
Univ. of Calif., Berk.
Douglas SM
Los Alamos
Los Alamos
Lockheed Calif.
Rand Corp.
UCRL Livermore
N. Am. Aviation
Pact Groupb
NOTS Inyokern
Douglas ES
Los Alamos
IBM
IBM
Allison G. M.
IBM
Equitable Life
Eastman Kodak
IBM
IBM
Std. Oil of Ohio
IBM-Guide
Std. Oil of Ohio
Allison G.M.

Code
C

M.L.

Assem.

Inter.

X

R
X
X
X
X

R

X

C
A
X

X
X
X

X
X

X
X
X
X

X

~

141)

Oper.
Compo
Date
X
Sept. 57
Nov. 55
X
X
June 57
X
Jan. 57
Jan. 56
Jan. 57
X
Nov. 55
Apr. 56
Sept. 57
X
March 58
Dec. 54
July 55
X
May 57
May 53
March 53
Sept. 53
March 53
Dec. 53
X
Oct. 55

Indexing
M2
M2
M2
M2
M2
M2
M2
M2
M2
M2
S1

FI
Pt
M
M
M
M
M
M
M
M
M
1\1
S
S
S
S
S

S2

U1

Symb.
2
2
2
2
2
1
1
2
2
2
0
1
2
1
1
1
1
1
1

Algeb.
X
X
X

0
(j)
::::j

X
X

X
X
X
X

R
C
R
C
R

X
X
X
X
X

A
C
C

X
X

X
X
X
X

X
X
X
X
X
X
X
X

June 55
Jan. 55
June 53
Apr. 53
Apr. 53
Apr. 53
Apr. 57
Dec. 56
May 57
Jan. 57
Oct. 56
Jan. 56
May 56
Nov. 58

;;C

X

-u

;;C

(j)

S

;;C

»
s:
s:

0
1
1
1

Z

(j)

0

S
S1

SI
S2
S2
S2

0

0
S
S
S

82

()

C
-i
m

S2

S1
S1

»
rs:
-u

X

R

~

S
S
S
S
S
S
S

2
0
0

2
1
1
2
1
2

X
X
X

Computer
IBM 705-3
IBM 702

IBM 709
IBM

650~

Sperry Rand
n03A

System Name
or Acronym
FORTRAN
AUTOCODER

Developed by
IBM-Guide
IBM

AUTOCODER
ASSEMBLY
SCRIPTa

IBM
IBM
G. E. Hanford

R

FORTRAN
SCAT

IBM
IBM-Share

A
R

X

ADES II
BACAIC
BALITAC
BELL L1 a
BELL L2, L3
DRUCO I
EASE II
ELI
ESCAPE
FLAIR
FOR TRANSIT a
ITa
MITILAC
OMNICODE
RELATIVE
SIR
SOAP I
SOAP IIa
SPEED CODING
SPUR
FORTRAN (650T)
COMPILER Ia
FAP
MISHAP
RAWOOP-SNAP
TRANS-USE
USEa
IT
UNICODE

Naval Ord. Lab
Boeing Seattle
1\U.T.
Bell Tel. Labs
Bell Tel. Labs
IBM
Allison G.M.
Equitable Life
Curtiss-Wright
Lockheed MSD, Ga.
IBM-Carnegie Tech.
Carnegie Tech..
M.LT.
G. E. Hanford
Allison G.M.
IBM
IBM
IBM
Redstone Arsenal
Boeing Wichita
IBM
Boeing Seattle
Lockheed MSD
Lockheed MSD
Ramo~Wooldridge
Holloman A.F.B.
Ramo-Wooldridge
Carn. Tech.-R-W
R Rand St. Paul

C

X
X

Code
A
A

M.L.

Assem.

Inter.

X

X
X

X

X
X
X

X

X
X

C
X

X

Oper.
Date
Compo
X
Dec. 58
X
Sept. 58

X
X
X
X
X
X
X
X

X

S

X
X

Jan. 59
Nov. 58

1\12
M2

1\1
1\1

2
2

X

X
X
X

Feb. 56
Aug. 56
Jan. 56
Aug. 55
Sept. 55
Sept. 54
Sept. 56
May 57
Jan. 57
Feb. 55
Oct. 57
Feb. 57
July 55
Dec. 56
Aug. 55
May 56
Nov. 55
Nov. 56
Sept. 55
Aug. 56
Jan. 59
1\1ay 57
Oct. 56
Oct. 56
June 57
Nov. 56
Feb. 57
Dec. 57
Jan. 59

S2

S
S

1
1
2
0
0
0
2
0
2
0

X
X

X

X

X
X

X
X

R

X

X

X

X

X

A

X
X

R
C

R

X
X
X
X

Algeb.
X

Sl

X

X

Symb.
2
2

X

X
X

A
C

Fl
Pt
M
S

Apr. 55
June 54
July 55

X
X

Indexing
1\:12

X
X

X
X
X
X

X

S

Sl
Sl
Sl
S2
Sl
Sl
Sl
S2
S2
Sl
Sl
Sl

S
S
S
S
S
S
S
S
S
S
S
S

Sl
1\11
M1
1\11
M1
S2
S2

1\1
S
S
1\1
S
S
S
1\1
S
1\1
S
1\1

~
~

Z

(j)

X

1
2
2
1

X

»Z
C

()

0

2

C

Z

2

1
0
1
1
2
2
1
2

0

»

2

0
1
2

:;;c

(j)
:;;c

2
M
Sl
1\1
1\12

""C

(j)

X
X

t;-l

X
X

U'1

'-I

TABLE

Computer
Sperry Rand
1103

Hperry Rand
Univac
I and II

23.

AUTOMATIC CODING SYSTE~IS

System Name
or Acronym
CHIP
FLIP/SPUR
RAWOOP
8NAP

Developed by
Wright A.D.C.
Convair San Diego
Ramo-Wooldridge
Ramo-Wooldridge

AO
Al
A2
A3, ARITHMATICa
AT3, MATHMATICa
BO, FLOWMATICa
BIOR
GP
MJS (UNIVAC I)
NYU,OMNIFAX
RELCODE
8HORT CODE
X-I
IT
MATRIX MATH

Remington Rand
Remington Rand
Remington Rand
Remington Rand
Remington Rand
Remington Rand
Remington Rand
Remington Rand
UCRL Livermore
New York Univ.
Remington Rand
Remington Rand
Remington Rand
Case Institute
Franklin Inst.

M.L.
X
X

R
R

C
C
A
R

Assem.
X
X

X
X
X
X
X

X
X
X

Inter.
X
X
X

X
X
X
X
X
X
X
X
X

Oper.
Compo
Date
Feb. 56
June 55
March 55
Aug. 55
X

X
X
X
X
X
X
X
X

C
C

X
X
X

X
X
X

May 52
Jan. 53
Aug. 53
Apr. 56
June 56
Dec. 56
Apr. 55
Jan. 57
June 56
Feb. 54
Apr. 56
Feb. 51
Jan. 56

X
X

Indexing
81
SI
81
81

FI
Pt
S
8

81
81
81
SI
SI
S2

8
8
8
S
S
S

S2

S

8

S
8
82

S

8ymb.
0
0
1
1
1
1
1
1
2
2
1
1
1
1
1
1
1
1

Algeb.

U1
00

~
(j)

=i
X

>-

r-

()

0

~

."

C

-I

m

;;:c

X

Jan. 58

."

;;:c

0

(j)

Sperry Rand
File Compo

ABC

R Rand St. Paul

Sperry Rand
Larc

K5
SAIL

UCRL Livermore
UCRL Livermore

Burroughs
Datatron
201. 205

DATACODEI
DUMBO
ITa
SAC
UGLIAC
STAR

Burroughs
Babcock and Wilcox
Purdue Univ.
Electrodata
United Gas Corp.
Dow Chemical
Electrodata

UDECIN-I
UDECOM-3

Burroughs
Burroughs

Burroughs
UDEC III

Code

~

(RET''. 141) (Continued)

;;:c

June 58
X
X
X
A
X

M2
M2

M
M

Aug. 57

MSI

S

July 57
Aug. 56
Dec. 56

S2

S
M
S

MIS
M

S
S

X
X
X
X

X
X
X

X
X
X

57
57

2
2

X

>~
~

Z

(j)

1
1
0

X

System Name
or Acronym
ALGEBRAIC
COMPREHENSIVE
SUMMER SESSION

Developed by
M.LT.
M.LT.
M.LT.

EASIAC
MAGIC

Univ. of Michigan
Univ. of Michigan

Datamatic
Ferranti
Illiac
Johnniac
Norc

ABC I
TRANSCODE
DEC INPUT
EASY FOX
NORC COMPILER

Datamatic Corp.
Univ. of Toronto
Univ. of Illinois
Rand Corp.
Naval Ord. Lab

Seac

BASE 00
UN IV. CODE

Natl. Bur. Stds.
Moore School

Computer
M.LT.
Whirlwind
Midac

a
b

Code
R

M.L.

Assem.

Inter.

Compo

Oper.
Date
Nov. 52
June 53

Indexing
S2
Sl
Sl

FI
Pt
S
S
S

Aug. 54
Jan. 54

SI
Sl

S
S

l\I1

S
S
S
M

X
X

X

X

X

X
-.r
~"X

X
X
X
X

R
R
R
X

X

X
X
X
X

X

Aug. 54
Sept. 52
Oct. 55
Aug. 55

X

Apr. 55

SI
M2

Symb.
1
1
1

Algeb.

X

X

:;:c

o(j)

:;:c

Indicates present heavy usage.
Pact group contains Douglas SM, ES, LB, Lockhee:l, NOTS, N. Am., Rand.

Chart Symbols
Code

-c

R = Recommended for this computer, sometimes only for heavy usage.
C = Common language for more than one computer.
A = System is both recommended and has common language.
M = Actual Index registers or B boxes in machine hardware.
Indexing
S = Index registers simulated in synthetic language of system.
1 = Limited form of indexing, either stopped undirectionally or by one word only, or having certain registers applicable to only certain variables,
or not compound (by combination of contents of registers).
2 = General form, any variable may be indexed by anyone or combination of registers which may be freely incremented or decremented by
any amount.
Floating point M = Inherent in machine hardware.
S = Simulated in language.
o = None.
Symbolism
1 = Limited, either regional, relative or exactly computable.
2 = Fully descriptive English word or symbol combination which is descriptive of the variable or the assigned storage.
A single continuous algebraic formula statement may be made. Processor has mechanisms for applying associative and commutative laws to
Algebraic
form operative program.
M.L.
= Machine language.
= Assemblers.
Assem.
= Interpreters.
Inter.
= Compilers.
Compl.

»

~
~

Z

(j)

»
z
o

()

o

o
z

(j)

~
0'1

-.0

2-160

DIGITAL COMPUTER PROGRAMMING

2. Most early efforts were in the direction of interpreters, but most
efforts now are in the design of compiler-translators.
3. Many systems have been replaced by newer, more efficient languages.
DevelopIDen t

Some of the most important steps in development of automatic programming are listed below. The ideas listed here were proposed by many
persons; among those particularly to be mentioned are M. V. Wilkes,
D. J. Wheeler, and S. Gill of Cambridge University, C. W. Adams of M.LT.,
Grace Hopper of Remington Rand, and N. Rochester of IBM.
1. Understandable Language. Translation, MneIDonic Codes,
COIDpiling, and Interpretation. The ambiguity of instructions and
numbers inside machines makes instructions appear only as numerical
sequences.
(a) Programs were devised which automatically translated both numbers and instructions from an external decimal language (more useful to
human beings) into an internal binary language (more useful to the
machine). The important step was the recognition of the principl~ of a
dual language system and a programmed translation between the two
languages, with the computer to perform the translation.
(b) Along with the numerical translations came the use of "mnemonic"
-easy to remember-instruction operations, such as standard algebraic
notations, or abbreviations of the corresponding English words.
These are now known as "input translation programs." The general
idea of translation leads to two basic techniques: pretranslation or compiling, and running translation or interpretation.
(c) Compiling requires a large amount of medium access storage
(generally magnetic tape). The compiling process usually occurs only once.
(d) Interpretation is the only feasible translation method in machines
with small amounts of storage; this process is less efficient since the same
translation may occur over and over again during performance of a
problem.
The first attempts to improve the procedures of coding in machine
language resulted in a set of input orders that changed alphanumerical
sequences representing instructions on teletype tape over into internal
binary machine notation. (Ref. 108.) Today, most of the automatic
programming schemes make use of the pretranslation idea.
2. Easy-to-Correct and Easy-to-Use Input Languages. SYIDbolic Addresses and Control Instructions. The use of external

languages that were easily understandable, such as mnemonic codes, does
not prevent arithmetic, logical, or clerical programming mistakes. The
translation process, developed to handle the requirement of an understandable input language, can also be applied to the use of so-called sym-

PROGRAMMING AND CODING

2-1.61

bolic or floating addresses, which have no permanent absolute machine
internal counterparts. With these addresses, which are almost completely equivalent to an algebraic notation, assignment of addresses can be
made completely automatic by the computers themselves.
The use of such automatic address assignment, it turns out, requires
two "passes" or traverses through the input information in order (1) to
find out what algebraic addresses are present and what their internal
equivalent absolute addresses are, and (2) to assign these absolute addresses wherever the floating addresses occur (Ref. 21). (D. J. Wheeler
has shown, for the EDSAC II, that two passes are not always necessary.)
The assignment of absolute addresses cannot take place until all algebraic
addresses are known. The existence of these two passes through information immediately presents opportunities to perform all sorts of other
transformations on the input information. From this grew the concept of
floating or symbolic address (Ref. 106). A similar system was developed
shortly thereafter for the I;BM 701 (Ref. 87), using a Dewey decimal type
of symbolic addressing system.
In order to control the processes of correction, reassignment, and deletion,
and to handle the process of translation, a new kind of instruction is required. So-called control combinations, which tell the translation program,
rather than the computer hardware, what is to be done, . give another
dimension of latitude of expression between the programmer and machine.
These new "tag words" allow the instruction process on input to expand
indefinitely.

3. Elhnination of Repetitious Coding. Subroutines, AsseInbly
Prograllls, and Synthetic Instructions. To eliminate duplication of

effort that occurs when similar problems are repeated often, routines were
developed which performed standard operations. Such routines could be
called on by any programmer without the necessity of being rewritten
from the beginning. To make the most of such routines, complete generality was required. The floating addresses developed for correction
purposes helped provide this feature; similar so-called preset and program
parameters were devised to make such routines flexible. Such assembly
programs alleviated much of the effort in making corrections to instructions by insertion or deletion. Because of the "floating" nature of the
symbolic addresses which were retranslated at each new machine input,
insertions and deletions caused no further requirements for changing other
instruction addresses. With the advent of secondary storage in the form of
magnetic drums and magnetic tape, the need for two inputs of the program
punched tape or cards was eliminated; the two passes could be made
completely inside the machine.
The combination of these standard subroutines (see Subroutines below),
as they came to be called, with the input translation (compiling) techniques

2-162

DIGITAL COMPUTER PROGRAMMING

brought forth the concept of automatic assembly of programs. Here code
words called pseudo instructions or synthetic instructions are used to call in
and store precoded subroutines in a main program. Such open subroutines,
without automatic entry and exit, worked best with compiling techniques;
closed subroutines, which act in the same unitized manner as an ordinary
instruction, fitted most easily into the interpretive schemes.
Extension of assembly programs to the use of pseudo instructions that
replaced one line of coding external to the machine by more than one
inside, allowed an increase in the number and variety of instructions
available to the programmer. Such efforts probably reached their peak
in the PACT system (Ref. 6) developed for the IBM 701 by a group of
Los Angeles users of that equipment. This system included automatic
insertion of scaling instructions for fixed-point computations as well as a
long list of pseudo instructions .. A more recent example of such an assembly is the Share Assembly Program (SAP), and the X-I assembly system
for Univac (Ref. 100). Details of SAP are given in Sect. 9.
4. Easy Mistake Discovery. Utility Programs. Relatively straightforward methods of correcting mistakes did not speed up program checkout
as much as would be expected, since before programming mistakes can be
corrected, they must be found. Unless complete retranslation of stored
information is made available to a programmer, he is forced to know and
use both external and internal languages, which nullifies some of the advantages discussed under 1 above. Such retranslation adds to the complexity of the translation procedure, as well as causing possible ambiguities
because of many-to-one input translations. Nevertheless, such retranslation can contribute to aiding the discovery of human programming
mistakes.
However, there are many difficulties attendant with a retranslation to
symbolic language in mistake diagnosis. One of these difficulties is that
a complete directory or dictionary must be retained in the machine and
consulted. Often, retranslation becomes difficult because a machine cell is
not uniquely identifiable with a symbolic address. These difficulties have
led, in many cases, to performing diagnosis in machine language. Unfortunately, this often leads the programmer to another difficulty: making
corrections in machine language.
Diagnostic procedures fall into two categories: static or dynamic. Static
procedures give results only at specific points during solution of a problem,
usually only at the beginning, end, or both. "Sieved" or "changed-word
post-mortems," or storage printouts, have proved a welcome use of the
principle of machine screening of unnecessary information.
Dynamic mistake diagnosis, on the other hand, has often suffered from
the fact that it has of necessity been interpretive and, hence, machinetime consuming, or else that it has put out information in an unretranslated

PROGRAMMING AND CODING

2-16.3

form. A new concept in dynamic procedures, which give results as the
problem is being performed, combines built-in automatic switching with
programmed retranslation to speed up this process and make it competitive in time. This is discussed in Sect. 10 under Utility Programs.
5. Prevention of Mistal{cs bcforc They Occur. Gcncrators. The
widespread use of precoded subroutines, which had been checked thoroughly
for both arithmetic, logical, and clerical mistakes, is an example of a
preventative technique. Instead of storing complete programs, however,
a more efficient method appears to store programs called generators that
can generate large classes of programs. If a correct algorithm can be developed by which a computer can generate a general class of small problems,
mistake-free codes can be produced directly. Similarly, automatic assembly and automatic subroutine call-in techniques, if correct themselves,
will generate mistake-free programs.
6. Unification of Techniqucs. Combined Systems. Systems using
portions of the techniques listed above have been developed (Ref. 8).
Certain of the categories are directly opposed. Hence, the useful combinations are employed with the objective of a self-sufficient method of
machine operation that requires a minimum of human intervention.
7. Universal Computer Language. The progress through the steps
listed above leads, of necessity, toward some sort of standardization of the
basic input language of all computers, as it looks to the users, before the
computer matches the internal language to the external human language.
Present day lack of compatibility between algorithms or programs developed on one computer and another is causing as much undue duplication
of effort in space as occurred in time before the advent of subroutines.
Universal languages, more or less standardized, exist for certain types
of problems, for example, those that can be expressed entirely algebraically.
9. AUTOMATIC PROGRAMMING: ASSEMBLY PROGRAMS
Structure and Objectives

Basically an assembly program accommodates programs written in
machine language. However, it allows the programs to be written with
certain flexibilities and conveniences not available in pure computer
language. The assembly program usually provides for the following:
1. Specification of all numerical constants in convenient decimal form.
(Provision is usually made, however, to allow the writing of binary numbers in appropriate cases.)
2. The use of symbolic addresses, addresses with mnemonic content.
3. The use of mnemonic two- or three-letter pairs to describe machine
instructions.

2-164

DIGITAL COMPUTER PROGRAMMING

4. The use of free addresses for instructions to allow the arbitrary
naming of an instruction without stating its location in the storage.
5. The automatic assembly of precoded programs (subroutines) into the
program, often by the use of pseudo instructions.
Two kinds of assembly programs are possible:
1. One-pass assemblers, where the computer, in translation, makes one
pass through the data to perform the required translation.
2. Two-pass assemblers, where the computer, in translation, first makes
a pass through the data to discover all symbolic addresses and to determine
subroutines to be used. The symbolic addresses are assigned machine
addresses, and the subroutines are included in the second pass.
If symbolic addresses are used, and they are in almost every assembly
program, a directory must precede the data''in' the case of a one-pass compiler. This directory is simply a list of symbolic addresses with corresponding machine addresses; the directory tells the assembly program how
to assign the machine addresses. The directory is developed during the
first pass through the data, through the technique involving the use of a
location counter (see Assembly Procedure, below).
The difference between an assembly program and a compiler, discussed
in following sections, is tenuous. A compiler is considered to allow more
complex operations. It usually expands a convenient problem-oriented
language (such as algebraic formulas) into machine language. However,
the difficulty in terminology arises when the assembly program allows
many powerful pseudo operations which result in appropriate subroutines
included into the program. The compiler, in its truest sense, usually makes
no provision for machine instructions, or at lease deemphasizes them,
while the assembly program, as the name implies, assembles pieces of
machine instruction programming.
Two assemblers are prominent; the USE Compiler (Ref. 152) prepared
for the Univac Scientific Exchange (USE) for the Univac 1103A by The
Ramo-Wooldridge Corporation; and SAP, Share Assembly Program,
prepared for the Share Cooperative Programming Group for the IBM 704
by the United Aircraft Corporation. Both these compilers are of the twopass type, as are nearly all modern assembly programs. An assembly program of the one-pass variety was RAWOOP (Ramo-Wooldridge One-Pass)
assembler (Ref. 8). The SAP program is described in some detail below.
Assmubly Procedure

The procedure of assembly is in two parts:
1. Examination of the program to be assembled in order to define each
symbol used in writing the program. A location counter L is used to specify
the absolute location of each word (number or instruction) in the program.
L is set initially to an integer common to all programs, or in exceptional

PROGRAMMING AND CODING

2-165

cases, supplied to the assembly program by the program being assembled.
Thereafter, each new instruction input increases the contents of L by one.
Simultaneously a table or directory is constructed. Each directory entry
gives an equivalence relationship between a symbolic address S and the
corresponding absolute machine address Ls assigned by the counter at the
time of input. Entries in the table may also be made by means of certain
pseudo operations. The order of the absolute instructions produced by the
assembly program is governed only by the order in which information is
input.
2. During the second assembly pass, the value of the counter L is computed in the same manner as on the first pass. In addition, replacements
are made for symbolic addresses by integers stored in the directory as a
result of the first pass.

Share AsseInbly PrograIn (SAP)
This assembly program was written for the IBM 704 computer (Ref. 143).
Instructions for this system are written with addresses expressed as combinations of symbols and decimal integers. A typical IBM 704 instruction
has operation, address, and a tag and decrement to be used with that
machine's index registers. In addition to instructions, data in decimal,
octal (the IBM 704 is a binary machine internally), or Hollerith alphanumeric code may be read from punched cards. Previously coded library
routines may be conveniently inserted into a program whenever desired.
A number of pseudo operations which help carry out the assembly
process are as follows:
1. Origin specification (ORG). The location counter L is set to the
value of the expression (previously defined symbol) in the address portion
of the instruction. (This allows gaps in the sequence of input assignment
at any stage.)
2. Equality (EQU). The symbol appearing to the left of the operation
code is assigned the integer value given by the previously defined expression
in the address portion of the instruction. (This allows programmer
assignment of pre-set parameters.)
3. SynonYIn (SYN). The symbol appearing to the left of the operation code is assigned the integer value given by the previously defined
expression in the address portion of the instruction. (This allows programmer assignment of blocks of storage.)
4. DeciInal data (DEC). The decimal data following are to be converted to binary and assigned to consecutive locations L, L + 1, .. '.
Successive words of data on a card are separated by commas. Depending
on whether or not each number contains an exponent or not, it will be
translated into a floating point, or scaled fixed point number, or fixed
point integer.

2-166

DIGITAL COMPUTER PROGRAMMING

5. Octal data (OCT). The octal data following are to be converted
to binary integer form, and assigned to consecutive storage locations,
L, L + 1,···.
6. Hollerith data (BCD). The 10 six-character words of Hollerith
(binary-coded-decimal) information are read and assigned to locations L,

L

+

1,···.

7. Block started by sYlllbol (BSS). The block of storage from L to
L + N - 1, where N is the value of the expression following the operation,
is reserved, and any symbol preceding the operation is assigned the
value L.
8. Block ended by sYlllbol (BES). Similar to BSS, except any
symbol preceding this operation is assigned the value L + N.
9. Repeat (REP). Two expressions, separated by a command, following this operation, define integers M and N such that the block of instructions or data preceding the REP operation in locations L, L + 1, ... , L +
M - 1 is repeated N times, stored in locations L + M, L + M + 1,
... , L + (MN) - 1.
10. Library search (LIB). The library routine of k words, identified
by the symbol preceding the operation, is obtained from a library tape and
inserted in the program being assembled at locations L, L + 1, . . . ,
L + k - 1. Any symbols appearing in the library routine are entered in
the directory and properly defined.
11. Heading (HED). If two or more programs use the same symbolic
addresses, they may be combined with this heading pseudo instruction
which prefixes each symbol used in the following program by the single
character given in the usual address position. Thus nonunique designations are made unique.
12. Define (DEF). This pseudo instruction assigns the value of the
expression in the address position to any subsequent undefined symbols
in successive integer order.
13. Relllarl{s (REM). Any Hollerith (alphanumeric) characters
following this operation will be printed in the output listing of the assembled program. but not processed in any other way.
14. End of progralll (END). The value of the expression in the
address position is punched as the transfer (starting) address in an IBM
704 binary transfer card, the last in the output deck.
The input to this assembly program, on the IBM 704, is either a binarycoded-decimal (alphanumeric) magnetic tape, previously generated by
peripheral card-to-magnetic-tape equipment, or punched cards.
Output is on binary nonrelocatable (fixed address) or relocatable
punched cards (in machine storage) along with a printed copy of the entire
program with or without library routines suppressed.
Additions to an already assembled program can be made if the table of
symbols (directory) punched out during assembly is available. Upon

PROGRAMMING AND CODING

2-167

reloading this table, additional new parts may be assembled. Any change
to the original program which does not require relocation of any part of
the program or reassignment of any symbols, may be made by assembly of
only those parts of the program requiring change.
An Example of a SAP Program. A SAP program for evaluation of
a quadratic form

is given in Table 24. The first column (a) gives the octal machine location,
the next four columns (b) (12 octal digits with sign) give the translation,
the next column (c) the symbolic location, operation or pseudo-operation,
and symbolic address, tag, and decrement. The last column (d) explains
the instruction. The reader is referred to the instruction list for the IBM
704 for the meaning of the operation codes. (Sect. 6.)
TABLE

24.

A SAP PROGRAM FOR EVALUATION OF QUADRATIC FORM

c

b

a

04000
04001
04002
04003
04004
04005
04006
04007
04010
04011
04012
04013
04014
04015
04016
04017
04020

-0
-0
0
1
-2
0
0
0
1
2
0
0
0
0
-3
0
1

53400
63400
50000
77777
00001
76500
26000
30000
77777
00001
60100
56000
26000
30000
77754
60100
00000

5
4
1
1
4
0
0
1
1
4
0
0
0
0
1

04046
04047
04050
04051

0
0

00000
00000
00000
00000

0
0
0
0

a
0

a

4

04000
04011
04020
04022
04004
04017
00043
04046
04022
04011
04005
04051
04050
04047
04051
04050
04001
00005
00052
04021
00000
00000
00000
00000
00001
00004
04000
00000

P4
P6
P3

PI

ORG 2048
LXD PI, J + K
SXD P2, K
CLAA+ 1, J
TXI P6, J, -1
TNX P5, K, 1
LRS 35
FMPX
FAD A + 1, J
TXI PI, J, -1
TIX P3, K, 1
STO S
LDQZ
FMPY
FADS
TXL OUT, J, - R/2 + 1
STO Z
TXI P4, K
EQU5
EQU N*N + 3*N + 2
BSS R/2

P5
P2
N
R
A
X
Y
Z
S
EQU 1
J
K EQU4
END P4 - 1
OUT

d

Initialize index registers
Store K
Obtain first element
X
X
Form polynomial
InX
X
Step coefficient
Test reduced K
Store partial sum
Form polynomial
In Y
X
X
X
X

[Note that the a.;" am

stored in the order ao o•
a14, a04, a23, a13, a03,
•• " aOO from location

A on.

10. AUTOMATIC PROGRAMMING: SUBROUTINES. SUBROUTINE

GENERATORS. UTILITY PROGRAMS. AND INTEGRATED SYSTEMS

Subroutines are precoded, pretested, conventional coded programs, which
can be used over and over again in many different programs and by many
different machine users. Subroutines were first used with the Bell relay

2-168

DIGITAL COMPUTER PROGRAMMING

computers (Ref. 96); their use with variable stored program machines was
first expounded by Burks, Goldstine, and von Neumann (Ref. 19). The
EDSAC group first experimented successfully with subroutines on a
machine (Ref. 108).
Synthetic Instructions. A synthetic or programmed instruction is a
subroutine or precoded combination of real instructions that may be treated
conventionally as an instruction. For example, some machines have builtin instructions for square rooting. Such instructions are real instructions;
in other machines exactly the same operations can be performed only by a
subroutine.
Structure of Subroutines. In structure any subroutine is nothing
more than a function of one or more variables. These variables, which
are considered to be the parameters of the subroutine, may be numbers,
addresses, or very infrequently, actual instructions. The variables for a
subroutine can be either free or floating variables (see Sect. 4). A parameter to be used with a subroutine or any coded program is a variable of the
program. A program parameter, as defined by Wilkes et al. (Refs. 108
and 109) is the machine counterpart of the floating variable. Such a parameter is thus a number calculated elsewhere in a program, whose value is not
known until just before the performance of the subroutine, when it must be
assigned. A preset parameter, on the pther hand, corresponds to a free
variable, assigned at the beginning of a problem and remaining constant
from one performance of the subroutine to the next.
For example, if a subroutine is to be used to calculate a function to the
same precision each time it is performed, the constant determining the
precision of the result could be assigned at the beginning as a preset parameter. On the other hand, if the tolerance must be changed at each performance of the subroutine, it is actually a free variable, and must be
inserted as a program parameter.
Open Subroutines. An open subroutine is a combination of instructions which must be inserted directly into a larger program. For each
successive operation of the subroutine another copy or set of instructions
must therefore be stored. The open subroutine has been most thoroughly
investigated by the programmers of the Univac staff, including Hopper and
Ridgway (Ref. 2), in the larger framework of the compiler or "compiling
routine." Its advantage is its simplicity of entrance and exit (control
moves sequentially in succession into, through, and out of the subroutine),
which eliminates the need for red tape operations. The chief disadvantage
is that successive copies must be stored for successive operation of the
subroutines, which require a large amount of storage. The success of the
Univac compiler schemes came because of the availability of large amounts
of magnetic tape storage that could be handled efficiently. A sample
flow diagram for successive open subroutines is shown in Fig. 23.

PROGRAMMING AND CODING

Main
program

FIG. 23.

Open
subroutine

Main
program

Open
subroutine

Main
program

I

(Contd.)

II

(Contd.)

2-169

Open
subroutine
I (repeated)

Main
program

(Contd.)

Use of open subroutines interspersed with hand-coded program.

Closed Subroutines. The closed subroutine eliminates the duplications
of storage required for open subroutines. One closed subroutine can perform the same function of many copies of an open subroutine. A closed
subroutine is not stored in its proper place in the linear operational sequence in storage, but occupies a storage position away from the main
coded program which is to refer to it. Such a subroutine is entered by a
change of control operation which sends control to the entrance (often the
first) instruction of the subroutine. After completion of the operations
required by the subroutine, it is then necessary for it to return control to
the instruction following the change of control instruction which transferred
control to it originally. If this process is done automatically, as it generally
is, the subroutine is called a closed automatic subroutine. The flow diagram
for such a subroutine used several times during a program is shown in
Fig. 24.
Automatic Exit from a Subroutine. The methods providing for
automatic exit from a subroutine are in general two, depending on the
absence or presence of a built-in instruction to aid the process. For an
automatic return of control, the subroutine needs to know, as one of its
floating variables, the setting of the control counter or instruction counter
at the change of control instruction that originally transferred control.
On the machines which have no special operation for this purpose, this
contents of control must be considered a program parameter. The process
of entering such parameters into a subroutine has been labeled preliminary
preparation of the subroutine for use.
Wheeler Method (Ref. 108). This standard method of preliminary
preparation makes use of the following preparatory sequence of operations:
1. An instruction is stored in a standard location (usually in a machine
with a single-address code, the accumulator). The instruction stored is
that one which performed the storage.
2. Addition of an instruction considered a constant (usually containing
three in the address portion) to the stored instructions so as to make the
result a change of control instruction.

~
.......

o

c

Main
program

Main
program

(j)
=i

Main
program

02 1

(Contd.)

..

(END

(Contd.)

»
r()

o
~
"-tC
m

;.0

{3

Closed
subroutine ------ ,( 'Yi
I

Closed
subroutine
II

1'3 )

~

Closed

I subroutine

~"--1

t-I

o·
}

II (Contd.)

"o

:;:0

(j)
:;:0

FIG. 24.

Use of closed subroutines in a program. (Here the main program calls on subroutine I, and also on subroutine II,
which in turn calls on subroutine I.)

»
~
~

Z

(j)

PROGRAMMING AND CODING

2-171

3. Entry into the subroutine by a standard change of control instruction.
This procedure usually leaves a change of control instruction containing
as its address portion the proper return address for the subroutine. The
first instruction of the subroutine must then be to store this instruction in
the proper exit location of the subroutine.
Deferred Preparation. This method can be used only when the instruction code for the computer contains an operation designed especially to
accomplish this deferred preparation (Ref. 17). Two machines with such
an instruction are the Whirlwind I (single-address) and the MIDAC
(three-address). The Whirlwind I change of control instructions subprogram (sp) and conditional program (cp) automatically transfer the present location of control (contents of the control counter), increased by one,
to a standard position, the machine's A register (Ref. 57). The first
instruction of the subroutine must be a transfer address, ta n instruction
(where n is a storage location), which stores the address given in the A
register in the address position of storage location n, which is usually the
exit change of control instruction. When this instruction is processed,
control will transfer to the location following the original call-in instruction.
On the MIDAC, one three-address instruction, file (fi), performs the
deferred preparation (Ref. 25). This change of control operation transfers
control to the subroutine entrance, at the same time storing the return
address in the proper position in the exit instruction or in a previously
agreed upon conventional location.
Subroutine Specifications Manuals. How subroutines are used
depends on the storage medium on which they are stored. Generally
subroutines have been stored in two or more fashions at once. Usually a
written copy of the subroutine is stored in a subroutine specifications
manual compiled in a looseleaf notebook form. Each subroutine is usually
explained thoroughly on a subroutine specification sheet which gives a
thorough statement of its characteristics, including:
1. Preset and program parameters to be assigned.
2. Method of such assignment.
3. Length of subroutine.
4. Entry of subroutine.
5. Exit of subroutine.
6. Type (open or closed).
7. Time for execution expressed as a function of the parameters.
8. Precision of the results.
9. Description of the numerical process involved.
A second sheet, containing the actual coded program for the subroutine,
is also kept on file in the subroutine specifications manual. The programmer who desires to know the actual behavior of a subroutine may use this

2-1.72

DIGITAL COMPUTER PROGRAMMING

manual as a reference. An example of a subroutine library is given in
Table 25. Examples of typical storage specifications forms for the MIDAC
and Univac 1103 computers are given in Tables 26 and 27.
TABLE. 25.

SUBROUTINE LIBRARY FOR THE MIDAC COMPUTER

The following is a list of all the subroutines available for use on MIDAC. All
subroutines are available on paper tape and seven have also been stored permanently on the drum. The specification sheets for the subroutines marked
with an asterisk have been included under Tape Storage Subroutines and those
marked "Drum" have been included under Drum Storage Subroutines.
A. Printout
1. Printout subroutine: Binary to decimal (adjustable format), drum
2. Printout subroutine: Binary to decimal (fixed format)
3. Graphical output
B. Number conversion
1. Fixed point number conversion: Binary to decimal (integers), drum
2. Fixed point number conversion: Decimal to binary
3. Standardized number conversion: Binary to decimal (approximate)
4. Standardized number conversion: Binary to decimal (exact)
5. Fixed point double precision conversion: Decimal to binary (fractions)
6. Floating point number conversion: Binary to decimal (approximate)
C. Interpretive routines
*1. Floating point interpretive routines
*2. Interpretive routine for operations on complex numbers
D. Logarithm and exponential routines
1. Natural logarithm, drum
2. Exponential (for fractional exponents only), drum
*3. Exponential (for fractional and integral exponents)
E. Square root
1. Square root (fixed point, single precision), drum
*2. Square root (floating point numbers)
F. Trigonometric routines
1. Sine
2. Cosine
3. Sine, cosine, drum
4. Arctangent (polynomial approximation)
5. Arctangent (Taylor's series), drum
G. Random numbers
*1. Normal random deviates
H. Integration
*1. Integration by Simpson's rule
1. Matrix routines
1. Transpose of a square matrix
*2. Transpose of a rectangular matrix
3. Matrix multiplication for square matrix
*4. Matrix multiplication for rectangular matrices
5. Jacobi diagonalization
J. Linear systems
1. Seidel code
*2. Jordan elimination

TABLE

26.

Title
No. of consecutive
registers required
No. of instructions
and constants
Parameter (see description)
Results
Method of entry
No. of modified
instructions
Error halts
Description

MIDAC

SUBROUTINE SI'ECIFICA'l'ION SHEET

Normal Random
Deviates
HI (exclusive of
registers 510 and 511)

Tape
Classification
Machine Code

14D20 m2
Closed
Relative Address

19
Location
510

Di

510
511

Di+l
Ni
Standard

Range
0< Di < 244
0< Di+l
Ni ~ G

< 244

Scaled
2- 44
2- 44
2- 4

2

None

·When a correct value of Di (as explained below) is placed in register 510, the result, Ni, is
a pseudo random number from a normal distribution with mean 0 and a standard deviation of
1. The routine takes Ri.o = Ri.;· 5 17 (low order 44 bits). To obtain Ni the high order
14 bits of the (j = 1,' •. , 12) are extracted, shifted, added together and the result subtracted
from G. 2""<4. Do = 5 17 and the D's are defined by Di:l = Ri.;+12. A correct value of D must
be placed in register 510 before each entry to the subroutine. If the contents of cell 510
are not changed between successive files to this subroutine a correct value of D will already
be in that cell. Otherwise Di:l must be transferred and saved by the program and replaced
in cell 510 the next time this subroutine is to be used. For programs requiring more than
one period on the machine the last Di:l may be printed out and read in again at the beginning
of the next run. However, since an error in a single bit or digit during readout, transcription,
or read in might destroy the validity of all further runs, the following table of correct starting
values of D is supplied. D IOOO " (n = 0, 1, 2, .•. ) are tabulated.
Coded by Bauer and Perkins
Checked by
Date
March 11, 1954
Hexadecimallislin{]

n

o
1

2
3
4
5
6
7

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

D IOOOn
Obla2bc2ec5
Oe35a475d45
3237a9fcbc5
2156d657a45
9a6ec3868c5
Of800b89745
843948605c5
ac4a140b445
4a3d088a2c5
cd9dbfdd145
31a5d403fc5
Ibb3defee45
39cb7acdcc5
e1154170b45
ec5ecce79c5
da9ab732845
2d609a516c5
076d1044545
Ob21b30b3c5
79051ca6245
8e4237150c5
232bac57f45
89b5066edc5
abf98f59c45
6ab8e118ac5
7bd795ab945
08df47127c5
4d7e8f4d645
7609085c4c5
7 df74c3f345
ce66f4f61c5

2-174

DIGITAL COMPUTER PROGRAMMING

TABLE

27.

A

UNIVAC

1103

SUBROUTINE SPECIFICATION SHEET

Linear Matrix Equation Solver (AX

=

B)

Specifications
Identification tag:
Type:
Storage:

Program entrance:
Program exit:
Alarm exit:
Machine time:

Mode of operation:
Coded by:
Code checked by:
Machine checked by:
Approved by:

MTI-O
Subroutine available on cards for assembly
217 instructions, addresses
lOMOO (OOMOO) thru lOM51 (OM51)
llMOO (OlMOO) thru llM37 (OlM37)
12MOO (02MOO) thru 12M63 (02M63)
13MOO (03MOO) thru 13M62 (03M62)
12 constants in program, addresses
CINOO (CONOO) thru C1Nll (CONll)
Temporary storage used, but not stored in program
(see text).
229 words total program storage.
The constant pool and temporary storage pool are used
by this routine.
Address lOM02
Address lOMOl
The alarm exit is used by this routine.
For all storage in ES time is approximately (in milliseconds) :
.3n3 + .9n 2 m + 1.7n2 + .3m2 + 2.5nm
+ 1.8n + 1.6m + 2.7 (matrix size = n X m)
For temporary storage (see text) on drum add approximately (in milliseconds):
.04[n3 + 4n 2 m + 3n 2 + lOmn] + 51
Fixed point
October 25, 1955
W. L. Frank
November 15, 1955
W. L. Frank
November 17, 1955
W. L. Frank
November 30, 1955
W. F. Bauer

Description
This subroutine solves the linear matrix equation AX = B, where A is a nonsingular matrix of size n X nand B has the dimensions n X m. The solution,
X = A-IB, is a matrix of size n X m. For the special case, when B is the
identity matrix (I), one obtains the inverse of the matrix A. Otherwise, one can
solve m sets of n simultaneous linear equations in n unknowns.
Considerable flexibility is afforded the programmer with respect to the storage
of the matrices A, B, and the answer X. The programmer must code two auxiliary routines as follows:
(a) The first must provide successive rows of the augmented matrix [A, B].
(When B = I, one only need supply rows of A.) Each row, consisting of
(n
m) elements (or n elements when B = 1), must be set up in the
fixed location immediately following the subroutine. This data must be
scaled at 235 and be such, that for all elements aij of [A, B]

+

laii. 235 1 ~ 2 34

PROGRAMMING AND CODING

)

2-175

In the general case, for B ~ I, the rows of [A, B] may be scaled independently. However, in the case of inverting a matrix, it is necessary that
the entire matrix be scaled by the same factor.
(b) The second auxiliary must take the successive columns of X, found in the
n cells immediately following the routine, and either store them internally
or punch them out. Since the columns of X are independently calculated,
each has an associated scale factor (scaled at 2°). This parameter positions the binary point (assuming the input matrices are scaled at 235 ) and
is to be found in the (n + 1)st cell following the routine. If one hl:'..s
inverted a matrix, and if the input rows were originally scaled by lOP
(or 2P), then the output columns must be rescaled by lOP (or 2P). These
auxiliary routines are automatically entered nand m times respectively
by RJ instructions. The subroutine sets up these two RJ instructions
from information gleaned from the parameters of the entry. This procedure allows storage of A, B, and X on ES, MD, magnetic tape or externally
on cards or tape. It is also possible to generate the elements of successive
rows when a functional relation exists. In addition to the 229 words of
storage needed by the subroutine, it is necessary to provide 2(n + m)
cells temporary storage immediately following the subroutine, and a block
of [n(n + 1)/2] + nm cells, either all on ES or all on MD.
Operating Instructions
1. Entrance to the subroutine is made by the following orders (B
p
p
p

+

1

+2

p+3

RJ
00
-

OOMOl
OOXOO
uuuuu
--

~

I):

00M02
OOYOl
vvvvv
xxxxx

where OOMOO is the location of the first word of the subroutine
OOXOO is the location of the first word of the first auxiliary
OOYOl is the location of the second word of the second auxiliary
uuuuu = m (number of columns of B)
vvvvv = n (number of rows of A)
xxxxx = is the location of the first cell of the block of [n(n + 1)/2]
cells all in ES or all in MD.
2. For the case when B =
3. The auxiliary routines
entered with
RJ
and
RJ

+ nm

I, the p + 1 word must be 40 OOXOO OOYOl
must be available and coded so that they can be
OOXOO OOXOl
OOYOO OOYOl respectively.

This implies that the first and second words of both auxiliaries are exit and
entrances respectively.
Alarm Conditions
Two alarm conditions can result:
1. A test is made to see that all elements,
limits

aij

of the input rows are within the

2-176

DIGITAL COMPUTER PROGRAMMING

If this is violated the alarm routine ALR-1 is entered and "alarm-xxxxx" is
printed where xxxxx-3 is the address of the cell from which the subroutine was
entered.

2. If a singular matrix is detected in the process of inversion, the alarm routine
ALR-1 is entered and "singul-wwwww" is printed where wwwww-3 is the address
of the cell from which the subroutine was entered. The routine can not, however,
detect all singularities due to roundoff errors (see below).
Starting again at xxxxx + 1 will cause the rest of the main program to be
obeyed.
Machine Time
The machine time is as indicated on the first page when all operations are
carried on in ES. This time is exclusive of the times taken by the auxiliaries.
In case the block of [n(n + 1)/2] + nm words are stored on MD, the time must
be increased, by the terms indicated.
These times are approximate and will be a minimum in most cases. Sample
computation times for matrices of order 27 and 99 were respectively 53 seconds
and 30 minutes.
Mathematical Method (Gauss elimination method)
Elementary row operations are performed on the matrix A reducing it to an
upper triangular matrix A. At the same time, these operations are performed on
the matrix B giving a new matrix B. A partial floating point arithmetic is maintained, in that the rows of the augmented matrix [A, B] are always kept within
the limits such that the largest element of the row (in absolute value) lies in the
interval
234 > laii. 235 1 ~ 233

In addition, before eliminating, leading elements of two rows are compared and
the element of largest magnitude becomes the pivotal point. N ext, successive
columns of B are taken and the equation AX = B is solved by the back substitution procedure.
Singularities in A are detected if a zero appears on the diagonal of A. Since
roundoff errors can prevent this from occurring~ one must i.nspect the size of the
scale factor if A is suspected of being singular. Ill-conditioned matrices will
cause the scale factors to be very small. That is, the elements of X will be
very large.
Accuracy
The accuracy in the result is a function of the condition of the matrix A. Seven
to eight decimal place accuracy was obtained for matrices of order 10 to 16. A
matrix of order 39 and 99 yielded 7 and 6 place accuracy respectively.
The program for this problem on the Univac 1103 is given in Table 28.

PROGRAMMING AND CODING

TABLE

28.

0
0
0
0
0
0
0

0
0
0
10MOO
10MOl
·101.102
101.10 :3
101.104
101.105
101106
101107
101.106
101109
101110
101111
101112
101113
101114
101115
101116
101117
101116
101119
101120
101121
101122
101.123
101124
101.125
101.426
101127
10112e
101.129
101.430
10M31
101.432
101.433
10 1.4.3 4
101.435
10M 36
101.437
10M36
101139
101.440
101.441
101.442
101.143
101.444
10M45
101.446
101.447
101.446
101.149
101.450
10M51
l1MOO
111.101
111.102
111.10 3
111.104
llM05
111.106
llM07
l1M08
111.409
111.410
111.411
111.412
111.413
l1M14
111.415
111.416
111.417

37
I.IJ
54
TU
TU
AT
TU
AT
TU
TU
TU
TP
TU
TV
AT
SS
TU
LA
TV
TV
TN
TP
TV
TU
AT
TV
TV
TV
54
AT
TV
AT
TV
TV
LA
TU
TU
TU
TU
TP
AT
TV
TP
QS
TP
AT
54
TU
RA
TV
TU
TU
TV
TP
TV
54
TU
TP
RJ
TP
TP
TP
SJ
RS
75
TP
TP
RA
TP
TM

UNIVAC
101100
lUIOO
12MOO
13MOO
OOMOO
01MOO
02MOO
03MOO
C1NOO
CONOO
75701
00000
001.101
AOOOO
AOOOO
00015
AOOOO
00015
AOOOO
AOOOO
AOOOO
00000
AOOOO
AOOOO
00015
00016
AOOOO
AOOOO
AOOOO
00000
00016
00000
AOOOO
AOOOO
02Ml0
AOOOO
AOOOO
A 00'0 0
CON06
CON06
AOOOO
021.110
AOOOO
AOOOO
AOOOO
AOOOO
AOOOO
AOOOO
AOOOO
CON 01
CON06
AOOOO
00021
CON06
CON10
CON06
CON07
AOOOO
001.101
031.102
021.162
02"162
021.150
00013
00000
00000
AOOOO
CON02
00000
CON07
00021
00000
01Ml1
CON11
10000
00013
CON04
011.414
CON 0 4
00000

1103

PROGRAM FOR LINEAR MATRIX EQUATION SOLVER

00100
00152
00190
0025 ..
00100
00152
00190
0035"
00317
00317
75702' B

a

20017
00M11
011.109
AOOOO
001121
AOOOO
001.119
011.102
011.103
AOOOO
011.106
03M .. e
AOOOO
00015
031146
00042
011.106
021.150
CON10
AOOOO
CON06
CONoe
AOOOO
011.113
011.114
031102
20071
AOOOO
CON07
AOOOO
CaNOl
021.401
00015
021.406
a 2M 5 a
021.411
021.117
AOOOO
AOOOO
03M16
00000
011.112
AOOOO
CON09
20017
01M25
CaNaS
031.147
011.117
021.107
011.101
00000
021.150
20017
021.101
CON11
00
00023
00000
AOOOO
011.116
00016
01M14
00000
00000
00016
AOOOO
00024

2-177

BRB

AlARU AND
NORMAL EXIT
ENTRY
P-1
P-2
P-3

SE T

A

u

X
I
L

SET

r

SET
SET

N

M

Y

BRB
SET
T

M-fl

Z

SET
NOl
BRB

ORB

M-N
P-4

EXIT

SET 0 FOR
INTERCHANGE
RESET
TO
F ADDRESS
SET SF INDEX
TO AUX 1
SET INDEX
T EST FOR
INVERSION

BBR

AUGMENT
ROW of
UN I T
MATRIX
CHE C K IF ALL
ELEMENTS I N

1 ....
230
276
376
1 .. 4
230
276
376
.. 75
475
1 .. 4
1 .. 5
146
147
150
151
152
153
:154
155
156
157
160
161
162
163
164
165
166
167
170
171
172
173
174
175
176
177
200
201
202
203
204
205
206
207
210
211
212
213
214
215
216
217.
220
221
222
223
224
225
226
227
230
231
232
233
234
235
236
237
240
241
242
243
244
245
246
247
250
251

00
00
00
00
00
00
00
00
00
00
37
45
54
15
15
35
15
35
15
15
15
11
15
16
35
34
15
54
16
16
13
11
16
15
35
16
16
16
54
35
16
35
16
16
54
15
15
15
15
11
35
16
11
53
11
35
54
15
21
16
15
15
16
11
16
54
15
11
37
11
11
11
46
23
75
U.
11
21
11
12

00000
00000
00000
00000
00000
00000
00000
00000
00000
00000
75701
00000
00145
20000
20000
00017
20000
00017
20000
20000
20000
00000
20000
20000
00017
00020
20000
20000
20000
00000
00020
00000
20000
20000
00310
20000
20000
20000
00505
00503
20000
00310
20000
20000
20000
20000
20000
20000
20000
00476
00503
20000
00025
00505
00507
00503
00504
20000
00145
00400
00374
00374
00360
00015
00000
00000
20000
00477
00000
00504
00025
00000
00243
00510
10000
00015
00501
00246
00501
00000

00000
00000
00000
00000
00000
00000
00000
00000
00000
00000
75702
00000
20017
00157
00241
20000
00171
20000
00167
00232
00233
20000
00236
00456
20000
00017
00456
00052
00236
00360
00507
20000
00503
00505
20000
00245
00246
00400
20071
20000
00504
20000
00476
00277
00017
00304
00360
00311
00317
20000
20000
00416
10000
00244
20000
00506
20017
00261
00502
00455
00251
00305
00231
00000
00360
20017
00277
00510
00000
00027
10000
20000
00250
00020
00246
00000
00000
00020
20000
00030

2-178

TABLE

DIGITAL COMPUTER PROGRAMMING

28.

UNIVAC

1103

PROGRAM FOR LINEAR MATRIX EQUATION SOLVER

(Continued)
11"'18
11"'19
11"'20
11"'21
111.422
11"'23
11"'24
11"'25
l1M26
l1M27
11"'28
11"'29
111.430
111.431
111.432
111.433
l1M34
l1M35
llM36
l1M37
121.400
12MOl
12M02
12M03
12M04
12 M0·5
12 M06'
12M07
12MOB
121.409
121.410
121.411
12M12
121.413
121.414
121.415
12M16
12M17
12M18
12M19
12M20
12M21
12M22
12M23
121.424
12M25
12M26
12M27
12M2B
12M29
12M30
12M31
12M32
12M33
121.134
121.135
121.136
121.137
12M36
121.139
121.140
121.141
12"'42
121.443
12M44
121.145
121.146
121.147
121.146
121.149
12M 50
121.151
121.452
12M53
12M54
12M55
12M56
12M 57
12M56
12M 59

TJ 00024 001A00
RA 01M17 00015
IJ 00023 011.116
RA CON10 00016
TP CON10 00026
OS 011.125 o 2M 0 0
OS 01M25 02M45
MJ 00000 011.128
RS 02MOO 00015
RS 02M45 00015
TU 02"'00 021.149
TV CONOl .021,1 30
TU 021.406 021.122
RA 02M07 00015
TU 021.407 02M12
TU 021.407 02M16
TU 02M07 02M21
TU 02M07 02M46
55 02M07 10025
TV 00000 02M26
75 30000 02M02
T P 00000 0
TV 03M26 02M21
TV 03M26 02M22
TP 00013 00024
TP 00013 00028
TM 00000 00029
TM 00000 AOOOO
TJ 00029 02M16
ZJ 02Mll 02M13
00 00000 CON12
MP 00000 CON03
DV 00000 00024
RA 02M21 00016
TN eON 0 4 00027
MJ 00000 02M20
54 00000 20043
DV 00000 00024
RA 021.422 00016
TP 00013 00027
TN 00024 00024
TP 00000
TP 00000
54 00030 20043
MA 00031 000·24
MJ 00000 03M58
TP BOOOO 000 0
TM BOOOO .'0000
TJ 0002B 02M30
TP AOOOO 00028
TP 00031 00000
RA 02M21 00015
RA 02M22 00015
RA 02M30 00016
RA 021.126 00016
S T CON 01 AOOOO
ZJ 021.121 02M 37
EJ 00026 021.147
TV 00013 02M46
55 00026 10001
QJ 02M44 021.141
QJ 021.147 02M42
RA 021.146 00016
Q J 021.145 02M42
TV 031.456 02M46
75 20000 02M47
LA 00000
TP 00027 AOOOO
SJ 021.149 02M51
75 30000 02M51
TP 00000
TP 00021 QOOOO
TP 02MOl AOOOO
QA 02MOO 02MOl
LA AOOOO 00057
TV AOOOO 02M50
IJ 00026 01M26
I J CON09 00M50
RS eON07 CON06
RS CON07 00016

ROW ARE
SCALED
CORRECTLY
A D V A.N C E AND
SET INDEX

R·E SET
T
ADVANCE
X

BRB
BBR

TRANSMIT ITH
ROW TO ES
SET FOR
INVERSION
COMPARE LEAD
ELEMENTS
CONSTANT
R
INTER
0
IV
CHANGE

B

NO ROW
INTER
CHANGE
OK
L

I

BRB

N

E
A

R
L

Y
COMBINE
R

0
W

S
R
BRB

E

S

C

A
L
E

BBR

R

0
W

BBR

REPLACE ROW
ON ORUM IF
INTERCHANGE
TOOK PLACE

I TIMES
N- 1 TI"'ES
SE T MOl
FOR I NO E X

252
253
254
255
eS6
257
260
261
262
263
264
265
266
267
270
271
.272
273
274
.275
276
277
300
301
302
303
304
305
306
307
310
311
312
313
314
315
316
317
320
321
322
323
324
325
326
327
330
331
332
333
334
335
336
337
340
341
342
343
344
345
346
347
350
351
352
353
354
355
356
357
360
361
362
363
364
365
366
367
370
371

42
21
41
21
11
53
53
45
23
23
15
16
15
21
15
15
15
15
55
16
75
11
16
16
11
1l.
12
12
42
47
00
71
73
2l.
13
45
54
73
21
11
13
11
11
54
72
45
11
12
42
11
11
21
21
21
21
36
47
43
16
55
44
44
21
44
16
75
·54
11
46
75
11
11
11
52
54
16
41
41
23
23

00030
00251
00027
00507
00507
00261
00261
00000
00276
00353
00276
00476
00304
00305
00305
00305
00305
00305
00305
10000
30000
00000
00430
00430
00015
00015
00000
00000
00035
00311
000 00
00000
00000
00323
00501
00000
00000
00000
00324
00015
00030
00000
00000
00036
00037
00000
30000
30000
00034
20000
00037
00323
00324
00334
00330
00476
00323
00034
00015
00034
00352
00355
00354
00353
00466
20000
00000
00033
00357
30000
00000
00025
00277
00276
20000
20000
00032
00506
00504
00504

00144
00017
00250
00020
00032
00276
00353
00264
00017
00017
00357
00334
00324
00017
00312
00316
00323
00354
10025
00330
00300
00000
00323
00324
00030
00034
00035
20000
00316
00313
00511
00500
00030
00020
00033
00322
20043
00030
00020
00033
00030
00000
00000
20043
00030
00470
00000
20000
00334
00034
00000
00017
00017
00020
00020
2000 O·
0034·3
00355
00354
10001
00347
00350
00020
00350
00354
00355
00000
20000
0036l.
00361
00000
10000
20000
00277
00071
00360
00262
00226
00503
00020

2-179

PROGRAMMING AND CODING

TABLE

28.

UNIVAC

1103

PROGRAM FOR LINEAR MATRIX EQUATION SOI~VER

(Continued)
12t.t60
12 ... 61
12t.t62
12t.t63
13"'00
13t.tOl
13t.t02
13t.t03
13t.t04
13t.t05
13"'06
13"'07
13"'0a
13"'09
13"'10
13"'11
1·3 t.l12
131.113
13"'14
13"'15
131.116
131.117
131.118
131.119
131.120
13M21
13M22
13M23
13M24
13M25
13M26
131.127
13M28
13M29
13M30
13M31
13M32
13M33
13M34
13M35
131.136
13M37
13M38
13M39
131.140
131.141
13M42
131.143
13M44
13M45
131.146
13M47
13M48
131.149
131.150
13M 51
13M52
13M53
131.154
13M55
13M56
13M57
13M58
13M59
13M60
131.161
13M62
C1NOO
C1NOl
C1N02
C1N03
C1N04
C1N05
C1N06
C1N07
C1Noa
C1N09
C1Nl0
C1Nll

54
OS
TP
TV
TP
TU
TP
TP
OS
TP
TP
RA
RA
RS
TU
RS
RS
RP
TP
RA
TN
54
TU
TV
TP
TP
"'J
54
CC
lolA
TP
TP
TM
TJ
MJ
RS
IJ
TU
TV
TU
TM
TN
TN
TM
TJ
MJ
54
CC
oV
RA
IJ
TP
RJ
RA
IJ
MJ
11
MJ
RS
RP
LA
SJ
TP
SJ
TN
AT
MJ
24
TP
00
37
20
00
00
00
00
00
00
00

CON06
1.0000
CO N 11
0310116
CON10
02t.tOl
CON04
00021
00013
00013
00013
00028
03t.t13
03"'14
03"'14
03"'14
03"'14
30000
00000
031.116
00000
031.116
AOOOO
031.102
00027
00013
00000
00030
00031
00000
BOOOO
AOOOO
00030
CON 04
00000
031.125
00032
03M25
031.125
031.125
00000
00030
00031
00030
00024
00000
00030
00031
00000
00027
00026
00029
00000
CON09
CON07
00000
CONOO
00000
00029
20000
CON13
03M52
CON04
03M60
CO NO 4
00032
00000
14061
BOOOO
00000
77777
00000
00000
0
0
0

a

20017 BRB
03t.t55
00029
03t.t14
00026
03t.t14
00000
QOOOO
03 ... 13
00028
00027
00015
00015
CONoa
03"'16
00016
00028
031.115
0
CON09
00
20017 ORB
031.125
031.125
00032
AOOOO
031.125
2004.3 BRB
00013
0
00030
00031
1.0000
03M31
03M54
00017
03M23
03M36
03M44
03M44
00024
00030
00031
AOOOO
03M42
031.154
20043 8RB
00013
00016
031.107
00000
0
00015
021.162
001.101
75756
OOMOO
00016
03M57
00071
03M17
00032
03M61
00032
AOOOO
021.126
33411
000
00 42
77777
000 0
3

SE T

'NOEl(

SE T

SCALE

COUNTERS
ZERO
ADVANCE
COUNT

TO

TRANSFER
ROWS
OF UPPER
TRIANGULAR
MATRIX TO
ES

SE T

INDEX
B
A

C
K

S

U
B

RESCALE

S

T
I
T
U
T
E

RESCALE

ADVANCE
N01 TIM E S
TO

BRB

B
B
B
B

AUX

2

/.1-1 T I /.I E S
EX I T
SET ALARM
W0 R 0
RESCALE

SINGUL
C
0
N
AND
S
TEMP

T

STORAGE

A

N

T
S

372
373
374
375
376
377
400
401
402
403
404
405
406
407
410
411
412
413
414
415
416
417
420
421
422
423
424
425
426
427
430
431
432
433
434
435
436
437
440
441
442
443
444
445
446
447
450
451
452
453
454
455
456
457
460
461
462
463
464
465
466
467
470
471
472
473
474
475
476
477
500
501
502
503
504
505
506
507
510

54
53
11
16
11
15
11
11
53
11
11
21
21
23
15
23
23
75
11
21
13
54
15
16
11
11
45
54
27
72
11
11
12
42
45
23
41
15
16
15
12
13
13
12
42
45
54
27
73
21
41
11
37
21
41
45
11
45
23
75
54
46
11
46
13
35
45
24
11
00
37
20
00
00
00
00
00
00
00

00503
20000
00510
00416
00507
00277
00501
00025
00015
00015
00015
00034
00413
00414
00414
00414
00414
30000
00000
00416
00000
00416
20000
00400
000'33
00015
00000
00036
00037
00000
30000
20000
00036
00501
00000
00427
00040
00427
00427
00427
00000
00036
00037
00036·
00030
00000
00036
00037
00000
00033
00032
00035
00000
00506
00504
00000
00475
00000
00035
20000
00512
00462
00501
00472
00501
00040
00000
14061
30000
00000
77777
00000
00000
00000
00000
00000
00000
00000
00000

20017
00465
00035
00414
00032
00414
00000
10000
00413
00034
00033
00017
00017
00505
00416
00020
00034
00415
00000
00506
00000
20017
00427
00427
00040
20000
00427
20043
00015
00000
00036
00037
20·000
00435
00464
00021
00425
00442
00452
00452
00030
00036
00037
20000
00450
00464
20043
00015
00000
00020
00405
00000
00000
00017
00374
00145
75756
00144
00020
00467
00107
00417
00040
00473
00040
20000
00330
33411.
00000
00042
77777
0000 a
00003
00000
00000
00000
00000
00000
00000

2-180

DIGITAL COMPUTER PROGRAMMING

Methods of Call-In

Momentary Call-In. In magnetic drum storage, a selection of subroutines could be stored permanently on the drum ready for use when
desired. With most magnetic drum machines (the ERA 1103 and 1103A
being the exceptions) the drum and high-speed storage are separate
logical entities; in general instructions can be formed only in the highspeed storage. The Manchester computer group (Ref. 15) developed a
method of use of these two storages which shall be defined here as momentary call-in. In this scheme subroutines are called into the primary storage
from the secondary storage only whenever their actual operation is required. Thus, generally no more than one subroutine is ever stored in the
high-speed storage at once, and enough space must be saved for subroutines
to hold the largest one to be performed. On some machines this method
provides a satisfactory match between drum to high-speed storage transfer
speed and the operating speed of the computer's arithmetic element.
Permanent Call-In. On other computers with a greater ratio between
arithmetic operation and storage transfer speeds, a method of handling
subroutines called permanent call-in seems desirable. In the permanent
call-in scheme, as many subroutines as possible that are required in a
program are stored in the high-speed storage at the beginning of the
program, and performed when desired without any further need for call-in.
The advantage of this method is: instead of a subroutine being called in
each time it is to be performed, it is called in only once, thereby saving time,
Here, as in many other computer applications, space is traded for time.
The permanent call-in system requires storage space for all subroutines
used, not just the longest one.
Combined Methods. In some cases where there is not enough storage
for all such subroutines, a compromise must be made in using both methods.
The decision as to just what subroutines shall be called in only once and
which ones for each performance is usually a matter of guess, since a priori
a programmer cannot say just how many times a particular subroutine will
be used during the course of a program, and therefore cannot solve the
empirical time-storage relationship required for a best solution.
Arithllletic Classification of Subroutines. The Whirlwind subroutine specifications manual originally listed seventeen different categories
included in the Whirlwind Library of Subroutines (Ref. 57). The ED SAC
library contains a smaller number of classifications (see Ref. 108). The
tendency, with the advent of synthetic instructions, has been not to list
subroutines by classifications but rather by the operation itself. The
following types of subroutines appear to have been most useful in scientific
and engineering calculations.

PROGRAMMING AND CODING

2-181

1. Elementary Functions: (a) sine, (b) cosine, (c) sine and cosine,
(d) tangent, (e) arc sine, (f) arc cosine, (g) arc tangent, (h) exponential,
(i) logarithm, and (j) hyperbolic functions.
2. Roots: (a) square roots, (b) cube roots, (c) Nth roots, N arbitrary,
and (d) solution of Nth degree algebraic equations.
3. Integrators for ordinary differential equations.
4. Functional summation methods (Gauss's, etc.).
5. Matrix manipulations (including some simultaneous equation
solutions).
6. Interpolation routines.
Red Tape Subroutines. In addition to the calculational subroutines
listed here, there are numerous other red tape data handling routines which
are usually stored and filed by various computer organizations along with
such computational subroutines. The trend is to classify these red tape
routines with the utility programs (see Utility Programs in this section);
in many cases a complete integration of non calculational subroutines into
master automatic organizational 'schemes is made.
NUlllerical Methods (See Vol. 1, Chap. 14.)

Most of the subroutines listed above have as their purpose the determination of some sort of approximation in a finite number of steps to an
algebraic or transcendental function, with a resulting error that is to be
kept small. The machine operations to be used are not the actual operations, but in general certain pseudo operation approximations to them.
Whether codes for subroutines should be written to fit in the least storage
space in a machine, to operate in as short a time as possible, or to minimize
some complicated function of these two variables, will vary from machine
to machine. No constituted theory or procedure for any particular method
of approximation in terms of the standard machine operations on any
computer has 'been established. For this reason, most of the numerical
methods used with subroutines have been ones similar to those used
previous to the advent of the high-speed computer.
However, methods of overall approximation, such as those making use
of the Tchebysheff polynomials, have begun to replace the Taylor-McLaurin
series "approximations in a neighborhood," which often have very slow
ratio of convergence.
Similar deviations exist between the standard hand calculational techniques and those used with machine subroutines. The need for workable
approximations will open up entire new fields in analysis and numerical
methods. (See Vol. 1, Chap. 14.)

2-182

DIGITAL COMPUTER PROGRAMMING

Subroutine Generators

As Rutishauser first noted (Ref. 89), a stretched program eliminating all
red tape operations or instructions will run much faster on a computer than
does the corresponding inductive, loop-controlled program. However, it
may also occupy much more storage space. A general program, prepared to
accept all possible variables as program parameters, will run more slowly
because of the time spent on the red tape modification of instructions to
agree with the parameters. In this case, however, a program written
specifically for inverting a matrix of order 10, although faster than a
general nth order routine, may also occupy more space than a general
program for inversion of matrices of degree n.
Judicious combination of the techniques of stretching or linearizing
program loops, plus constructing programs for specific values of key parameters, may produce subroutines that minimize storage, performance time,
or some combination of both. Subroutine generators are computer programs that do this automatically, taking in as input the parameters of the
problem as it is to be performed. The concept of the subroutine generator
is apparently first due to Hopper (Ref. 49), and her co-workers.
EXAMPLE 1.
Suppose a particular problem required a sine subroutine
with a precision of approximation € over a given range (for example,
-1 < x < 1). A sine subroutine generator would take this given value
of €, determine the coefficients of the Tchebysheff approximation needed
to provide this precision, and then punch out the most efficient program
for calculating a polynomial of that degree.
EXAMPLE 2.
Suppose that a large quantity of numbers were to be
printed out with n numbers per line, m lines between spaces, each number
to have d digits before the decimal point. The numbers m, n, and p would
be fed as parameters to a subroutine print generator which would then
produce a printing subroutine tailor-made to perform printout in this
format as efficiently as possible.
EXAMPLE 3.
In analysis of propagation of error in a computational
process, bounds may be determined in terms of certain maxima of derivatives
of the functions involved. As shown by Kahrimanian (Ref. 150), formal
differentiation may be performed on a computer. A simple recursive
procedure for differentiation may be used more efficiently using techniques
discussed by Kantorovich (Ref. 60). A differentiation generator could be
used to proceed through a machine (or more likely, an algebraic language)
program, constructing the corresponding derivatives of the functions
involved, and combining the whole in a rational error analysis program
that could be run immediately following the actual computation.

PROGRAMMING AND CODING

2-183

Utili ty Programs

Similar to a subroutine, but not generally used in the same fashion, the
utility program provides testing, program debugging, and general auxiliary

aid to the computer programmer. Utility programs are mainly of the
following types: (1) storage printouts, (2) selective (changed-word) postmortem programs, (3) tracing programs, (4) input programs, (5) assembly
programs, (6) storage transfer programs, (7) interpretive programs, and
(8) compiler-translators.
Storage printouts may be used as standard subroutines, controlled
by the programmer, or as programs controlled by the computer operator
in case of unexpected program behavior. Such printouts generally provide
optional formats ("octal words, decimal fixed point numbers, assembly
language instructions, decimal floating point numbers," might be one
sequence of options for a binary machine). Under programmer or operator
control any selected portion of high-speed storage could be printed out in
anyone of these formats.
Selective post-mortems (called in only after a program is dead) allow
only those portions (instructions and numbers) of storage that are different
from the original program previously read in to be printed out. Thus a
programmer need study only that portion of the program that has changed
since original input. Thus the changed-word post-mortem compares the
contents of storage after a problem has been performed, with input information stored on an external medium, such as punched paper tape or cards,
or else with a copy of the previous input stored on a secondary storage, such
as magnetic drum or magnetic tape.
Tracing programs are devices for following the course of a program
during its performance. Their mechanism is described in detail under
Interpretive Programs (see Sect. 14). Such programs usually allow detailed
printouts of location, instruction, one or more operands, and result for each
instruction performed. If desired, only instructions with certain selected
operations, in certain selected regions of the storage, or with certain selected
addresses may have this tracing information output; all else will be bypassed. Tracing of closed subroutines may also be eliminated if desired.
Input programs often, dependent on the machine, provide simple
translation from decimal number input to internal binary, from standard
numerical notation to internal coded floating point, or from external
mnemonic instructions to internal machine language.
Assembly Programs. When such routines are combined into a program-controlled whole, it is usually called an assembly or translation program
(see Sect. 11). Control of each process in turn on input translation makes

2-184

DIGITAL COMPUTER PROGRAMMING

use of so-called control combinations, which are special instructions describing to the translator the information to be translated (see Ref. 108).
More recently, many translators have determined information type from
context, thus limiting the need for many control combinations. (See
Sect. 9 for a description of the Share Assembly Program.)
Storage transfer pro graInS are usually coded to move information
back and forth from a main storage to secondary storage, and may be
considered subroutines. However, they are also often used under control
of an operator in a semiautomatic fashion. They usually contain automatic input and output stoi~ge-summing routines, which allow checking
of all transfers, and may also contain rollback features by which the contents
of any "volatile" main storage may be stored on a more permanent secondary storage so that a program may be restarted at the last rollback
point in case of any sort of machine failure. Such a procedure is described
by Brown et ale (Ref. 18). Some programs provide a complete magnetic
tape titling and checking procedure to prevent incorrect mounting of reels.
Interpretive prograInS usually provide methods for calculating with
types of arithmetic not built into machine hardware (such as floating point,
comp~x numbers, and matrix-vector arithmetic) using machine-like
instructions. Their mechanism is described in more detail in Sect. 14.
Such programs generally are provided with input and output instructions,
the former in machine language and the latter in the interpreter language,
so that machine language and interpreter language portions of a program
may be interconnected at will.
COInpiler-translators are often not considered utility programs, but
since they perform the same general function, they may well be considered
so. These programs generally translate from an external (usually algebraic) nonmachine-oriented language into machine language, assign
storage, call in and orient subroutines, and usually provide an assembly
language program as translated output. Their mechanism is described in
Sect. 11. They may also store programs automatically in secondary
storage to be called in later.
Integrated SysteIns

Interconnection of some or all these different utility programs into an
organized, programmer-controlled, semiautomatic or automatic whole is
usually called an integrated system. The first such systems, described by
Adams and Laning (Ref. 1), and Brown and Carr (Ref. 17), were apparently the MIT CSSR (Comprehensive'System of Service Routines) and
the MAGIC (Michigan Automatic' General Integrated Computation)
systems. These provided either operator control through typing in
English code words through an external typewriter: "translate," "com-

PROGRAMMING AND CODING

2-185

pute," "trace," "post-mortem," etc., or similar code words placed on the
program tape or punched cards.
Such syste~s have spread to include almost all the classes of utility
programs listed above, and have been extended more and more to provide
completely automatic, nonstop running of a problem (the General MotorsNorth American System for the IBM 704), or complete program storage
inside a machine (the Corbie system of the National Bureau of Standards
on the same type of machine). Bauer (Ref. 8) has described a program
allowing manual operator as well as program control for the Univac 1103.
Swift (Ref. 97) has proposed certain machine hardware changes including
interlocks and timers that would aid in preventing programming errors
from causing major catastrophes in these new automatic systems.
Among the present or proposed automatic features of these integrated
systems, are the following:
1. Complete time-keeping, machine time billing"and bookkeeping for
machine operation.
2. Storage of programs during check out and production.
3. Scheduling of program priorities.
4. Thorough checking of input programs or data to catch logical or
transcription errors.
5. Automatic recovery procedures after all recognized programming
errors (machine overflow, division by zero, improper operations, etc.).
6. Automatic recovery procedures after all recognized machine malfunctions (storage, arithmetic, or input-output failure).
7. Keeping track of previous errors, types of operations used, etc., so as
to improve future performance.
Incorporation of these processes would allow continuous machine
operation without programmer, operator, or engineer intervention, save at
long intervals for program or hardware maintenance. Recent proposals,
still in the proposal stage, have called for complete computer buffering to
and from a large number of programmer input-output stations, each containing a typewriter. Programmers could each independently communicate at their leisure with the computer, which could process several programs
in the checking-out stage at the same time that main ,production problems
would also be in operation. A machine interrupt feature, now available in
a simplified form on several commercially available computers, would
allow high-speed performance of the production problems except at widely
spaced'intervals when programmers' requests would be answered. Such a
system awaits more programming effort and built-in hardware at the
present time.
'
The final goal of such a process is a completely automatic file system,
containing all'information acquired by the programming system during

2-186

DIGITAL COMPUTER PROGRAMMING

operation. Development of fil~-searching and correlation procedures,
provided with inductive artificial' intelligence processes, might allow computer generation of programs on the basis of past processes that had
proved successful.
II. AUTOMATIC PROGRAMMING: LAN,GUAGES. COMPILERS.
AND TRANSLATORS

Three basic elements are involved in the solution of a problem with a
computer: (1) The language of the problem, (2) preparation of the problem
in terms of building blocks, and (3) the recursive use of these building
blocks. The recursive use of building blocks is covered in Sect. 15. An
automatic computer program for performing a translation from one
machine language to another is called a translator. A program which can
call in, connect into, and feed parameters into previously prepared subroutines, is a compiler. Translation is usually part of this step.
Language

The first experiments to use algebraic languages to describe problems of
necessity depended on satisfactory symbolic and alphabetic input and were
made in 1951-52. It was not until 1956 that development of a sequence of
languages began, including Fortran (Formula Translator) for the IBM
704; IT (Internal Translator) for the Datatron 205, IBM 650, Univac
Scientific 1103A, IBM 701, and Univac I; Math-Matic for the Univac I
and II; Unicode for the Univac Scientific 1103A; as well as others for the
IBM 709, Ferranti Mercury (United Kingdom), PERM (Western Germany), and Strela (Soviet Union).
An Ad Hoc Committee on Common Algebraic Languages was set up
in 1957 by the Association for Computing Machinery to propose standards
for such languages. The activity of this committee was extended to joint
meetings with the GAMM (German-Swiss Applied Mathematics Society)
in 1958. The purpose of these activities has been to standardize definitions and symbology so as to set up a class of languages that will be easily
translatable by machine from one to another, and also easily recognizable
to the ordinary human user.
Translators. Such languages form the input to a class of automatic
computer programs called translators, which perform a translation from
the algebraic language over into a second or target language. The latter
may be either (1) an assembly language, such as SOAP, SAP, or MAGIC
(see Sects. 7 and 9), or (2) a straight machine language, in pure decimal,
binary (or in some cases such as the Univac I and II), alphanumeric.
One-Pass and Two-Pass Systellls. Translation directly from an
algebraic language into machine language is generally called a one-pass

PROGRAMMING AND CODING

2-1.87

system. Translation from an algebraic language into an assembly language
and then into machine language is generally called a two-pass system.
The advantages of the two-pass system are: (a) it allows the programmer
to see the results of the first translation stage in the assembly language,
which he may add to, delete from, or change easily in any fashion he desires.
This combination mates the abilities of automatic programming with
hand-tailored programming in the most flexible fashion possible, and
(b) it allows the programmer to use the usual techniques of program
checkout such as tracing programs and post-mortems that have been
developed for use with programs in the assembly language.
The advantage of the one-pass system is that it eliminates the need for
the user to know anything about a machine-oriented assembly language.
If he can obtain a correctly tested program without the necessity for using
the classical checkout tools of the hand programmer, he will have sped up
the programming process considerably. This, however, is not always
possible.
The Fortran program for the IBM 704 is a one-pass translator, in that
while it provides as output of its translation phase a listing in IBM 704
assembly language (SAP), the latter may not be used or altered by the
programmer and is in many cases incomprehensible.
The IT Translator. The IT (Internal Translator) program for the
various machines on which it has been developed is generally available in
both one-pass and two-pass versions. The Internal Translator, as first
written by Perlis and Smith (Ref. 81), is described in Sect. 12.
Preparation of Problems in Terms of Building Blocl{s
Extensions to the Language. The second important element in the
solution of any problem on a computer is the use of primary building blocks
(subroutines), pieced together to form a program. In the IT language,
such building blocks are called extensions, because they extend the range of
the language beyond the simple algebraic operations originally defined.
In the IT language, extensions are included by two techniques:
1. Extension Operands. These are basic subroutines which have one or
more input parameters but only one numerical output variable. They
may be inserted bodily in a statement like any other type of operand.
Such extension operands are typified by the standard square root and
trigonometric functions.
2. Extension Statements. These are basic algorithms or subroutines
that perform much more complex transformations on larger masses of data,
for which there may be many input parameters and many output results.
Typical of this type of statement is an extension statement that performs
an ordering of a string of numbers in storage. It might be described in

2-188

DIGITAL COMPUTER: PROGRAMMING

terms of the name of the first variable and the number of variables to be
ordered. Certainly such an algorithm is not a simple function-operand
.
such as the first type.
The addition of the ability to handle such building blocks of already
prepared programs makes the IT language translator into a true compiler.
The IT language, as described in Sect. 12, does all this in terms of a notation
again very similar to (but not precisely) that of ordinary mathematical
notation. An example of an extension of the IT language is given in Sect. 12.
Some computing machines, instead of using a compiler to tie into
previously coded subroutines, actually have the subroutines wired into the
computer, and have specific entry instructions set up which may be used on
a machine language level to call in the subroutines automatically and
perform them, just as with any other instruction. Kitov (Ref. 61) describes
such a system with three-address instructions on the BESM and Strela
computers of the Academy of Sciences, of the Soviet Union. The following
subroutines are listed as being performed automatically as the result of
one written three-address instruction: square root, sine, cosine, natural
logarithm, exponential, conversion of n numbers from binary to decimal,
conversion of n numbers from decimal to binary, and fixed point memory
summation of n machine words.
The method of the Academy of Sciences of the Soviet Union is powerful
as long as such relatively simple functions are used, but use of a translation
technique such as that of the IT language to provide automatic subroutine
interconnection allows much more complex subroutines to be handled
easily. The next step for the Academy of Sciences machines is to combine
a translation procedure along with the built-in subroutine entry technique.
Once hand coding is eliminated, the need for one-instruction subroutine
entries is no longer so important.
A Flexible Filing SystelD. One of the weaknesses of such translatorcompilers as IT and Fortran is the inability of the programmer to develop
his own building blocks easily. As has been seen, it is entirely possible to
write extensions or subroutines in machine or assembly language-the
Runge-Kutta extension described in Sect. 12 is a case in point-but there
is no way in the present versions of these languages to take portions of the
algebraic language programs, define them as an extension operand or
extension statement, and then be easily able to call on these newly defined
pieces of coding by name, with automatic interconnection of entry, exit,
and parameters.
What is needed in the solution of scientific problems is an application of
the data processing techniques of the automatic file system to the writing
of programs. Several programs are at present being used, although none
has made use of the simplified algebraic language structure that has been
used for the translators such as that for the IT system.

PROGRAMMING AND CODING

2-189

A programming system developed by the National Bureau of Standards,
the Corbie system (Ref. 153), is just such a file system, basi9ally built to
handle entire programs, not subroutines. In order to save input-output
card reading time on an IBM 704 lacking peripheral tape-to-card and
card-to-tape converters, Wegstein and others have developed a file system
by which entire programs may be stored on magnetic tape inside the
machine. Corrections may be inserted from outside via a small number of
cards, changes made, and the programs tested, all without the necessity of
giant input-output activity. This extends the policy of control by exception, basic to the heart of all automatic machine activity, to the process
of program testing.
Generalized Programming. Manipulation of entire programs is not
enough, however, for the building block construction necessary for most
efficient automatic and semiautomatic construction of complicated programming algorithms. Again, as with the Corbie system without a
connection to an algebraic language, GP or Generalized Programming
constructed by Holt and Turanski (Ref. 154) for the Univac I and II and
later as GPX (Generalized Programming Extended) for the UnivacLARC, provides the building block procedure necessary for handling subroutines. With this programming system, any sequence of coding, regardless of its size, may be named, its entries and exits and input and output
parameters added to lists, and the name and coding itself added to a magnetic tape file semiautomatically. Thus, many portions of the process performed by the subroutine writer for the Runge-Kutta-Gill IT subroutine in
adding it to the library of subroutines for that system can be performed
by the machine using the GP program. For GP, programming using a subroutine hierarchy system, with its many advantages of pretesting individual
blocks before combining them, is apparently most natural for the user.
The use of subroutines within subroutines is simple. The chief attributes
of such a system may be listed as follows:
1. Natural coding in small blocks.
2. Possibility of automatic filing of any portion of a problem.
3. Possibility of automatic call-in and use of any portion of a previously
developed portion of the same or different problem.
4. Ease of program testing because of the building block principle.
5. Possible conjunction of work of different persons easily.
The major difficulty of the GP systems is their requirement of knowledge
of a nonmnemonic, non rational code to describe to the compiler the filing.
system activities listed above. GP is in the full sense of the word a "programmer's" compiler, whereas the language of IT (and the other languages
analogous to it) is tailor-made for the novice.
Future Trends. The merger of the two philosophies of algebraic
language and simple command structure on the one hand, and generalized

2-190

DIGITAL COMPUTER PROGRAMMING

filing systems on the other, seems to be the obvious trend. Already
specifications for changes in such languages as IT and Fortran to allow
some or all of the features of GP have been announced. A similar merger
of GP with Univac algebraic languages may be underway. The next stage
of the compiler-translator development is: (1) a machine-independent
language of the IT algebraic type, allowing (2) definition of program
sequences in the algebraic language as functions or more complex algorithms, combined with (3) a filing system for storing such building block
pieces for automatic call-in by algebraic type function statements.
This is not the limit of present day compiler-translator goals. The
initial successes in the use of the IT language for more than one computer,
followed by the standardization efforts of the ACM Ad Hoc Committee on
a common algebraic language, indicate that the multimachine language is
the target of today's automatic programming efforts. Such a language has
been proposed for many different computers and data processors now in
use for the United States Army. Such a language would allow definition
of existing assembly or compiler languages as sublanguages of the overall
language and would provide machine aided techniques for actually constructing the translating and compiling programs themselves.
Perlis and Smith (Ref. 156) describe a "string language" for writing
compiler programs and natural language as well as algebraic translators.
Included as the core of an overall compiler system, this device would allow
easy description of symbol-manipulation algorithms necessary for construction of new definitions in any. overall language. Other papers by
Graham (Ref. 156) and Bemer (Ref. 11) described language translations
between IT and Fortran and Fortran and IT.
The Theory of Algorithms. The most thorough description of this
symbol manipulation structure is given in a monograph by the Russian
mathematician Markov (Ref. 67) now being translated into English. IIi
this, Markov, from the point of view of a theoretical logician, describes a
notation and develops a series of processes for complete manipulation of
symbols. With some changes in symbology this language could be used
directly as an input to compilers which are to perform symbol manipulation
(such as compiler-producing compilers). The extension of such language
application to such other indirect reasoning processes as theorem proving,
natural language translation, and complex decision making is discussed in
papers by Razumovski (Ref. 151), Ianov (Ref. 52), Kantorovich (Ref. 60),
. and other Soviet mathematicians. The extent of actual Soviet computer
programs now in operation is uncertain. In the United States, the most
advanced work so far described has been done by Newell, Simon, and
Shaw (Ref. 76), to be described in Sect. 15.
Automatic Instruction Modification. The popularization of the
B line or index register on the Ferranti Mark I and later the Datatron 205

PROGRAMMING AND CODING

2-191

and IBM 704 brought an increasing use of subroutines, even without the
advantages of algebraic languages. But these automatic indexing devices
did not solve the overall subroutine usage problem. The presence of only
one index register on the first two named machines required a thorough
complement of instructions for loading, unloading, and incrementing this
special register, as can be seen by examination of the Datatron 205 code list
(see Sect. 6). Even the three index registers of the IBM 704 prove insufficient in many problems, and much of the complexity of the Fortran
compiler-translator program is caused by necessity for the planning by the
compiler of the sequence of use of this limited number of index registers.
More advanced computers such as the Univac-Larc, the IBM-STRETCH,
and the Univac M-460 have 5 to 15 index registers.
It remained for the "one-and-a-half address" instruction code, described
in Kitov (Ref. 61), but detailed in full by Schecher (Ref. 91) in his design
for the Munich Technische Hochschule PERM computer, to carry the
idea of index registers to its logical conclusion. He proposed that every
storage location inside a computer be made available as an index register,
and that the ordinary computer instruction word be provided with a
second "half" address along with various modification digits to allow
various types of modification procedures to be described below. Most
important to the Schecher design was an indirect addressing "digit" in
each word to provide for recursive indexing if required.
Types of Instruction Modification. In the use of subroutines and
programming in general, four types of changes of instruction information
are generally required:
1. Subroutine instruction orientation, so that a computer subroutine
may be written with nonfixed addresses, yet located on call-in in an arbitrary location in the storage. (Subroutine orientation.)
2. At the time of subroutine execution, closed subroutines, upon transfer
to them from the main computer program or a higher subroutine in a
subroutine hierarchy assemblage, must have their exit instructions changed
to give the proper return jump. (Return jump modification.)
3. During the performance of loops, addresses must be changed as new
data are to be used. (Inductive modification.)
4. At the time of subroutine execution, the main program or higher
subroutines must feed either (a) the parameters required or (b) the addresses of required parameters to subroutines lower in the hierarchy.
(Indirect addressing.)
The automation of types 2 and 3 is handled most rationally by index
registers. For a return jump, the location of the present address of the
subroutine entry instruction may be stored in an index register, and this
later used to modify the return jump exit instruction in the subroutine.
For subroutines within subroutines, one index register is not enough, or else

2-192

DIGITAL COMPUTER PROGRAMMING

instructions must be made available to exchange the contents of the index
registers with other locations, etc. For a complex subroutine hierarchy, if
this switching process is to be avoided, the number of index registers required is equal to the level of penetration into the hierarchy.
For induction changes in which an operation such as
(i = 1,

0

••

100)

is to be performed for such a range of i, the index register is again a rational
answer. However, if "loops within loops" are programmed (as occurs, for
example, in the simplest case in matrix multiplication) then more than one
index register is required, or else complete and efficient facilities are needed
for exchanging the contents of the sole such device. Again, if there is to be a
sequence of inductions in depth, as can occur in many recursive processes,
the number of index registers must correspond to the furthest penetration
of loops in the hierarchy.
Type 1 changes, subroutine orientation, can be handled by several
different inefficient processes, each of which requires tagging all subroutine
instruction addresses to be modified, or else all those not to be modified. A
B box can be used, as on the Datatron 205 and PERM, to store the initial
subroutine address, or else some other idle register in the arithmetic unit.
The Datatron and PERM facilities were designed to orient automatically
subroutines stored on an external medium, in this case paper tape.
Present Address Relative. Until 1958 when the Gamma 60 machine
was announced, only two computers, the MIDAC and the FLAC (a sister
computer to the MIDAC), provided automatic subroutine orientation
from secondary storage (in this case a magnetic drum) (Ref. 25). In these
computers subroutines are written with all addresses relative to the present
instr,uction location, as opposed to the usual technique of coding subroutine
addresses relative to the first location in the subroutine. The MIDAC and
FLAC instruction systems allow direct performance of these "present
address relative" instructions. This technique is equivalent to the index
register technique (but requires one less counter in the computer, since only
an instruction counter is required). A difficulty in the MIDAC-FLAC
design is that only one register can modify an instruction; instructions
modified by the present address cannot be modified by the index register,
thus making loop operation in subroutines difficult.
Present day techniques of subroutine orientation, therefore, may use
a B box orientation process, provided enough index registers are available.
Since most subroutines require the use of one or more loops for induction
purposes, the most widely used technique apparently at present is to forego
the use of any automatic indexing and to orient subroutines with standard
instruction modification techniques using the arithmetic unit.

PROGRAMMING AND CODING

2-193

Indirect Addressing. The indirect addressing technique, with its
proposed recursive indexing and index addition, eliminates this requirement
and others. Portions of the PERM scheme have been incorporated in the
IBM 709, and the National Advisory Committee on Aeronautics (NACA)
in Cleveland has modified its Univac 1103 for indirect addressing. Therefore, a complete discussion of instruction modification as planned with the
PERM should be very useful in describing future trends.
Schecher proposed that digits be included in the instruction address to
signify changes of types 2,3, and 4. (With a decimal machine language one
digit would provide 10 possible combinations.)
In Fig. 25 at the top is the main program. After location 51G, the subroutine entry location, appear four hatched locations, which are the
location of information about the program parameters for the subroutine.
These can contain either (a) the parameters of the subroutine, or (b) their
addresses, or in unusual cases (c) the addresses of their addresses. At the
bottom of the figure is shown a subroutine with the following typical add
instruction in location 834:
add 002'

+.

This contains two signals, the prime, and the plus. At the time of subroutine entry, the address 51G is stored in an auxiliary location in the control
unit. At the time of performance of the instruction in location 834, the
prime in the instruction will cause this value to be added in automatically
to the data address of that location giving the instruction
add 518+.
Main pr....
og;;;..r_am
_ _ _-.
516
Program [517
parameters
518
519
520

~~~"""""'~
~~~~~
""",,~~u..u.:.L.o:.oI

828 ' - -_ _ _- - - I

8341

add 002'

+

Memory·contents

FIG. 25.

add 518

+

Instruction in
control unit after
first change

add 1050
Instruction in
control unit after
second change

Simple indirect addreosing without "half-addresses."

2-194

DIGITAL COMPUTER PROGRAMMING

The plus sign performs a second purpose. If it is present, the control unit
will not take the contents of location 518 to the arithmetic unit for addition,
but will instead substitute the address portion of location 518 into the
address portion of the instruction. In the case of the figure, this would yield
add 1050,
and the instruction now would be performed in the usual fashion to supply
the contents of location 1050 to the subroutine.
If, however, the contents of location 518 should contain as its address
portion
1050+
then the instruction would again be delayed, and the address portion of
location 1050 used to replace the instruction address. Thus a recursive "address of an address of an address· .. " similar to the IT language
subscripts on subscripts is available.
The addition of a second or half-address to each instruction now makes
possible multiple index modification. The "auxiliary register" of the original subroutine entry can now be any storage location designated by that
instruction's half-address. The prime signal can now represent addition
of the contents of an instruction's half-address location rather than the
contents of a fixed location. Now if one wanted to bring XHi+k into a
TABLE 29.

INDIRECT ADDRESSING

Location
000

Operation

Data Address
(516)a

Half-Address
000

516
517
518
519
520
521
522

jrnp

828

000

i'
j'

519
001
001
000

k'
1000
Continued Program

828
834

add

002'+

000

840

ret

006'

000

a Parentheses indicate contents after performance of instruction 516 which stores
the latter address in the data address portion of 000.

PROGRAMMING AND CODING

2-195

subroutine, where Xo is stored in location 1000, one could proceed as in
Table 29. The sequence of changes of instruction 834 in the control unit
would be:
add
002'+
000
add
518+
000
.,
add
~
519
add
(i + j)'
520
add
521
(i+j+k)'
add
521
(1000 + i + j + k)
which would then bring the contents of location (1000 + i + j + k) into
the accumulator for action by the subroutine.
The exit entry from this subroutine would be as in location 840 which
would return control to 006 + 516 = 522, the next location in the main
program.
The use of such indirect addressing procedure allows efficient machine
control of recursive subroutine hierarchy structures. Instead of requiring
actual transfer of data from one subroutine to the next below it in the
hierarchy, as is described in the next section on subroutine hierarchy
programming, the program now has only to pass the names (addresses) of
variables along by using the indirect addressing scheme. The use of such
built-in techniques will probably grow markedly as the need for recursive
subroutine programming becomes more evident.
Use of Subroutine Hierarchy Counters

Suppose that now two special machine counters, telling how deep into a
hierarchy of subroutines the path of control has penetrated, are added to
the control unit of the half-address machine. These will be called the
Permanent Subroutine Hierarchy Counter (PSHC) and the Temporary
Subroutine Hierarchy Counter (TSHC). Signal for their use in modifying
an address, as written here, will be the asterisk (*), for the PSHC and
exclamation point (!) for the TSHC.
At the occurrence of each jmp instruction to a subroutine lower in the
overall hierarchy of subroutines, the contents of both counters will be
increased by one. At the occurrence of each ret instruction back from a
lower subroutine to a higher subroutine, the contents of both counters are
decreased by one. The original value of their contents at the start of a
program is zero. Thus, at any stage the value of PSHC will indicate the
depth into the subroutine hierarchy that has been penetrated. Even if
such a structure is recursive (a lower subroutine enters one higher above it
in the hierarchy), the PSHC contents will indicate the number of levels,
by whatever complex route, to the top or main program level.
The TSHC, in any normal situation, will have the same value as the

2-196

DIGITAL COMPUTER PROGRAMMING

PSHC. Howev~r, when a lower level subroutine is calling for an operand to
be fed to it from a higher level, at each process of address substitution the
TSHC will be decreased by one before the next cycle of address substitution
or actual instruction operation begins. After an instruction is actually
performed the computer resets TSHC to correspond to PSHC.
The contents of the PSHC correspond to the index j in the flow diagram
of Fig. 26.
The computer is now able to perform automatically all the subroutine
entry, exit, and parameter transfer manipulations given in Fig. 26. However, due to the automatic address modification and indirect address
substitution, the programmer needs to follow only a very simple set of rules.
As an example, suppose a main program (MP) is to refer to a subroutine
(SRI), which in turn is to refer to a lower subroutine (SRIl), which is to
refer to a third (SRIIl), which is to refer recursively to the original main
program (see Table 30). Such a process will "loop" infinitely often unless
some sort of stopping criterion is included. The tr neg (transfer control on
negative accumulator) instruction in location 101 can be considered to
serve such a purpose, since if the number being tested is negative, the
return trip up the subroutine hierarchy chain will begin.
As the path of control travels down through these subroutines, the main
program is to feed a parameter po to SRI, SRI a parameter PI to SRIl and
on to SRIll, SRIl a parameter P2 to the subroutine below SRnI (which
turns out to be SRI, etc.).
Suppose that the instruction counter in the machine is directly addressable at location 001. This means that the half-address of a primed instruction referring inside the same subroutine can use the instruction counter
location 001 as its half-address and thus all such instructions can be completely independent of all absolute machine addresses. (This is the
"present address relative" addressing system mentioned earlier.) Location
000 will contain zero.

aj+l=f(aj,bj,cj)

aj_l=aj

bj+l=bj

bj-F~·f(aj,bj ,Cj)

+1

cj+l=Cj

Cj-:l=Cj

(j)
;;:a

»

aj_l=aj

3:
3:

bj-l =g(aj ,bj ,Cj)

aj+l=aj
bj+l=bj
Cj+l=Cj

"o;;:a
z

+1

(j)

»
z
aj+l=aj

aj-l_aj+l

o

bj~l_bj

()

o

o
z

bj+l=h(aj,bj ,Cj)
Cj+l=Cj

+1

(j)

Cj-l=Cj

FIG. 26.

A subroutine recursion hierarchy allowing reentry.

~
-0

.....

2-198

DIGITAL COMPUTER PROGRAMMING
TABLE 30.

Symbol
arid
Absolute
Location
MP = 50

PROGRAM USING SUBROUTINE HIERARCHY COUNTERS

Regional
Location
0
1
2

Oper- Data Halfation Address Address
read
001
002'
jmp
SRr
RET*
storage for Parameter Po

Explanation
Po~

+ C(rO)

002

r (PSHC)

and TSHO
IC
51 ~ 1000
C (PSHC)
PI ~ 004
C(IC) = 104
C(001
0(1000
C(TSHC))) ~ ACC
tr neg to 003
O(rO) = 105
100~

3
0
1

SRI = 100

/2

stop
read
cIa

004'
001'

001
RET!

I
I
I
I
\

,,

3

+

jmp

RET' r (PSHC)

SRU

+

+

001

+ 1-> PSHC

and TSHO
200 ~ 10, 103 ~ 1000
C(PSHO)

\

4
~5

SRU = 200

+
+

tr neg 003'

I
I

= 052

+ 1-> PSHC

storage for Parameter PI
ret
002'
RET*

0
1

read·
cla

2
3

sto
jmp

005'
DOl'

001
RET*

+
002 + C(1000 +
O(PSHC)) = 002
+ 051 = 053~ 10
P2~ 005 + C(IC) =205
0(001 + C(1000 +
O(PSHC))) ~ ACO

'SRIlI

RET' r(PSHC)

+ l->PSHC

and TSHO
300 ~ 10, 203 ~ 1000
O(PSHO)
Name of parameter PI

+

4
5
6
SRUI'= 300

001'+ RET!
storage for Parameter P2
ret
RET*
002'

002 + C(1000 + C(PSHC))
= 002 103 = 105~ IC
0(001 + C (1000 +
O(PSHC))) ~ ACC

+

0

cla

001'

RET*

1
2

sto
cla

002'

RET*

C(002
C(1000 +
C(PSHC))) ~ ACC

3

4

sto
jmp

SRI.

RET*

5
6

ret

002'+
003'

RET!
RET*

C(PSHC) + l~PSHCand
TSHC
100 ~ IC, 305 ~ 1000
+ O(PSHC)
Name of parameter P2
003
C(1000 + O(PSHC))
= 003 203 = 206~IC

+

+

+

PROGRAMMING AND CODING

2-199

The storage in region RET will be as follows during the course of operation:
RET = 1000
000
0
051
1
103
2
203
3
304
4
One can now trace through the performance of those instructions of the
above program that are pertinent to the demonstration of the techniques
of indirect addressing, use of the half-address, and the PSHC and TSHC.
Initially these latter two counters will contain 00 (see Table 31).
TABLE 31. INSTRUCTIONS OF TABLE 30 PROGRAM
INVOLVED IN INDIRECT ADDRESSING
IC
Before
50
51
100
101
102
103
200
201
202
203
300

301
302
303
304

Instruction
read 002'
001
read 052
000
jrnp 100 1000*
jrnp 100 1001
read 004'
001
read 104
000
add 001' 1000!
add 001' 1001
add 052
000
jmp
jrnp

200
200

1000*
1002

add
add
add

001'
001'
104

1000*
1002
000

jrnp
jrnp
add
add
add
add
add
add

300
300
001'
001'
204
001'
001'
104

1000*
1003
1000*
1003
000
1000!
1002
000

add
add
add

002'
002'
205

1000*
1003
000

jrnp
jrnp

100
100

1000*
1004

IC
After
50

PSHC
Before After
00
00

TSHC
Before
After
00
00

100

00

01

00

01

101

01

01

01

01

01

01
102
103
200
201

01
01
02
02

01
01
02
02
02

02
300

03
03

03
03

03
03

03

03
03

03
04

03
03
04
04

303
304

01
01
02
02
02
02

02
02

03
03

03

03

100

02
02

02

202
203

301
302

01
01

03
03
02
02
03

03
03
02
02
02
03

03
04

03
03
04
04

2-200

DIGITAL COMPUTER PROGRAMMING

TABLE 3l. INSTRUCTIONS OF TABLE 30 PROGRAM
INVOLVED IN INDIRECT ADDRESSING (Continued)
10
Before

100
101

102
105
306
206
105
053

Instruction

10
After

PSHO
Before
After

04
04

101
add 001' 1000!
add 001' 1004
add 305
add 002' 1000!
add 002' 1003
add 205
tr neg 003
001
tr neg 105
001
105
(Suppose AOO is negative.)
002' 1000*
ret
ret
002' 1004
ret
306
306
000
ret
003' 1000*
ret
003' 1003
ret
206
206
000
ret
002' 1000*
ret
002' 1002
ret
105
105
000
ret
002' 1000*
ret
002' 1001
ret
053
053
000
stop

TSHO
Before
After

04

04
04

04
04
04

04
04

03
04

04
04
04
03
03
02
02
01
01

04
03

04
03
03
03
02
02
02
01
01
01
00
00

04
04
04
03
03
02
02
01
01

04
03
03
03
02
02
02
01
01
01
00
00

In this program one has transferred to anyone subroutine from only one
sequence above in the hierarchy, but there could also be many entries from
many different routines into a lower level sequence, and the process would
work in the same fashion.
Until more machines are built with this half-address feature and hierarchy storage counters, users will have to content themselves with compilertranslator processes or direct interpreters that will perform the same
actions.
12. AUTOMATIC PROGRAMMING: THE IT TRANSLATOR.
TRANSLATOR CONSTRUCTION

The IT program (Internal Translator) was first written by Pedis and
Smith (Ref. 81) for the IBM 650 and was later modified and enhanced at
the University of Michigan Digital Computation Unit. The IT language,
with its general translation techniques, was the first adopted over a wide
range of computers representing a number of manufacturers. In this sense,
it was one of the first universal programming languages. Because of its

PROGRAMMING AND CODING

preeminent position, the IT program is described in detail here.
available in both the one-pass and two-pass versions (see Sect. 1.1).

2-20 I

It is

The IT Translator

Two versions of this program are available. The input language in both
cases is based on the symbols available on the Share standard (Fortran)
IBM 026 Key Punch. The same symbols are used to print the programs
on the IBM 407 printer. Standard symbols are used in every case possible,
although the number of symbols available with input equipment to the
IBM 650 is not enough to express algebraic manipulation satisfactorily.
The command language for IT is machine independent in that it has not
been adapted to any of the vagaries of any of the target language machines
with which it is used. Programs are written in the form of statements.
Each statement is a string of letters and algebraic symbols (limited by
readability, input medium flexibility, and the power of the translator itself).
In the IT translator for the IBM 650, this number varies from translator
version to version, but the number of characters per statement is of the
order of magnitude of 100.
The output of the one-pass version of the translator is in straight machine
language, ten decimal digits per word, output in general on punched cards,
with information stored on the card in a standard five-word-per-card
random load format that allows storage of anyone of the five words in an
arbitrary position inside the computer storage.
The output of the two-pass version of the translator is first to an assembly
routine, SOAP (Symbolic Optimal Assembly Program) which is generally
the standard assembly language for the IBM 650. The SOAP language is
written in the form of one instruction per line, with mnemonic three-digit
operation code and symbolic addresses for the IBM 650 one-plus-one
address system. The latter uses two addresses, one to indicate the data
to be operated, the other to indicate the next instruction to be used.
As opposed to other languages such as Fortran used on larger computers,
where a more powerful translator is available, the IT language for the IBM
650 uses three different classes of variables, I variables (fixed point tendigit integers) and Y and C variables (floating point (8, 2, 0) decimal
numbers). Any variable may be subscripted by an integer or an integer
variable (I variable) so that sUbscripting in depth (for example, ii7) is
entirely possible, as well as computed subscripts, for example, iil+07 Xi a)fi2'
Subscripts are obtained by direct concatenation, since they are not on the
key punch, for example YIl, Y7.
Rules for IT Language. A complete set of rules for the IT language,
as adapted from the original specifications by Perlis and Smith (Ref. 81),
are given here for completeness. The mechanics of key punching, inputoutput, card format, and computer operation are omitted.

2-202

DIGITAL COMPUTER PROGRAMMING

1. Characters of the Language. The language as described is
to the IBM 650 with Fortran characters which admits the digits
o through 9, the (Roman capital) letters A through Z, and the special
=, . , *, I, and, (comma). Certain standard symbols
characters (,) ,
are represented by alphabetical characters at particular portions of the
language ~ranslation process because of printer limitations. Except when
it occurs in an English word, each alphabetical character has one and only
one meaning in this language.
applicabl~

+, -,

Punctuation Characters.
Symbol
(
)

Name
Left parenthesis
Right parenthesis
Decimal point
Substitution
Relational equality
Greater than
Greater than or equal

>
~

Representation
(or L
) or R
. or J
= or Z
U
V
W

The following punctuation characters will be introduced as they arise:

,, ,

,orK

Comma
Quotation marks
Type
Finish
Extension identifier

Q
T

F
E

Variable Characters.

y

I

C

Digit Characters.

The integers 0 through 9
B

In the sequel lower case letters, such as k, 1, m, and n, will be used to
represent arbitrary positive integers.
Operator Characters.
Symbol
Binary Operators

+

x
I

exp

Representation

Name

Addition
Subtraction
Multiplication
Division
General exponentiation

+ orS
- orM

* or X

lor D
p

2-203

PROGRAMMING AND CODING

Note. Y1 P Y2 means Y 1Y 2
Unary Opera tors

I... ·1

A
(- ... ) orLM ... R

Absolute value
Negative of

(- ... )

2. Admissible Variables.

Problem (floating point) Variables.

Yn
Cn

YIn
Cln

YIIn
CIIn

For example:

Y3
C3

YI47
CIO

YII21
CII7

These two classes of variables have the same logical significance in the
language. They aid in the (external) differentiation between two classes
of data or problem variables. The numerical value of any of these variables
is always represented in floating point form.
Problem (fixed point) Variables.

In

IIn

IIIn

For example:

18

1136

1II2

These variables take on integral values only and are used primarily
as indices.
Composite Variables.

Y (oo.)
I (oo ,)
C (oo.)

Y (II + 6)
I (II3 X 19)
C (1(11 + 2))

For example:

The parenthesized quantities must be fixed point expressions (see 4.
Admissible Operands).
Matrix (floating point) Variables.

YN C.. ,., ••• )
CN (.... , ... )
These variables are general elements of matrices (listed row-wise) whose
components are YO, Y1, .. '; and CO, C1, .. " respectively.
The parenthesized quantities, which must be fixed point expressions,
specify the row and column location respectively of the matrix variable.
The row dimensions of YN and CN, i.e., the number of columns in the
matrices, must be specified by assigning them to I1 and 12, respectively.
The row number and the column number always range from 0 to their
respective dimensions less one.
For example, a rectangular matrix may be assigned as
YO
Y3
Y6
Y9

Y1
Y4
Y7
Y10

Y2
Y5
Y8
Yll

2-204

DIGITAL COMPUTER PROGRAMMING

Thus YN (0,0) refers to YO, and YN (1,2) refers to Y4, while II and
12 must be assigned the value 3 and 4, respectively.
3. AdIllissibl~ :Constants.
Fixed Point Constants (Integers).

nln2 ... nk

k

~

10

However 123. is not such a

For example:
~opstant

1066; 10; 1292345566

since it contains a decimal point.

Floating Point Constants.

a. nln2 ... nt. ntH· .. nk
k ~ 8
For example: 14.92; .11; 13.
b. nln2··· nkBm
k ~ 8
which means nln2 ... nk X 10m , where
a. nln2 ... nk is either a fixed or a floating point constant, and b. m is either
mlm2 or -mlm2, where mlm2 is a fixed point constant.
Rule. If m is of the form -mlm2 then the entire constant must be enclosed in parentheses.
For example. 14.92B3; (1066B-11); and (-727B-5) mean 14.92 X
103 ; 1066 X 10-11 ; and -727 X 10-3 ; respectively.
Note. Floating point constants used within statements (see Admissible
Statements) must be of the above form and not in standard floating point
form. Thus 14.92 would be used as 14J92 but not as 1492000051.
4. AdIllissible Operands.

The following rules apply:
a. Any variable or constant is an operand.
b. If vI and v2 are operands, then (vI ~ v2) is an operand, where ~ is an
admissible operator character.
c. Subroutines, themselves functions of one or more operands, are
operands. They are represented as CinE, vI, v2, ... , vj" which means the
subroutine whose identification number is n (nth extension) and which is a
function of the variables vI, v2, ... , vj. Here n must be a fixed point
constant less than 626. For example, if the sine subroutine were the subroutine number 21, then sin (Y1 + Y2) would be represented by 21 E,
Y1 + Y2. The statement "1 E, "21 E, Y1 + Y2" " would represent the
IOglO (sin (Y1 + Y2» if the subroutine number 1 were the log routine.
d. If vI and v2 are operands, then vI ~ v2 is an expression, where ~ is an
admissible operator char"acter. Owing to the method by which the compiler
examines strings of symbols, some expressions will not be treated as
operands. However, all operands are expressions. The norm of an expression is the number of symbols, exclusive of spaces, making up the
expression. Although not necessary for correct interpretation, users are
urged to parenthesize all statements fully to avoid mistakes.

PROGRAMMING AND CODING

2-205

e. If an operand is a variable or a constant its arithmetic is that of the
variable or constant.
f. If any operand, with the exception of subroutines, is composite and at
least one of its members is floating point, the entire operand is floating point.
g. The arithmetic of subroutines is determined by their extension number, according to the following:
n

< 500 floating point

n

~

500 fixed point

5. Admissible Statements.

Each statement is identified by a nonnegative integer k ~ 626. The
execution sequence of a set of statements is not determined by this identifier,
but rather by the physical ordering.
A natural correspondence exists between the types of processes found in
flow charts and the kinds of statements in the language. Statements may
be considered as sentences-correctly formed strings in the characters of
the language. A description of the various statement forms follows.

Substitution Statement,
The statement
vl~v2,

k:

where vI is a variable, v2 is an expression, and k is the statement identifier
(number), has the following effect: the value of vI is set equal to that of v2
in the arithmetic of v 1. For example,
7:

YI2

~

11

+

(13 X (Y3 - Y4»

sets the value of YI2 equal to that of 11

+ 13 X

(Y3 - Y4) in statement 7.

Unconditional Linkage Statement.
Any of
k:

k:.
k:

Gn,
GI··· In,
G(·· .),

where k is the statement number, have the following effect: the next statement is defined in the execution sequence as that one having its statement
number equal to the value of n, or the value of I ... In, or the value of the
parenthesized fixed point expression (operand), whichever the case may be.

Relational (Conditional) Linkage Statement.
Any of

k:
k:
k:

Gn
GI· .. In
G(:··)

IF

vI',), v2

DIGITAL COMPUTER PROGRAMMING

2-206

where vI is an operand, v2 an expression, and 'Y is one of the three relations
= : > : ~, is interpreted as: if vI is in the relation 'Y to v2, the effect is
that of the G portion of the statement; if not, the execution sequence is
unaltered. Thus,

G 13

4:

IF

(YI

+ Y2)

~ 9

transfers control to the statement having a number which is the value of
13 if YI + Y2 ~ 9; otherwise the sequence is unaltered. Removing the
parentheses would make the statement inadmissible since YI would not
then be an operand for relational statements. In these statements when
the left operator is compound, it must be delimited by parentheses.
Halt Statement.
k:

H.

The effect is to suspend computer operation.
Input Statement.

k:

READ.

The effect is to initiate the input of one or more data cards. The format.
is dependent on the particular structure of the input subroutine, which may
differ from installation to installation. Reading ceases upon presentation
of a terminating symbol (hole in a certain column, for example). Read
statements can call in numbers, alphanumerical characters, or both.
Output Statement (Type Statement).

k:

TvITv2Tv3Tv4Tv5.

The effect is to punch a card, whose format is that of an input card, c~n­
taining the names and current values of vI, v2, .. " v5. Here the v's must
be variables and from one to five may be listed in the statement. If a
variable is composite, e.g., YI6, its current name is punched, e.g., if, at
punching, the value of 16 is 4 then the value of Y 4 will be punched along
with the name Y 4. The statement number is always punched on the card.
Conditional output statements have the same form as output statements except that the statement number must be zero. They provide
output conditional on the IBM 650 sign storage entry switch as follows.
Storage entry switch set to minus (-) activates output; positive (+)
setting causes output to be by-passed.
Iteration Statement.

k:

j, vI, v2, v3, v4.

Here j is an integer which must be positive; vI is a variable; v2 is an expression; v3 is an expression; and v4 is an expression which must not

PROGRAMMING AND CODING

2-207

contain the operators X, D, or P. The norm of each v must not exceed five.
(Here norm is defined as the number of characters.) The effect is to construct an iteration of the set of statements interposed between k and
(including) j-called the scope of the iteration statement-on the variable
vI as it varies from v2 to v4 in increments of v3. Thus,
15:
21:
19:

19, II, 13 + 4, 14, 15
Y5 f - Cl1 + 2
Yl1 f - Y 5 - 7

+ 1.

causes statements 21 and 19 to be executed sequentially for all values of
II from 13 + 4 to 15 + 1 in steps of 14. That statement which follows
an iteration statement must name a unique nonzero statement number.
If v4 - v2 is not divisible by v3 the iteration stops before vI assumes a
value greater than v4. If v3 is to be taken an actual decrement it must be
of the form - v where v takes on only non-negative values, and must be a
constant or variable.
A hierarchy of nesting of iterations is permitted, i.e., an iteration statement may be included in the scope of a prior iteration statement. However,
no particular nesting may exceed a depth of four.
In general, fixed point quantities should be used in iteration statements.
If floating point quantities are used, care should be taken to guarantee the
desired number of iterations.

Extension Statement.

CInE, ... ".

k:

The effect is to accomplish the subroutine before passing to the next statement in sequence. Such a statement is used wherever compound sequences
of operations, not necessarily leading to the definition of a single variable,
are required, for example, sorting, solving a system of differential equations,
packing and unpacking data, etc.
Flow Diagrallls in COlllpiler Language. The following will indicate
how a particular flow chart may be represented in compiler language.
The flow chart of Fig. 27 evaluates the polynomial
10

y =

L: aixi.
i=O
7
Stop

10

FIG. 27.

Flow chart for evaluating the polynomial y

=L

aixi.
i =0

2-208

DIGITAL COMPUTER PROGRAMMING

Using the notation for variables in the compiler language, the flow chart
is given in Fig. 28. The corresponding program (I) in the compiler language
is given in Table 32.

FIG. 28.

Flow chart of Fig. 27 in compiler language.

TABLE 32.

PROGRAM (I) IN COMPILER LANGUAGE

1:
2:
3:
4:
5:

6:
7:

READ
Y2 f-O
Ilf-ll
Y2 f- CIl + (Y1 X Y2)
Ilf-Il-1
G4 IF Il ~ 1

H

Using an iteration statement and letting the degree be variable by
assigning it to the variable 15, the program is given in Table 33.
TABLE 33.
1:
2:

PROGRAM (II) IN COMPILER LANGUAGE

4:

READ
Y2 f-O
4, Il, 15, -1,1,
Y2 +-- CIl + (Y1 X Y2)

7:

H

3:

Using the required representation for all symbols, the alternate program
(II) for evaluating a polynomial of any degree is given in Table 34.
TABLE 34.

1:

2:
3:

4:

7:

PROGRAM (II) FOR EVALUATING A POLYNOMIAL OF ANY DEGREE
Y1 C1 through Cll
Y2 = 0
4, Il, 15, -1, 1
Y2 f- CIl + (Y1 X Y2)

H

READ

F
F
F
F

DATAREAD
SETP
I LOOP

FF

STOP

NEWP

This program, punched one statement to a card, is then translated within
the computer to yield a machine program in SOAP language.
The following remarks concerning the representation of the flow chart
are pertinent:

PROGRAMMING AND CODING

2-209

a. Each process in the flow chart leads to one and only one statement
in (I). However (II) encompasses in one statement, that numbered 3, the
processes numbered 3, 5, and 6 in the flow chart. These three processes are
typical of certain iterations where a process f(· .. ) is to be carried out for
all nl ~ i ~ n2. Process 3 sets the parameter; process 5 increments it;
and process 6 determines whether its upper limit has been surpassed.
These responsibilities are combined in the iteration statement.
b. Since Y1 is a floating point variable it is convenient, but not necessary,
to use a zero which is a floating point constant.
c. The degree of the polynomial is, properly speaking, a problem variable. Treating it as such in (II) consequently makes for a more general
program.
d. The F and FF mark the statement end and program end respectively.
The Compiled Program. Compilation on the IBM 650 two-pass system
proceeds in two phases: (1) translation (into a symbolic program), and
(2) assembly (into a specific machine code). The result of the translation
phase is a symbolic program in SOAP language; i.e., one instruction per
card in standard alphanumeric SOAP format.
The compiled output (translation) consists of four parts: (1) the main
(symbolic) program; (2) the statement dictionary, to be described in the
sequel; (3) the constants (abcons) used within statements; (4) ten reservation cards.
The code for each statement is punched out as soon as the statement
has been translated. A statement dictionary entry is the first card punched
for each statement. This dictionary provides the linkages for transfer
statements. In addition to the program and the statement dictionary, a
list of constants (those found in the statements together with several
required by the finished program and furnished by the compiler itself) is
punched together with ten cards which reserve space in the machine for
these constants, the statement dictionary, and the problem variables.
For the program (II) which evaluates the polynomial of degree 10, the
output of the translation phase is given in Table 35.
General ReInarI{s. The following remarks concerning the translation
produced are pertinent:
1. SOOOI is the first location of the statement dictionary and contains a
link to the (symbolic) location given to the statement whose identifier is 1.
2. Locations within statements are of the form L - - - - , e.g., LAAAC
or LBCAA, which refer to the third instruction within the first statement
and the first' instruction within the twenty-ninth statement respectively.
The first instruction of each statement is always assigned a symbolic
location.
3. Symbolic locations of the form E - - - - refer to the entry locations of
subroutines (extensions). Those listed in the example are to floating point

2-210

DIGITAL COMPUTER PROGRAMMING
35.

TABLE

OUTPUT OF TRANSLATION PHASE FOR PROGRAM

WHICH EVALUATES A POLYNOMIAL OF DEGREE 10

SOOOI
LAAAA
SOO02
LABAA

1
2
3
4
5
6
7
8
9
10

SOO03
LACAA
50004
LADAA
LADAB
LADAC
LADAD

11

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
33
34
35
36
37
38
39
40
41
41
41
41
41
41
41

50000
LAEAA
SOOOO
LAFAA

LAFAG
50007
LAGAA
A
AOO08
AOO07
AOO06
AOO05
AOO04
AOO03
AOO02
AOO01
4
3
4
3

4
3

41 4

41 3
41 4
41 3

00
LDD
00
RAL
STL
00
RAL
STL
00
RAL
RAL
STL
LDD
RAL
SLT
ALO
RAL
LDD
5TL
00
RSL
ALO
5TL
00
RAL
STL
RAL
SLO
BMI

Nap
Nap

00
HLT
00
00
00
00
00
00
00
00
00

0000
LABAA
0000
AOO07
YOO02
0000
10005
10001
0000
YOO02
YOOOI
ACC

LAAAA
EOOAQ
LABAA

READ
Y2 Z OJ

LACAA
LACAA
II

LADAA
LADAA
LADAC
LADAD
LADAB
EOOAJ

Z

IS
Y2 Z CI
1 S Y1 X Y
F
2

10001
10003
8002
C
YOO02
0000
AOO08
10001
10001
0000
10001
W
AOO08
W
LAFAG
S
LAFAG
0000
LAGAA
0000
0000
0000
0000
0000
0000·
0000
0000
0000
I
10002
y

YOO08
C
C0011
5
S0023
A
A0031

EOOAI
LAEAA
LAEAA
LAFAA
LAFAA

II
Z
II
S
LMIR
G
IFL
RW

50004LAGAA
LAGAA
LAHAA
0022
0001
3000
2000
1000
0010
0007
0001
UOOOl
0006
UOO07
0009
UOOIO
0021
U0022
0029
U0030
0038

H

0004
1
11

(II)

PROGRAMMING AND CODING

2-211

arithmetic subroutines, e.g., EOOAI is the entry to the floating point
addition routine.
4. ACC is the floating point accumulator. W refers to a temporary
storage location. The symbolic locations of the variables are their names.
5. All constants appearing in a statement, after being converted into the
appropriate fixed or floating point format, are assigned an absolute constant
location. In addition, certain constants needed during program operation
are assigned, as required, by the compiler. The same constant will never
be assigned more than one symbolic location. After the last statement has
been translated, the abcon locations with their respective values are
punched out, one per card.
6. Appearing as (SOAP) comments in the first and ensuing instructions
of each statement is the original (untranslated) statement. A maximum of
ten contiguous characters of the original statement may appear as comments with a single SOAP instruction.
Table 36 gives the name and meaning of all symbolic addresses or
locations which may be found in a translated program"
TABLE

36.

N AMES

AND MEANINGS OF SYl\IBOLIC ADDRESSES

OR LOCATIONS IN TRANSLATED PROGRAM

Name
LcxIcx2{3I{32

I
Y
C
W

0000
0000
0000
0000

+n
+n
+n

+ n(O ~

n ~ 9)

+
+
+

n ~ 9)

n
A 0000
ACC
P 0000
n(O
E 00CXICX2
S 0000
n

~

Meaning
An instructioD lucation
A fixed point. variable, In
A floating point. variable, Yn
A. floating point variable, Cn
Temporary storage required by parentheses and/or
quot.ation nesting
An absolute constant
Floating point accumulator
Subroutine parameter storage
Name of (entry to) a subroutine
Entry in the statement dictionary

PO-P9 is a temporary storage block used only for temporary storage of
subroutine parameters, including those used by TYPE statements. The
floating point accumulator, ACe, is required for the floating point arithmetic subroutines. The first four abcons, AO through A3 will contain the
machine locations of SO, 10, YO, CO respectively. Contiguous blocks of
storage are assigned, in the order given, to (a) variables (I, Y, C), (b) statement dictionary (S), (c) absolute constants (A), (d) the compiled program
(L), including extensions (E).
The actual assignments are indicated on (SOAP) reservation cards,
which are the last ten cards punched during compilation. The first instruction of the first statement, LAAAA, always appears in 650 location 1999.
Examples of IT Language Problems. The two examples given here
are problems as written for the IT language, a root determination process

DIGITAL COMPUTER PROGRAMMING

and a simple differential-equation integration. These are adapted from
problems given in the M173 course at Michigan by B. A. Galler and the
author.
EXAMPLE 1.
Problem. Solve the equation ax3
bx2
ex
d = 0
by Newton's method by using various initial values (xo) and various
criteria for accuracy of the solution.
Analysis. Newton's method for the equation f(x) = o.

+

.
Xo gIven:

+ +

f(Xi)
Xi+! = Xi - f' (Xi) .

For the equation of this problem,
Xi+l = Xi - qi,

Xo given:
where

Criterion for stopping iteration:

Iqil

=

IXi+! --, xii < e

Flow Diagram of Solution Procedure.

See Fig. 29.
3

Read
a, b,c,d, E,XO

FIG. 29.

Flow diagram for Example 1.

Rough Program.
1:
2:
3:
4:
5:
6:

Read a, b, e, d, Xo,
i~O

~

+ + d)/ (3ax2 + 2bx + e)

q ~ (ax 3 + bX2
ex
Go to7 if IqI ~ e
Punch x, i
Go to 1

PROGRAMMING AND CODING

7:
8:
9:

x~x

i~i

2-213

- q

+1

Go to 3

Correct Compiler Program: Note. We make the following storage assignments:
i:
II
a:
C1
C4
d:
Y1
b:
C2
x:
C5
q:
Y2
c:
C3

1:
2:
3:
4:
5:
6:
7:
8:
9:

a, b,

c, d,

Xo

E,

READ

F
F

I1~0

((C1 . Y1 . Y1 . Y1) + (C2· Y1 . Y1) + (C3 . Y1)
F
+ C4)/((3' C1· Y1· Y1) + (2· C2· Y1) + C3)
G7 IF
~ C5
F
TY1 TIl
F
G1
F
Y1 ~ Y1 - Y2
F
II ~ II + 1
F
G3
FF
Y2

~

IY21

Note. To produce a more efficient and accurate program, Statement 3
could be replaced by

Y2 t - ((((((C1 . Y1) + C2) . Y1) + C3) . Y1) + C4)/
((((3 . C1 . yo + 2 . C2) . yo + C3).
EXAMPLE 2. Problem. y' = x - y2 to be solved from x = Xo to x = Z
with initial conditions y(xo) = yo.
Method of Solution. Step-by-step integration (Euler process).
~y

= (x - y2)

~x.

Initial Conditions and Parameters.
~x =

0.1,

x

Rough Program.

1:
2:
3:
4:
5:
6:

7:
8:
Storage
C1.

~x:

(x - y2)

1:
2:
3:
4:
5:
6:
7:
8:

~x

y~y+~y

x~x+~x

Tx
G3
H

Ty

IF x

y =

1,

Z =

1.5.

Final Program.

~x, x, y, z READ
Tx Ty
~y~

= 1,


r-

()

0
n

~

= number of equations

""'C

C

j = base of Y block
r = ki routine entry

-I

m

;::c

Yi = Yj+i
ki = Yj+n+i
qi = Yj+2n+i
Sb =

Yb =
ti =

(xl

=

""'C

;::c

0

(j)

address of 80000
address of YOOOO
temporary storage
contents of location x

;::c

>
~
~

Z

(j)

~

~
FIG. 31.

Flow diagram of Runge-Kutta IT compiler extension 26.

PROGRAMMING AND CODING

TABLE

EOOBA
BAN9

BANl
BAN2
BAAl
BAN3

BAN4

BAA2
BAA3
BAA4
BAA5

STD
STL
-RAL
lDD
SDA
LDD
SDA
-RAB
lDD
STD
-AXB
LDD
STD
STD
STL
RAl
-ALa
STL
ALa
ALa
RAA
RAB
STL
-STU
-AXB
-SXA
NZA
RAL
-ALa
STL
LDD
STD
LDD
STD
LDD
STD
RSU
LDD
RSU
ALa
LDD
RAU
ALO
LDD
LDD
STD
LDD
STD
RSU
SLO

BAEX
BAN
1809
BANl
BANl
BAN2
BAN2
0000
AOOOO
BASB
0002
AOO02
BAYB
BAEX
BAN
BAYB
POO02
BAYJ
BAN
8001
8001
8002
BAYJN
0000
0001
0001
BAN4
BASB
POOOl
BAKE
BAA2
EOOBA
BAl
BAD
BA2
BAG
BA4
BAA3
BA5
B003
BAA4
BA5
8003
BAA5
BANB
BAD
BA3
BAG
SA6
BA7

37.

SOAP

BAN9

LANGUAGE VERSION

BAN5

BANI
BAN2

BAN6

BAN3
BAN9
BAN3

BAN4
B

BAD
BAN7

BANS

8001
BANS
BAN5
BAN5

2-217

BAG
BAI
BA2
BA3
BASB
BAYB
BAEX
BAKE
BACA
BACB
BAYJ
BAYJN
BA4
BA5
BA6
SA7
BAB
BAN

Negative Instruction Means Fixed Data Address.

LDD
STD
STU
RSL
STL
RAL
RAA
ALa
RAB
ALa
RAC
RAU
-FMP
STU
RAU
-FMP
FAD
-FAD
-FSB
STU
-FAD
-STU
RAU
FMP
-FAD
-FSB
FSB
-STU
-AXA
-AXB
-AXC
RAL
SLO
BMI
RAU
BMI
BMI
00
00
00
00
00
00
00
00
50
70
B3
66
30
00

BAAl
EOOBA
BACA
8002
BACB
BAYJ
8001
BAN
8002
BAN
8002
BACA
0000
ACC4
BACB
0000
ACC4
0000
0000
ACCS
0000
0000
BAS
'ACC5
0000
0000
ACC4
0000
0001
0001
0001
B006
BAYJN
BAN6
BAa
BAN6
BAN6
0000
0000
0000
0000
0000
0000
0000
0000
0000
7106
3333
6666
0000
0000

BAN5

BAN6
B
C

B
C

A
A

BAD
BAN7

C

B
C

BANS

BAG
BAKE
BAN7
BAKE
BAEX

0050
7850
3350
6750
0051

DIGITAL COMPUTER PROGRAMMING

2-218

Compiler Program for Runge-Kutta Test Case. Given d 2y/dx 2 = 6x with
initial conditions (y)x=o = 0, (dy/dx)x=o = 0, determine y in the interval
o ~ x ~ 3, for h = 0.1. Writt~n as a system of three equations, the
problem becomes,
y' 0 = 1,
Y 1 = Y2,
y'2 = 6yo,

,

with initial conditions,
Yo = 0,
YI = 0,
Y2 = O.

For this problem the following compiler variables are defined.
Yo, YI, Y2 =
lco, kI, k2 =
qo, qI, q2 =
h =
n =
j =

Y5, Y6, Y7,
Y8, Y9, YI0,
Yll, Y12, Y13,
Cl = 0.1,
II = 3,
12 = 5,
r = 13 = 8.

n, j, and r could appear in the statements as constants if only one equation

is to be solved by the subroutine,
For the header card
nI

ny
nc
ns
N
nE

=
=
=
=
=
=

5,

15,
2,

\

15,
(2000 - 772) = 1228,
750 (Package 3).

Notice that the values of the n's may be greater than the actual number of
locations needed by the program. *
Statements:
1.
2.

3.
4.
5.
6.
7.

Cl, II, 12, 13, READ
3, 14, 0, 1, 11-1
Y(I2 + 14) = 0
Q26E, II, 12, I3Q
TYI2 TY(I2 + 1)
G4 IF 3.0 V 'YI2
H

* Program author: Bruce W. Arden.

F
F
F
F

F
F
F

PROGRAMMING AN,D CODING

8.
9.
10.
II.

Y(I2
Y (12
Y(I2
G4

+ 3)
+ 4)
+ 5)

= C1
= Y (12 + 2) . C 1
= 6.0· YI2· C1

2-219

F
F
F
FF

Run Request. For use with the IT language and its translation on the
IBM 650 at the University of Michigan, a Run Request of punch-card size
is used to indicate operations to be performed. The programmer indicates
what parts of the one-step or two-step system he wants performed. He
may indicate one or all of the options.
a. Compile (translate by using the IT language compiler-translator).
b. Translate from SOAP II to IBM 650 five-word-per-card basic language, with possible options as to SOAP subroutines and reservation decks
for IT extensions (IT language subroutines).
c. Perform an actual run on a basic machine language problem, obtained
either from hand coding (straight) or compiled. With this, he indicates
any special subroutines, the particular package of the various IT options to
be used, the kind and amount of data to be read in, conditional punch
output for diagnostic purposes, output kind and quantity expected, and
any special utility routines to be used or other information to be obtained
by the operator.
During the translation process the IT translator will punch error cards
to indicate to the programmer that he has violated the conditions of the IT
language [either the formation rules, based on two-letter pairs, to be
described below, or the stop rules, which give the limits on the number
characters per statement or per card, the number of nested subscripts or
extensions (subroutines), etc.]. Such an error card will consist of the word
"ERROR" followed by the offending two-character combination, or else a
corresponding two-character code to indicate the violation of the stop rules.
This process, at the option of the computer operator, can be carried on
with either the one-step or two-step process. Again at the option of the
operator output may continue to be translated after an error has occurred
or has been terminated. Generally, because of the nature of the two-step
target language (SOAP) which uses symbolic addresses, an error in one
statement will not affect the correctness of a later translation. The onestep target language (basic machine language) is an absolute address
language which, if an error is made, will be incorrect thereafter. In the
latter case, occurrence of an error always terminates the translation,
although the translator may continue to scan input data so as to locate any
other mistakes, without putting out any translation.
At the time of running a problem, one of several "subroutine packages,"
depending on what has been asked for by the programmer on the Run
Request, will be stored in the machine by the operator. These packages
will contain successively longer lists of subroutines starting with floating

2-220

DIGITAL COMPUTER PROGRAMMING

point operations (if required) and input-output processes, and including
such functions as square root and trigonometric functions, and also more
elaborate checking and utility procedures. By using a smaller package, a
programmer will have more of the IBM 650's 2000 words of storage available, but fewer subroutines.
Further checks are built into the operation of this system in that each
subroutine, as in most standard systems, has a built-in error indication in
the case of, for example, an attempt to take a negative square root.
To request a run on an IBM 650 computer where the IT compiler is in
use, the programmer fills out a Run Request form (Fig. 32). This form

RUN

REQUEST

(one for eoch problem)
Date ................................................................•.....•

D

COMPILE

D

SOAP II

Sub .................... .
R •.•........••..•••.•.•.• E ...•..••..••..•...••.•••

D

CHECK RUN

D

Straight

D

Compiled

Sub ................... .

p •..............•...•....
Data •................•
Conditional Punch ................................•.
Output expected ................................... .
Utility Routines and Special Information
Requested:

Error

Indications

Program Reg ........................................ .

+++-

Distributor
Lower Ace.
Upper Ace.
Additional Notes on Back

Class .......................... Problem No .................... .
Name ..................................................................

FIG. 32.

IT compiler run request.

2-221,

PROGRAMMING AND CODING

allows the indication of the large number of options from which the programmer can choose in compiling, testing, and running his program.
Translator Construction
The Symbol Pair Technique. The IT compiler, as constructed
originally by Perlis, Smith, and Van Zoeren, had built into it a set of checks
for the formation rules of the language. This is accomplished by scanning
statements from left to right, two characters at a time. Each symbol pair
actuates a machine or assembly language generator which produces a
corresponding sequence of one or more instructions in either basic IBM
650 or SOAP language dependent on whether or not this is a one-pass or
two-pass compiler. Any symbol pair which is not admissible in the sense
of occurring in a meaningful string of symbols in the language will cause
an error alarm in the compiler itself.
The list of admissible symbol pairs, among the more than 1000 that
could possibly occur, can be generated by laying out formation rules, such
as that described in the example below. The syntax or grammar of the
language is a slightly simplified version of that given earlier, with all
references to norms of variables, statements, etc., omitted. Each rule in
the language allows certain admissible symbol pairs. Each entity, when
substituted into the succeeding rule, allows other admissible pairs formed
by juxtaposition of the last symbol of certain entities combined with the
first symbol of others.
Note that the symbol pair method of checking and translating allows
errors to occur. For example, unless some type of memory is included in
the compiler generators, such a sequence as

123.45.67
with two decimal points in a number, may be translated incorrectly, as well
as passed by the translator as a perfectly well-formed string of symbols.
Example of Formation Rule: Floating Point Constants.
nln2··· nkBm
k ~ 8
Examples: 14.92B3; 1066B(-11)
nln2 ... nk: fixed or floating points constant of type A with m = nln2
or (-nln2)
,
First symbols: n, . ; Last symbols: n, )
Admissible pairs.
Bn

n)

- n

(-

B(

nB

.B

Restrictions : Upon occurrence of nB, counter set to 8. Decimal point
has no effect. (N ote: "( +" is not considered admissible.)
Permissible Symbol Pairs and CompHer Representation. The
end result of this rational sequence of generating all possible symbol pairs
on the basis of the original 'rules describing the language can be given in
Table 38.

2-222

DIGITAL COMPUTER PROGRAMMING

TABLE 38. PERMISSIBLE SYMBOL PAIRS AND COMPILER REPRESEN'l'A'l'ION
AC
AC
JX
"X
.X
QX
WC
~C
AI
AI
"n
.n
In
WI
Qn
~I
AL
A(
RD
WJ
,A
KA
~.
)1
A"
)F
AQ
,C
KC
RF
WL
~(
AY
AY
RI
,F
KF
)1
WQ
~"
B(
BL
,I
KI
),
RK
WY
~Y
Bn
Bn
Wn
KJ
RM
,.
)~n
CI
XA
CI
KL
RP
XA
,(
)P
CL
XC
XC
C(
)"
,"
RQ
KQ
Cn
XI
Cn
XI
,Y
KY
RR
»
XJ
DA
X.
,n
Kn
RS
IA
)+
XL
DC
LA
RT
(A
)T
X(
IC
DF
X"
DF
XQ
(C
LC
)=
RU
XY
DI
XY
LI
RV
(I
II
»
Xn
Xn
DJ
(.
LJ
RW
I.
)~
YI
DL
YI
LL
)X
RX
((
I(
)~
YL
DQ
LM
RZ
Y(
(I"
Yn
Yn
DY
("
SA
LQ
IY
+A
f-A
ZA
Dn
(Y
LY
SC
In
+C
E,
f-C
ZC
EK
Ln
SI
(n
+1
FA
f-I
ZI
FA
-A
MA
SJ
+.
FC
f-.
ZJ
FC
Me
SL
-C
+(
FF
f-(
ZL
FF
MI
-I
SQ
+"
f-II
FI
+y
ZQ
FI
-J
MJ
SY
f-Y
ZY
F.
FJ
ML
Sn
+n
-(
f-n
Zn
F(
TC
FL
TC
MQ
"
F"
nZ
FQ
MY
TI
TI
-Y
nB
Fn
Fn
T(
nB
Mn
TL
-n
GI
nD
GI
PA
TY
TY
PA
nl
nE
G(
GL
nE
PC
PC
UA
=A
Gn
nF
Gn
nF
PI
UC
PI
=C
nJ
HF
HF
UI
n.
P.
PJ
=1
nI
IF
nI
IF
PL
UJ
P(
nK
II
P"
n,
II
UL
PQ
=(
nM
I(
IL
PY
nPY
UQ
"
nP
In
Pn
nP
In
Pn
UY
=Y
nn
JD
nn
Un
QD
.1
=n
"1
.F
"F
n"
JF
nQ
VA
QF
>A
nR
JK
.,
n)
VC
QK
>C
",
nS
JM
VI
QM
>1
n+
"
IIp
.P
nT
JP
nT
VJ
QP
>.
nU
JQ
VL
n=
>(
QQ
"
""
.)
JR
nV
")
n>
>"
VQ
QR
JS
nW
VY
>Y
.+
"+
QS
n~
nX
JU
nX
Vn
QU
>n
"
nZ
JV
.>
">
WA
n
QV
~A
JW
.~
QW
"~
n~

PROGRAMMING AND CODING

2-223

A More Rational Procedure for Translator Construction. The
weaknesses of the symbol pair process are apparent. Errors when symbols
like decimal points are repeated indicate that all recursive definitions
cannot be checked without the complicated process of adding memory to
the generators, which becomes completely an ad hoc process.
A multiple scan process is therefore necessary to produce a complete set
of checks on the formation rules, as well as rational setting up of generator
entries. In describing this, a notation of productions, or language definition
rules, as described in Rosenbloom (Ref. 88), will be used. The list of
productions that follows below can be seen to parallel the original set of
rules set up for the IT language (again questions of variable statement
norms are omitted for simplicity). (Production 1 below can be read as
"If a is a number, then a is a fixed point integer constant." Production 2
would read, "If the string a is a fixed point integer constant, and if the
string {3 is a fixed point integer constant, then the concatenated string a{3
is a fixed point integer constant." Production 27 would read, "If the string
a is an operand, (3 is an operator, and the string 'Y is an operand, then the
string (a{3'Y) is an operand.")
From the set of 46 productions, each of which defines a new string which
can be developed in terms of previous older ones, a "production tree" will
be set up that describes this definition process graphically.
Fonna] Representation of the IT Language. Writing the formation
rules in a symbolic fashion, one defines the following classes:

m
JJ
a

numbers
fixed point integer constants
floating point constants type a
93 floating point constants type b
e all constants
~ fixed point integer variables
~ floating point variables
"0 all variables
operations
L\
extensions
&>
9)
fixed point operands
t)
operands
fY subroutine parameter sets
g; statements
GU unconditional transfers
fit rela ti onshi ps
'X conditional decisions
Then, by adding these symbols to the language one can obtain a formal
system based on a set of axioms, and a set of productions, that produce all

2-224

DIGITAL COMPUTER PROGRAMMING

possible constants, variables, extensions, operands, and statements. One
can consider that the extra symbols carried above are used in the machine
to designate an object of the particular type. Small Greek letters will
indicate strings of symbols.
Axioms. AO. ~I, :FY, :FC, CUlO, CUll, .. " CUl9, g{ =, g{ >, g{ ~, Send
HF, §end READ F, .1+, .1-, Ax, .1/, A exp
Productions:

PI.
P2.
P3.
P4.
P5.
P6.
P7.
P8.
P9.
PIO.
PI1.
P12.
P13.
P14.
P15.
P16.
P17.
PI8.
PI9.
P20.
P2I.
P22.
P23.
P24.
P25.
P26.
P27.
P28.
P29.
P30.
P31.
P32.
P33.
P34.
P35.

CUla ~ Jja
Jja, Jj{3 ~ Jja{3
Jja, Jj{3 ~ Cia.{3
Jj a, Jj (3 ~ 03aB{3
Cia, Jj{3 ~ 03aB{3
Jja, Jj{3 ~ 03aB( -(3)
Cia, Jj{3 ~ 03aB(-{3)
Jja ~ ea
Cia ~ ea
03a ~ ea
Jja ~ ~Ia
~a~~Ia
~a ~

:FYa
:FCa
Jja ~ :FYa
Jja ~ :FCa
9)a ~ :FYa
9)a ~ :FCa
9)a ~ ~Ia
~a ~

:Fa~~a
~a~~a
~a ~

0(a)

ea~0a
~a ~ 0( -a)

0a ~ 0(a)
0a~ 0Aa
0a, A{3, 0)' ~ 0 (a{3)' )
~a~ 9)a
Jja ~ 9)a
9)a, A{3, 9))' ~ 9) (a{3)')
9)a ~ 0a
0a ~ 9'a
0a, 0{3 ~ 9' a, {3
9'a, 0{3 ~ 9'a, {3
Jja, 9'{3 ~ & "aE, {3"

PROGRAMMING AND CODING
P3G.
P37.
P38.
P39.
P40.
P41.
P42.
P43.
P44.
P45.
P46.

2-225

f9a ~ ea
19a, 19{3 ~ ~end a ~ {3F
19a, (9{3 ~ Send a ~ (3F
fDa ~ GUGa
~a ~ GUG(a)
GUa ~ Send aF
(9a, ffi.{3, (9')' ~ JC a{3"{
GUa, JC (3 ~ ~end aIF{3F
"'rJa, 19{3, 19,)" 198 ~ Send TaT{3T,),T8F
f9a ~ Send aF
tja, fi'{3 ~ Send a, {3, F

N ow invert the process of productions in order to develop an inverse
process that will allow us to check any arbitrary string a in our original
symbols. Speaking intuitively, we are looking for a method by which we
can guarantee that any statement in the Perlis IT language obeys the rules
for generating such statements that we have set up. Formally, we should
add two new symbols, r (true) and cp (false), to our present language to
indicate intuitively that a string obeys the rules or does not, and then
develop an entirely new set of productions (computer program!) that will
produce the string ra whenever our original string obeys the rules of
the language, and cpa whenever our original string does not obey the
rules.
Such a procedure is a decision process, one which arises over and over
again in formal mathematics. In terms of the description here, a decision
process is nothing but a set of productions which separates out a particular
class of strings in a language. Other decision processes pertinent to computer programming include the following:
1. Decide whether or not a given computer program runs to completion
(does not end in a loop) without ever running it.
2. Decide whether a given iterative process converges, without ever
actually calculating with it.
Instead of writing out a set of such productions, we will concentrate here
on the process by which they might be obtained. In particular we include
a production tree, a graph describing the definition sequence given of the
productions, and the inverse of such a graph, a similar tree describing
the decision process itself.
By starting at the symbol S, which is the end point in the production
process of producing all possible IT statements, one can proceed backward
up the tree of Fig. 33, testing each path in the maze in turn. The results
are shown in Fig. 34. Here, if a translator proceeds along the paths in the
direction of the arrows, based on subsequent decisions as to whether or not

2-226

DIGITAL COMPUTER PROGRAMMING

"l'Ja, "l'J{3, "l'J,)"

FIG. 33.

'Uo -

Send TaT{3T,),ToF -------~\

Pattern for computing all possible statements in the IT language.

PROGRAMMING AND CODING

oa

2-227

e~~aa~a~B:S:;
ffi'

-

(jaBS{3

~ ffiaB/3

-->-

ffiaB(-.B) -

S~
Substitution

9aB(-9/3)

Type
end &aF -

&a -

"9/3, E, ff'''/''

.,

19a ~19

j ~:ff9

Extension

Conditional Linkage

7

endaF~ ~a

(]) ®

end aF -

FIG. 34.

Unconditional

/~

90, ff'€

Iteration

Production tree for checking arbitrary strings.

2-228

DIGITAL COMPUTER PROGRAMMING

the string has the form in question, it will arrive at a decomposition of the
original language string into a hierarchical structure. For example,
Y2 f - (Y(I1

+ 7)

- C3)/(Y(I3

+ 6)

X CI2)

will become decomposed into the structure of Fig. 35. N ow if the translator starts at the bottom of this tree structure and performs a bottom-to-

/..t.-~

! /""x/ '"
y

/-",e y e

~3

!+

/ \

I

~1

7

~I

i+

/ \
i
I

6

~2

3

FIG. 35. Decomposition example:
Y2 f - (Y(n + 7) - C3)/(Y(13 + 6) X CI2).

top dictionary translation, a completely rational translation will be the end
result, with no possibility for errors as in the symbol pair method. As
Kantorovich (Ref. 60 ) has pointed out, this method of decomposition
allows application of syntactical transformation rules (commutativity,
associativity, etc.) to be applied before translation to produce more efficient
hierarchical structures. Such procedures are reported by Kitov (Ref. 61)
with reference to the compiler-translator for the Strela and in the Fortran
description (Ref. 35).
This technique of formal decomposition also applies to natural languages,
as might be expected. The difficulty here, of course, is not in the development of the decomposition process, but in the listing of the original definitions of acceptable strings (original productions) which are far more than
the approximately 50 required by the IT language.
13. AUTOMATIC PROGRAMMING: A SOVIET ALGEBRAIC
LANGUAGE COMPILER
Description

Mathematicians of the Soviet Union V. A. Steklov Mathematical
Institute have developed a programming technique similar to that of the

PROGRAMMING AND CODING

2-229

algebraic language compilers in the United States and Western Europe,
but enough different so that the technique should be included here separately. This technique, that of "operational programming," is due to
Liapounov, Ianov, and others, and is described by Kitov and the originators
(see Refs. 51, 52, and 61).
The Soviet programs, analogous to compiler-translators, translated
literally as "programs that program," are based on an external notation
that is written linearly across the page.
EXAMPLE. Adams' method for integrating an ordinary differential
equation dy/dx = f(x, y), requires three arithmetic operators: AI, setting
up initial data; A 2 , computing the three starting ordinates of the integral
curve; A3 i , computing the ordinate in the next ith point in terms of the
already known previous three ordinates. If these are combined with an
iteration operator
n-l

Tr

i=3

the sequence describing the program performance for n steps would be
n-l

A IA2

II

i=3

A3 i

If there is need to calculate m integral curves rather than one, the
program description would become
m

II

n-l

(Ali A2i

II

A3(ii»)

i=3

.i =1

The symbol II is one of a class of logical operators. (N ote the similarity
of this notation to the vertical statement language of the Internal Translator (see Ref. 81 and Sect. 12) with each arithmetic or logical "operator"
replaced by an arithmetic or iteration "statement.")
A second type of logical operator is the logical condition, an arithmetic
proposition that may be either true or false and is denoted by the forms
p(x

= y)

p(x ~ y), etc.

with the proposition being given within the parentheses. Ianov (Ref. 52)
has suggested the use of brackets to indicate possible program sequence.
Brackets would occur in pairs with the same subscripts. Ordinarily the
sequence of operators in a "program scheme," as a line of operators describing a program is called, will indicate their sequence of performance.
Following each logical condition a subscripted left bracket will indicate

2-2.30

DIGITAL COMPUTER PROGRAMMING

possible change of control out of the usual left-to-right sequence. If the
condition is false, the next operator to be performed will be that operator
following the correspondingly subscripted right bracket. If the condition
is true, the next operator to be performed will be the next operator in
sequence.
EXAMPLE. AIP(X = y)[A2A3JA4
1

1

Interpretation. 1. Perform AI. 2a. If x = y, perform A 2, A 3, and
A4. 2b. If x ~ y, perform A 4.
Note. Indexing operators, including both prestoring, restoring, and
incrementing of addresses, will be designated by the letter r.
Comparison with Other Methods. Three comparable notations for
describing the process of matrix multiplication are shown in Fig. 36. The
first is the standard flow diagram notation already described. The second
is the original string notation of Liapounov, designed for use with a computer with a three-address instruction logic. Here the bracket superscript
indicates the number of the operator to which control is to be transferred
when the logical condition is false. The bracket subscript indicates the
number of the operator to which control is to be transferred when the logical
condition is true.
The third notation is that of Ianov described above. The advantage
of the third notation, as he and Kantorovich noted (Refs. 51 and 60), is
that such an algebra of string transformations allows development of a set
of transformation rules by which a "string language" of the Ianov type of
notation may be manipulated to produce a "more efficient" program in the
sense of some measure of effectiveness. Perlis and Smith (Ref. 155) have
developed a string language manipulator for the IBM 704, based partially
on the work of Markov (Ref. 67) on the theory of algorithms, which performs such manipulations easily. The string language manipulator is
proposed to be used not only with such symbolic operational programs,
but also algebraic language compiler-translators and natural language
transla tors.
Rules. Ianov gives a complete set of transformation rules for programs. These rules, when applied to any program written in terms of
operators, logical conditions, and left and right strokes, may be used to
generate all possible equivalent variants of a program.
Let us call an expression, every finite line composed of various symbols,
of operators, logical conditions and right strokes so that not more than one
left and not more than one right stroke with the subscript i is found therein
for every natural number 1. A logical condition a L is subordinate, for
i

a given set of parameters, to the logical condition {1 if
when {1 is performed for the given set of parameters.

a

is performed only

n

C"k
t

= j L= 1aijbjk

(i
(k

=

=

1, "', n)
1 ...
"

n)

""C

;:::c

o
»
(j)
;:::c
~
~

Z

(j)

»
z
o

Comparable Liapounov (three-address) string notation

h

()

11

9

7

5

2

3

5

8

J12 JA 314 ]A5 I sP 7(j = n + 1) [l sP 9 (k

3

=

n

oo

2

+ 1) [ I 10P l1 (i

=

n

+ 1) [

10

Z

(j)

12

Comparable Ianov (single-address) string notation

h.J 12.J A314.J

A5I sP 7(j = n

+ 1)

L I sP 9 (k

=

n

+ 1) Lh oP

1 2 3 3 2

FIG. 36.

Matrix multiplication (method 1).

l1 (i

=

n

+ 1) L
1

Various operational programming notations.

~

t...>
w

DIGITAL COMPUTER PROGRAMMING

2-232

The following system of axiom schemes and derivation rules (where
arbitrary expressions; ~ ( (L i ), (IC) + 1 ~ IC

The "replace" index register instruction allows the contents of any index
register to be transferred into any other index register.
The output operations, in order to save computer time, allow information to be output in a standard three numbers per line format and to be
"stacked" in an output stack, so that they can be typed out in a group.
Typing of a fixed point number allows integer labeling of output.
The following operations are improper:
1. Division by zero.
2. Log of zero.
3. Log of negative number.
4. Square root of negative number.
5. Exponential of a number greater than 128 In 2.

PROGRAMMING AND CODING

2-243

6. Any arithmetic operation resulting in a number whose absolute value
is greater than 2128.
7. When an improper order is sensed by the machine, "xxxxxxx" is
typed out, the bell rings continuously for about 12 seconds and computations are halted. The A register will contain a meaningless result. When
the compute switch is reset to "Go," computations are resumed with the
order that is next in sequence.
TABLE

39.

INTERCOM INSTRUCTION LIST

Arithmetic operations
Operations involving a memory position and the A register
49
Clear and subtract
4v
Clear and add
4z
Divide
59
Subtract
5v
Add
5x
Store
67
Multiply
Operations involving the A register only
07
Square root
11
Natural logarithm
13
Absolute value
16
Exponential
29
Negate
Transfers of control operations
Ov
Transfer if A register is negative
10
Transfer if A register is non-negative
Unconditional transfer
19
42
Halt
43
Marked transfer (unconditional)
44
Return transfer (unconditional)
Operations on index registers
3x
Set B register
40
Set D register
41
Set L register
57
Decrement B register
65
Increment B register
1y
Replace index register
Output operations
Type and tab
1z
20
Type and carriage return
21
Stack
22
Type the stack
23
Space
, 24
Type fixed point number
33
Ring bell
Input operations
09
Read punched tape

2-244

DIGITAL COMPUTER PROGRAMMING

COIn parisons

It is useful to compare the Intercom system with the other interpreter
described, the EASIAC (see Sect. 6). The EASIAC, which simulated a
three-address instruction logic on a three-address logic machine, also had
a large number of index registers. Since the MIDAC, its "host" machine,
had a large storage (6, 144 words of secondary storage), larger EASIAC
programs were possible, but the EASIAC storage was also decreased over
the original MIDAC storage.
Compared with the Intercom system, which uses almost 1300 locations,
out of about 2200, the final stages of the IT compiler on the IBM 650 uses
only about 400 out of 2000 locations to accomplish the same features. This
difference is due to the noninterpretive nature of the IT compiler. The
speed of EASIAC and Intercom, although they can perform address modifications rapidly and quite efficiently, is limited by the interpretation cycle
which causes a drop in speed, with the need for floating point subroutines,
that may be as much as an order of magnitude.
The following conclusions may be drawn from the discussion:
1. Interpreters may be very useful in simulating another computer
on an original host machine.
2. Interpretation will slow down speed of operation markedly.
3. The use of a preliminary translator with closed subroutines will
generally produce much more effective results (but note the exceptions
below under Recursive Languages, Sect. 15).
15. AUTOMATIC PROGRAMMING: RECURSIVE LANGUAGES
Recursive Use of Subroutines

One of the most powerful techniques that has been developed for using
digital computers is that first attempted by Newell, Simon, and Shaw
(Ref. 143). The basis of their technique is to free the programmer from all
dependence upon machine characteristics, including storage allocation.
They have made use of the concept of indirect addressing (described in
Sect. 11) to build upon an "associative memory." The latter is a list-like
structure that allows one or more "lists" (the counterpart of the usual
programming "region") to be built up in storage-added to or deleted from,
either at the ends or in the middle-without the need for the user's keeping
track of any storage positions. This, in a sense, is an extension of the
symbolic or floating address technique from instruction addresses to data
addresses, and moreover it allows the usual program changes of deletion
and insertion to be made during actual performance of the problem, rather
than merely before its operation.

PROGRAMMING AND CODING

2-245

The first problem that this group of researchers attacked was that of
instructing a machine to play chess. This was later changed to proof of the
first listed theorems of the propositional calculus in the Principia ill athematica (Ref. 105). The chess player's performance, as has been shown by
de Groot (Ref. 152), is a recursive one, in that he will attack a portion of the
problem, move onward through a chain of successive subproblems, and
then return to the original problem as a result of some decision made in the
subproblem investigations, proceed once more to the subproblems, etc.
A similar performance was discovered in the behavior of human beings
attempting to solve the theorems of the propositional calculus. The need
is apparent, in such problems, to have available complete facility for construction of a completely flexible hierarchy of subroutines, so that anyone
may call on any other (even one above it in the chain) without loss of
control of the process, and without introduction of any of the standard
logical paradoxes.
To a certain extent this has been realized in the Holt and Turanski GP
compiler (Ref. 149); but without indirect addressing, associative memory
features of the IPL (Interpretive Programming Language) of Newell,
Simon, and Shaw, use of the techniques on any machine is limited because
of storage assignment and reassignment requirements that must be met
during the course of performance. The IT, Unicode, and Fortran compiler
languages (Sects. 11 and 12), which allow subscripting, are general enough
to permit such a recursive subroutine description. As Schecher (Ref. 91)
has shown, one way of handling subroutines in a recursive fashion is for each
subroutine to supply all variables and return addresses to the subroutine
one level in the hierarchy above or below it. A "level index" (j in Fig. 26,
see Sect. 11) must be kept, which is increased at each time of subroutine
entry and decreased at each time of subroutine exit.
Figure 26, Sect. 11, describes a problem involving three subroutines,
entered at a, "I, and €, and controlled by a master routine. If each subroutine, as a closed type, is required to return to the level from which it was
entered, and if enough storage space is provided so that the variables can be
stored for every entry of a subroutine, then this process will work. Since
in such a problem as that of Fig. 26 the knowledge of how many times a
subroutine is to be performed is unavailable at the start of the problem,
some device such as the associative memory described above must be used
to guarantee that storage is used to the fullest. Similarly, the computer
can be programmed to check the time that has occurred in any area of the
problem so that it can stop that portion whenever time is up.
The problem in Fig. 26 is not an actual one, but is typical of the type of
problems involved with this technique. A flow diagram, command compiler language, or machine code is necessary for description of such prob-

DIGITAL COMPUTER PROGRAMMING

2-246

lems. Whether this problem ever terminates or not is dependent on the
three functions f(ah bh Cj), g(aj, bj, Ci), and h(aj, bh Cj) and the values
read in, and in the general case cannot be predicted.
lb. LOGICAL PROGRAMMING

The standard uses for a digital computer are in computation of problems
in numerical analysis. However, binary machines can be used for many
nonarithmetical problems involving logical predicates. (See Chap. 11.)
As an example of such problems the checker game first analyzed by Strachey
(Ref. 15) and later improved by Samuel in a program for the IBM 704
makes use of machine words with binary zeros and ones representing the
absence or presence of checker men on the board. This technique has been
used by Ulam and Kister (Ref. 114) also, apparently, in their first try at a
solution of a game of chess.
Below is given a simple problem, that of evaluation of truth tables in the
propositional calculus, along with an explanation of the instructions available on four binary computers (Univac Scientific 1103A, IBM 701 and
704, and MIDAC).
.
Problem in the Propositional Calculus. The following statement
is drawn from Copi (Ref. 115, p. 52, problem 24).
"If old Henning wants to retire, then he will either turn the presidency
over to his son or sell the business. If old Henning needs money then he
will either sell the business or borrow additional capital. Old Henning will
never sell the business. Therefore if he neither turns the presidency over
to his son nor borrows additional capital, then he neither wants to retire
nor needs money."
With the notation R, T, S, N, B, and the symbols:) (material implication), + (or), . (and), and - (negation), one has
[R :) (T

+ S)] . [1Y :) (S + B)] . [S] :) [( T . B) :) (R· N)]

One would like to know whether the statement is true or false. The problem can easily be programmed to be solved on the computer. The truth
tables for all possible combinations of R, T, S, N, B are stored by columns
(5 columns of 32 bits each) in a binary machine. Starting at the innermost
parenthesis, one may perform operations on columns in pairs and the results stored. Working from the inner parenthesis out by such two-valued
functional procedures, one finally obtains the truth value of the statement
for all possible combinations.
If the computer operations do not permit or and material implication,
for example, they can be replaced as follows:

A+B=A.j3

-

A:)B=A+B=A·B=A·B

PROGRAMMING AND CODING

2-247

Logical Programming for the Univac Il03A

The (u) will be represented by Uj,n, where j will indicate the digit (j =
0, .. " 35) and n, the time of operation of the instruction, with a similar
notation for v.
Vj,n == 1 will indicate that all digits (j = 0, .. " 35) of V contain a
binary one.
Uj,n == will indicate that all digits (j = 0, .. " 35) of U contain a
binary zero.
Five Univac 1l03A instructions are particularly pertinent for use with
the basic two-valued logical functions:
27. Controlled Complement (CC). Replace AR with (u) leaving
AL undisturbed. Then complement those bits of (AR) that correspond to
ones in (v). Then replace (u) with An.

°

Truth Table
U i .n
0
0
1
1

V i .n
0
1
0
1

U i.n+l
0
1
1
0

Result:
U i .n+1

==

(U in

t=

Yin)

==

(jin' Yin

+

U in · Yin

(j = 0, .. ,,35),

(j = 36, .. " 71),

(j = 0, .. " 35).
51. Q-Controlled Transmit (QT). Form in A the number L(Q) (u).
Then replace (v) by (AR). (L(Q) (u) has leftmost bits zero and righthand
bits given by individual bit product.)

A R ;.n+l

==
==

V i .n+1

==

A Li •n +1

°

(j = 0, .. ,,35),

U in · Qin

(j

= 36, .. ,,71),

U in . Qin

(j

= 0, .. ,,35).

53. Q-Controlled Substitute (QS). Form in A the quantity (Q) (u)
plus L(Q)' (v). Then replace (v) with (AR). The effect is to replace
selected bits of (v) with the corresponding bits of (u) in those places corresponding to l' s in Q.

A L ;.n+l == 0,
AR;.nH

V i .n+l

==
==

V in' Qin

+ U in · Qin

Vin·Qin +Uin·Qin

= 36"",71),
(j = 0, .. " 35).
(j

DIGITAL COMPUTER PROGRAMMING

2-248

Special Case I
If U = 1,

(j = 36, .. " 71)
A Ri .n+1 ==(V in · Qin) + (1 . Qin)
== V in . Qin + Qin
== Q in + V in . Qin
(Distributive law)
== (Qin + Yin) . (Qin + Qin)
== (Q in + V in) . 1
== Qin + Yin.
Therefore if U = 1 (or = Q), the Q-controlled substitute yields the logical
or.
Special Case II
If V = 1,
A Rj •n+1

+ U in · Qin
Q in + U in . Q in
(Qin + U in ) . (Qin
(Qin + U in ) • 1

== 1 . Qin

==

==
+ Qin)
==
== Qin + U in
== Qin :J U in by definition (j = 0, .. " 35).
Therefore if V == 1 (or Q), then Q-Controlled Substitute yields the logical
material implication.
II. Translllit Positive (TP). Replace (v) with (u)
(j

12. Translllit Negative (TN).
of (u).

= 0, .. ,,35).

Replace (v) with the complement
(j = 0, .. ,,35).

If one therefore performs (in some cases) proper preliminary storage of
1, one can express all the logical operations :J , . ,
¢ immediately with at most two instructions.

o and

+ , -,

Logical Progralllllling for the IBM 704

Unlike the Univac 1103A, the IBM 704 has one instruction for each of
the common logical operations and, or, and not. In the description below
digits P of the accumulator and S of the storage location are labeled digit
zero (0). Digits Sand Q of the accumulator are labeled -2 and -1
respectively.

PROGRAMMING AND CODING

2-249

AND to Acculllulator
ANA Y. Each bit of the C(AC)P,l_35 is
matched with the. corresponding bit of the C(Y)S,l-:35, the C(AC)p being
matched with the C(Y)s. When the corresponding bit of both the AC and
location Y is a one, a one replaces the contents of that position in the AC.
When the corresponding bit of either the AC or location Y is a zero, a 'zero
replaces the contents of that position in the AC. The C(AC)s,Q are
cleared. The C (Y) are unchanged.

Aj,n+l
Yj,n+l

==
==

(j = 0, .. " 35),

°

(j = -2, -1),
(j = 0, .. ',35).

Yin

AND to Storage
ANS Y. Each bit of the C(ACh,1-35 is matched
with the corresponding bit of the C(Y)S,l-35, the C(AC)p being matched
with the C (Y)s. When the corresponding bit of both the AC and location
Y is a one, a one replaces the contents of that position in location Y. When
the corresponding bit of either the AC or location Y is a zero, a zero replaces
the contents of that position in location Y. The C(AC) are unchanged.
Ai,n+l

==

(j = 2, -1,0, .. ,,35),

Ain

(j = 0, .. ',35).

OR to Acculllulator
ORA Y. Each bit of the C(AC)P,1_35 is
matched with the corresponding bit of the C(Y)S,l-35, the C(AC)p being
matched with the C (Y)s. When the corresponding bit of either the AC or
location Y is a one, a one replaces the contents of that position in the AC.
When the corresponding bit of both the AC and location Y is a zero, a zero
replaces the contents of that position in the AC. The C (Y) and the
C(AC)s,Q are unchanged.
Ai,n+l
Ai,n+l
Yi,n+l

==
==
==

Ain

+

Yin

(j = 0, .. ',35),

Ain

(j = -2, -1),

Yin

(j = 0, .. " 35).

OR to Storage
ORS Y. Each bit of the C(ACh,1_35 is matched
with the corresponding bit of the C(Y)S,l-35, the C(AC)p being matched
with the C (Y)s. When the corresponding bit of either the accumulator or
location Y is a one, a one replaces the contents of that position in location
Y; when the corresponding bit of both the AC and location Y is a zero, a
zero replaces the contents of that position in location Y. The C(AC) are
unchanged.
(j = -2, -1,0, .. ',35),
(j = 0, .. " 35).

2-250

DIGITAL COMPUTER PROGRAMMING

COIllpleIllent Magnitude
COM. All ones are replaced by zeros
and all zeros are replaced by ones in the C(AC)Q,P,l-35' The AC sign is
unchanged.
(j = -1,0"",35),
A i ,n+l == Ai,n
A i ,n+l

==

Ain

(j

= -2).

Logical PrograIllIlling for the IBM 701

The IBM 701 has easily available only three logical operations particularly pertinent for use with the basic two-valued logical functions.
Extract Y
EXTR.
(j = 0, .. ,,35),
(j

= 0, .. ·,35).

Add Y
ADD.
Subtract Y
SUB.
If position Y contains the binary number -.111 ... 1 (all ones), then if
the accumulator is positive or positive zero, addition of (Y) will give the
negation of ACC in all 36 positions. If the accumulator is negative or
negative zero, then subtraction of (Y) will give the negation of ACC in all
36 positions.
If Ao == 0, then A i ,n+l == Ain after ADD Y.
If Ao == 1, then A i ,n+1 == A jn after SUB Y.
Logical PrograIllIlling on the MIDAC

On the MIDAC, a 44-bit computer built at the University of Michigan
as a modification of the National Bureau of Standards SEAC design, there
exists a special three-address instruction that combines several of the
logical operations in one machine order. The "extract" operation is
defined as follows:
ex
a.
~
'Y. Whenever {3 has a digit "one," replace the corresponding digit of 'Y by the digit of a; otherwise, leave 'Y unchanged. The
truth tables for this instruction could be constructed as follows.
a

{3

0
0
0
0

0
0

1
1
1
1

'Yn-l
0

"In

0

1

1

1
1

0

0
0

0

0
0
0

1
1

0

1
1
1

1
1
1

·PROGRAMMING AN.D CODING

2-251

Forming the Boolean equivalent of the table, one gets
'Yn

== Ii . 13 . 'Yn-l + a . i3 . 'Yn-l + a . {3 • 'Yn-l + a
== (Ii + a) . i3 . 'Yn-l + a . a' ('Yn-l + 'Yn-d
== i3 . 'Yn-l + a . {3.

. {3 • 'Yn-l

N ow, if the 44-bit word (ignoring sign) a is given the value of all "one's,"
'Yn

On the other hand, if 'Yn-l
'Yn

==

Certainly, if 'Yn-l

13 • 1

== 13 . 'Yn-l + 1 . {3
== i3 . 'Yn-l + {3
== {3 + 'Yn-l·

== 1, then

+ a . {3 == i3 + a . {3 == 13 + a

(3 :) a.

== 0, then
'Yn

Finally, if 'Yn-l

==

==

==

a . {3.

1 and a

== 0, then

'Yn

== i3 . 1 +

°.

{3

== i3.

Thus one instruction contains and, or, not, and material implication.
17. MICROPROGRAMMING

Many programmers have thought that the technique of programming
should allow greater internal control by the programmer of the detailed
behavior of the computer. This direction of procedure would move the
programmer in the direction of the logical designer, rather than in the
direction of the numerical analyst and mathematician as the use of translators and compilers had been carrying him. At a meeting of computer
designers and programmers at the Massachusetts Institute of Technology,
Cambridge, Massachusetts, in 1956 (proceedings not published), it was
agreed to call this technique, still not clearly defined, microprogramming.
Several formal definitions of this technique were proposed, two of which
are listed.
1. Wheeler of Cambridge University described the technique used in
the construction of the EDSAC II there as a useful example for programmers. This machine's designers had used a magnetic core storage matrix
of large size as the heart of the c~mtrol element. By passing leads through
various cores in sequence, the standard instruction code of the computer
was being developed.
2. Others proposed an extension of the Cambridge technique to allow
continuous control by the programmer of the computer's instruction code
or at least a subset of it. This would be accomplished by transferring

2-252

DIGITAL COMPUTER PROGRAMMING

certain words (equivalent in meaning to the wiring sequence used with the
EDSAC II) to specified storage locations in the control unit of the computer. These would, in essence, then change the actions and time sequence
of a given instruction. By this technique a computer could theoretically
be changed quickly from single to double precision arithmetic or to floating
point. The input-output instructions could be changed to suit the problem
at hand.
The TX-O Developlllen t
Hardware development on microprogramming has been done by a group
including Clark, Farley, Gilmore, Peterson, and Frankovich (Ref. 39) in
connection with the instruction logic for the TX-O, an experimental computer designed at the Lincoln Laboratory of the Massachusetts Institute
of Technology. This computer was constructed to test a large 256 X
256 (65,536-word) magnetic core storage system. The logical design,
therefore, was simple in that it had only four operations in two bits of
the standard 18-bit word. The remaining 16 bits of each word were used
to address anyone of the 216 storage positions.
The computer, in addition to the standard program counter and instruction register, contains intervention registers, as well as four internal
registers which can be used in the arithmetic process:
1. Memory buffer register (MBR) with 18 bits plus one parity check bit.
2. Accumulator (Ae) with 18 bits, used to store results of numerical
operations as well as an input-output buffer. It is constructed as a one's
complement ring adder modulo 218 , with no overflow alarm.
3. Memory address register (MAR) with 16 bits, which selects information in storage and "operate class commands." (See below.)
4. Live register (LR) with 18 bits, a high-speed flip-flop rapid access
register.
Three of the four instructions are similar to those used in any singleaddress instruction code:
Sto X. Replace the contents of register X with the contents of AC.
Leave AC unchanged.
Add X. Add the word in register X to the contents of the AC and leave
the sum in AC.
Trn X. If the sign digit of the accumulator (ACo) is negative (i.e., a
one) take the next instruction from register X. If the sign is positive
(i.e., a zero) proceed as usual.
The one unusual instruction of this computer which may be considered
as the first announced true microprogramming instruction is the following:
Opr X. Execute one of the operate class commands indicated by the
number X.

PROGRAMMING AND CODING

2-253

The operate class commands all have the same binary combination in
the two-bit instruction position, but the remaining 1G bits selected 21
possible microoperations dependent upon the bit combination. Each
micro operation has a specific time pulse during control on which it was
scheduled to operate. Thus a given sequence of address bits in any "opr"
instruction gives a unique sequence of microoperations.
The basic microoperations, in time pulse sequence, with the octal address
corresponding, include:
At pulse time 0.8:
CLL. Clear the left nine digits of AC-100,000 (octal).
CLR. Clear the right nine digits of AC-40,000 (octal).
lOS. In-Out Stop. Stop machine so that an in-out command (specified by bits G, 7, 8 of the MAR) may be executed-20,000 (octal).
P7H. Punch holes 1-6 in punched tape from AC positions 2, 5, 8,
11, 14, 17, with an added seventh hole-7000 (octal).
P6H. Same as previous, no seventh hole-GOOO (octal).
PNT. Print on typewriter one six-digit character from positions 2, 5,
8, 11, 14, 17---":4000 (octal).
RIC. Read one line of punched tape into AC positions, 0, 3, 6, 9, 12,
15-1000 (octal).
R3C. Read three characters into 2,5,8,11,14,17; 1,4,7,10,13,16;
and 0, 3, 6, 9, 12, 15 of AC-3000 (octal).
DIS. Intensify a point on oscilloscope output with one's complement
x coordinate given by AC digits 0-8 and one's complement y coordinate
given by AC digits 9-17-2000 (octal).
At pulse time 1.1:
PEN. Read light pen flip-flops (set by viewing the intensity of the
output oscilloscope at a point by a light pen including a phototransistor as
its penpoint) into AC o and AC 1-100 (octal).
TAC. Insert a one in each digital position of the AC wherever there is a
one in the corresponding position of the T AC (I8-toggle switch accumulator)-4 (octal).
A t pulse time 1.2:
COM. Complement every digit in AC-40 (octal).
AMB. Store contents of AC in MBR-1 (octal).
TBR. Store contents of TBR in MBR-3 (octal).
At pulse time 1.3:
MLR. Store the contents of MBR in LR-200 (octal).
LMB. Store the contents of the LR in MBR-2 (octal).
At pulse time 1.4:
PAD. Partial add AC to MBR, that is, for ACarter == {(ACberore ~
MBR)-20 (octal)}.

2-254

DIGITAL COMPUTER PROGRAMMING

SHR. Shift AC right one place (multiply by 2-1)-400 (octal).
CYR. Cycle AC right one position modulo 18 (AC n -7 AC n+l modulo 18)
-18 (ACn -7 ACn+l modulo 18)-600 (octal).
At pulse time 1.7:
CRY. Carry partial add (see above) the 18 digits of the AC to the
corresponding 18 digits of the carry (shifted left one place modulo 18,
with an end-around carry included as usual with the one's complement
addition)-10 (octal).
Macroinstructions from Microinstructions. Many macroinstructions can be constructed from properly sequenced microinstructions. For
example, an instruction CYL (cycle left) can be represented as
CYL

== opr 31

since opr 31 combines
AMB (1.2), PAD (1.4), and CRY (1.7)
in that order. Cycle left will perform a sequence analogous to CYR listed
above. The address 31 (octal) is obtained by the logical disjunction of the
bits in the three octal addresses 1, 20, and 10.
Among the list of combinations which were found to be useful in forming
macrooperations were many useful ones available on more standard
computers plus others that ordinarily would not have been in the hardware.
A translation program was written to translate these operations, considered
as ordinary instructions, into sequences of operate instructions intermixed
with the three standard instructions. Among the list of instructions found
to be useful, which continued to grow with the u~e of the computer, were
the following:
0.8
0.8
CLL + CLR = apr 140,000 = Clear the AC (CLA).
1.2
1.4
1.7
AMB + PAD + CRY = apr 31 = Cycle the AC left one digital position (CYL).
0.8
0.8
1.2
CLL + CLR + COM = apr 140,040 = Clear and complement AC (CLC).
0.8
0.8
lOS + DIS = apr 22,000 = Display (this combination was included as a
reminder that with every in-out command the lOS must be
included) (DIS).
0.8
0.8
0.8
lOS + CLL + CLR = apr 160,000 = In out stop with AC cleared.
0.8
0.8
1.4
lOS + P7H + CYR = apr 27,600 = Punch 7 holes and cycle AC right.
0.8
0.8
1.4
lOS + P6H + CYR = apr 26,600 = Punch 6 holes and cycle AC right.

PROGRAMMING AND CODING
0.8
lOS

0.8

0.8

2-255

0.8

+ CLL + CLR + P6H = apr 166,000 = Clear the AC and punch a blank

space on tape.
0.8
0.8
+ PNT + CYR = apr 24,600 = Print and cycle AC right.
0.8
1.2
104
+ P7H + AMB + PAD = apr 27,021 = Punch 7 holes and leave AC
cleared.
0.8
0.8
1.2
104
lOS + P6H + AMB + PAD = apr 26,021 = Punch 6 holes and leave AC
cleared.
0.8
0.8
1.2
104
lOS + PNT + AMB + PAD = apr 24,021 = Print and leave AC cleared.
0.8
0.8
0.8
CLL + CLR + RIC = apr 141,000 = Clear AC and start photoelectric tape
reader running (notice no lOS, which means computer
has not. stopped to wait for information).
0.8
1.2
104
1.7
RIC + AMB + PAD + CRY = apr 1,031 = Start petr running and cycle AC
left.
0.8
004
RIC + CYR = apr 1600 = Start petr running and cycle right.
0.8
0.8
0.8
0.8
CLL + CLR + lOS + R3C = apr 163,000 = Clear AC, read 3 lines of tape.
0.8
0.8
0.8
0.8
CLL + CLR + lOS + RIC = apr 161,000 = Clear AC and read one line of
tape.
0.8
0.8
0.8
0.8
104
1.7
CLR + CLR + lOS + RIC + PAD + CRY = apr 161,031 = Read 1 line of
tape and cycle AC left.
0.8
0.8
0.8
0.8
104
CLL + CLR + lOS + RIC + CYR = apr 161,600 = Read one line of tape and
cycle right.
0.8
0.8
1.1
CLL + CLR + TAC = apr 140,004 = Put contents of TAC in AC.
104
1.7
PAD + CRY = apr 30 = Full-add the MBR and AC and leave sum in AC.
1.3
104
0.8
0.8
CLL + CLR + LMB + PAD = apr 140,022 = Clear the AC, store LR contents in memory buffer register, add memory
buffer to AC, i.e., store live register contents
in AC (LAC).
1.2
1.3
AMB + MLR = apr 2.01 = Store contents of AC in MBR, store contents of
MBR in LR, i.e., store contents of AC in LR (ALR).
1.3
104
LMB + PAD = apr 22 = Store contents of LR in MBR, partial add AC and
MBR, i.e., partial add LR to AC (LPD).

0.8
lOS
0.8
lOS

2-256
1.3
MLR

DIGITAL COMPUTER PROGRAMMING
=

apr 200 = Since MLR alone will have a clear MBR, this is really clear
LR (LRO).

1.3
1.4
1.7
LMB + PAD + CRY = apr 32 = Full-add the LR to the AC (LAD).
0.8
0.8
1.3
1.4
CLL + CLR + TBR + PAD = apr 140,023 = Store contents of TBR in AC.

An Exalllple of a Progralll. As an example of a program (coded with
octal addresses) and using the microprogramming technique, an input
program that reads in a following program in standard binary form, three
6-bit paper tape characters, making up an 18-bit word, is shown in Table 40.
This routine is automatically punched out by the translation program at
the head of the binary output tape.
The basic read in mode of the TX-O computer allows read in of this
standard input routine by merely pushing the machine's Read In button,
which automatically reads the input routine in and automatically transfers
control to octal location 177744. Words of the succeeding binary program
are punched on the tape in a block whose first word is a store instruction
(stoW 1) which contains the address WI into which the block is to be stored.
The second word is the complement of a store instruction (stoWn ), where
W n is the address of the nth (last) word in the block. Following this comes
a sequence of binary words (the progra:in), terminated by a word (sum
check) containing the complement of the sum of all the preceding words in
the block including the first two control words.
The starting instruction for this block is given in the address of an
instruction following the last block of words in a program to be input.
If that instruction is add Z (Z the starting address), the computer stops
before transferring control. If the instruction is trn Z then the transfer of
control is immediate.
The three microprogrammed instructions used in the input routine are:
Opr 160,000 - CLL + CLR + lOS + R3C. Clear AC and read three
lines on the paper tape, cycling each time so that they are assembled as an
18-bit word in AC.
Opr 140,000 - CLL + CLR (CLA). Clear both halves of the accumulator.
Opr 30,00o-Halt.

.T ABLE 40.

INPUT ROUTINE FOR THIJ

TX-O

C01\lPUTER

Partial, sum of block
177741 Temporary storage
If the preceding block's sum is
;>177742 add'177773'
177743 trn 177772 - - - - - - , correct, go on to next block O!'
transfer control word. If not,
go to 177772 and stop computer.
[
Read in the first word of n. block
Enter >177'744 opr 163,000 (R3C)
or the transfer control word
177745 sto 177756 ------,
(add Z or trn Z) ,and store it in
register 177756.
Is it st vV 1, add Z, or trn Z? If
177746 trn 177756
trn Z go directly to register
177756.
I t is either, st vV 1 or add Z; ad'd
177747 add 177774
177750 trn 177775 _ _- I
200,000 to the AC. If it was
add Z, the AC is now neg.
(= trn Z), so go to 177775.
Read in the complement of the
177751 opr 163,000 (R3C)
address of the last word in the
177752 sto 177777
block and store it in the register
177777.
Add the first two control words
177753 add 177756
of the block together and store
177754 sto 177741
in 177741 to initiate the partial
sum.
177755 opr 163,000 (R3C)
Read in the ith word and store
177756 (sto vVi)
it in its assigned memory loca(add Z) (Not used)
tion.
'
(trn Z) < E ( ' - - - - - - - i
Add the ith word to the partial
177757 add 177741
sum of the block.
'177760 sto 177741
Index the address section of the
177761 opr 140,000 (CLA)
register 177756 by one.
177762 add 177756
177763 add 177773
177764 sto 177756
Has the nth word been tramJ177765 add 177777
ferred to storage? If AC is
177766 trn 177755")
negative-no, return to 177755.
Read in the sum of the block.
177767 opr ,163,000 (R3C)
Is it the same as the sum in
177770 add 177741
register 41?, If it is, AC =
177771 trn 177742")
minus zero, go to 177742. If it
177772 opr 30,000 (HLT)...i::-E- is positive ... stop the computer. The sum checkis wton~.
Constants
177773
1
177774 200,000
177775 sto 177777 ~"'------' ,The last block has been stored
and the transfer control word
17777f} opr 30,000 (HLT)
was add Z. Put trn Z in'register 177777 and stop the computer.
'
Upon restarting, transfer con177777 trn Z (or the completrol to register Z.
ment of the address of
the last, word in a
block).

2-258

DIGITAL COMPUTER PROGRAMMING

18. PROGRAMS FOR MAINTENANCE OF EQUIPMENT
A very useful type of programming is used to test a computer, either
in the construction and design stages or later during operation. This type
of program has been discussed by Graney (Ref. 44) and Brock and Rock
(Ref. 16).
Such maintenance programs must be used periodically with or without
marginal testing (see Chap. 13). Acceptance tests are those evolved for
testing a computer in its earliest stages, before it has ever been used in
productive operation.
Among the criteria that have been stressed for programs to do these
two jobs are the following.
1. Severe operating conditions for the computer must be produced.
2. A sufficiently large set of random (actually pseudo random) numbers must be operated on and the results verified, so that a satisfactory
sampling of machine conditions will have been tested; or, alternatively,
3. Elements of the computer must assume all possible states and be
checked for correctness.
Regular maintenance programs are usually bootstrap programs stored
originally in a small, pretested area of storage (for example, on 'Vhirlwind I, in a given bank of hand switches for storage) that call in the next
portion of the program which tests a wider area of machine structure
before proceeding. Usually the simplest arithmetic, control, and storage
operations will be first verified. After this a storage summing operation
will be used to check a larger portion of storage. Automatic procedures
are usually available that will print out a notation of a failing storage
position or a failing machine operation.
After the main storage unit has been satisfactorily checked, then the
more elaborate instructions may be verified, including secondary storage
(drums and magnetic tapes):
Input-output equipment using punched paper tape or punched cards
cannot be verified automatically, and with its mechanical components is
a major source of failures. Generally, information is printed out and
then read back in after having been physically handled by human beings.
The presence of automatic checking devices such as parity checks, forbidden character checks, and duplicate arithmetic checks, and casting out
nines (see Chap. 13), built into the machine, can be useful, but they also
cause delays in the automatic performance of such checking, since upon
finding its own errors the computer usually stops. This requires human
intervention and the difficult task of finding the actual error. Automatic
recovery, by which upon discovering an error, a computer notes it, corrects it, and then proceeds, has been used mainly on magnetic tape han-

PROGRAMMING AN.D CODING

2-259

dling equipment. While maintenance testing programs built to use such
features are more difficult to program, they improve efficiency of the
equipment.
Random numbers for such programs may be generated by the techniques discussed by Moshman (Ref. 74) for decimal number systems.
19. PROGRAMMING WITH NATURAL LANGUAGE
Language Commands. The possibility of programming digital computers to respond to simple English commands has already been realized
on a low level by a group working under Hopper (Ref. 98) which produced the Flow-matic compiler for the Univac I and II. Important
advances in this field have come from linguistic studies, either in the field
of mechanical translat.ion (see Ref. 120 and Chap. 11), or in linguistic
structure of natural languages. The results quite surprisingly correspond
to the analyses described for the Fortran and IT compilers (Ref. 144).
The most thorough such analysis has been described in a series of papers
by Chomsky (Refs. 26-28). Chomsky follows the pattern first laid out
by Post (Ref. 84) and described in Rosenbloom (Ref. 88).
Language Decomposition. Appendix II of Ref. 26 lists a set of eleven
basic phrase structure rules for a set of productions for decomposing
English sentences into constituent parts. These must in certain cases be
preceded in a certain order by a set of fifteen more transformations,
involving such relationships as the passive voice, interrogat.ive mood,
conjunctions, gerunds, and participles. To these morphemic rules would
be adjoined a set of phonomorphemic rules relating to the changes in word
structure caused by phonetic rules of performance of English-speaking
persons.
A sentence decomposition in the earliest stages of this analysis structure
is similar to the tree structure developed for the simpler algebraicprogramming languages already described (see Sect. 12). For example,
the sentence "The man hit the ball," when decomposed into constituents
such as noun phrase (NP), verb phrase (VP), noun (N), verb (V), and
article (T), decomposes into the tree of Fig. 41.
Storage Requirements. This is not much more involved than the
standard parsing of high school grammar. However, the overall set of
rules developed by Chomsky allows complete explanation and decomposition of such ambiguous sentences as "I found the boy studying in the
library," and such phrases as "the shooting of the hunters." Based on
Chomsky's analysis, or one carried even further, a complete program can
be written to give complete structural decomposition of the English language upon entry into a computer. The semantic or meaning portion of
the machine language problem is dependent on further theoretical investi-

2·260

DIGITAL COMPUTER PROGRAMMING
Sentence

/~

NP

/

T

I

The

"I

/

N

V

I

man

hit

VP

"'"

NP

/

1 ""-I
the

FIG. 41.

ball

Tree structure resulting from decomposition of the sentence, "The man hit
the ball."

gations as well as further experiments with large-scale storage devices
such as the RAMAC (see Ref. 118) and Tapefile (Ref. 119). The problem
of pattern recognition to recognize structures such as that of Fig. 41 has
been studied for simpler proble~s by Dineen (Ref. 116), and Minsky
(Ref. 117). The construction of automatic dictionaries has already been
begun with such algebraic languages as Fortran, Unicode, and GP at one
end, and with the language translation experiments at the other. By the
time successful translation of scientific documents will have been accomplished, a programmed knowledge of the structure of English and other
natural languages will have had to be acquired. The pattern recognition
procedures and compiling will fill the gap between such decomposition
and actual machine instructions which are to correspond to the original
English input.
The use of any large magnetic tape storage should be sufficient for
large portions of a natural language (for example, scientific vocabularies
combined with a basic vocabulary). The need for speed, however, determines the requirement for the more rapid large-scale storage devices noted
above.
LITERATURE, ACKNOWLEDGMENTS, AND REFERENCES
LITERATURE

Books. For the elementary approach to programming, the texts by
McCracken (Ref. 68) and Gottlieb and Hume (Ref. 113) may be consulted. For a detailed discussion of programming for a specific machine,
described in detail, Wilkes, Wheeler, and Gill (Refs. 108 and 109) is' a
thorough documentation of the work on EDSAC. A compilation of a
series of articles in Control Engineering (Ref. 99) provides many practical -examples not found elsewhere. In the area of mechanical translation
the book edited by Locke and Booth (Ref. 120) gives an account pertinent to many programming problems. The University of Michigan
Summer Session Notes edited by Carr and Scott (Refs. 24, 25) contain

PROGRAMMING AN.D CODING

2-261

practical accounts of recent procedures. Books on the general structure
of digital computers, such as those by Bowden (Ref. 15), Booth and
Booth (Ref. 121), Richards (Ref. 122), 'Vilkes (Ref. 124), Eckert and
J ones (Ref. 111), the ERA Staff (Ref. 125), Stibitz and Larrivee (Ref.
96), and Berkeley and vVainwright (Ref. 126) usually include one or
more chapters on elementary programming.
From the point of view of business problems, such books as Kozmetsky
and Kircher (Ref. 127) , Canning (Ref. 128), Chapin (Ref. 129), Berkeley
(Ref. 130), and a small pamphlet by Gorn and Manheimer (Ref. 131)
give simplified accounts tailored to the nontechnical reader. Practical
examples in this are'a are available in publications of the Joint Computer
Conferences of the American Institute of Electrical Engineers, Institute
of Radio Engineers, and Association for Computing Machinery (Ref.
136), and those of the American Management Association (Ref. 132),
and the Office lVlanagement Association of Great Britain (Ref. 134).
Perhaps the most thorough account of digitai' computer programming,
containing detailed examples and analyses of both hand processes and
automatic programming, is in the Russian language book by Kitov
(Ref. 61). Portions of this have been translated into English and may
become available through the Association for Computing Machinery. In
the area of automatic programming the Proceedings of Office of Naval
Research Symposia (Ref. 98) are important. The only book available
in the area of artificial intelligence as it might be applied to general purpose computer programming is that of Shannon and McCarthy (Ref. 94).
In addition to the b~'oks, numerous publications are available from the
manufacturers. They range from simple descriptions of particular computers to automatic programming schemes for a particular computer.
A particularly thorough bibliography is that of Remington Rand Univac
(Ref. 137), which includes listings from outside that organization as
well as inside.
Journals. These might be catalogued as follows:
1. Theory of programming and examples of general programming techniques:

Journal of the Association for Computing Machinery, published by the Associa·
tion, 2 East 63 Street, New York 23, New York.
Communications of the Association for Computing Machinery, published by the
Association, 2 East 63 Street, New York 23, New York.
Journal of Research and Development of the International Business Machines
Corporation, published by International Business Machines Corporation, 590 Madison
Avenue, New York.
Transactions of the Professional Group on Electronic Computers (LR.E.) ,published by the PGEC of LR.E., 1 East 79 Street, New York 21, New York.
Systems (Remington Rand Univac), published by Remington Rand Univac, Philadelphia, Pennsylvania.
'

2-262

DIGITAL COMPUTER PROGRAMMING

Journal of the Franklin Institute, published by the Franklin Institute, Philadelphia, Pennsylvania.
The Computer Journal, published by the British Computer Society, London,
England.
2. Examples of problem formulation and programming in the areas of scientific
computation:
Journal of the Society for Industrial and Applied Mathematics, published by the
Society, Box 7541, Philadelphia, Pennsylvania.
Journal of the Association for Computing Machinery, published by the Association, 2 East 63 Street, New York 23, New York.
Control Engineering, published by McGraw-Hill, 330 West 42nd Street, New
York 36, New York.
Mathematical Tables and Other Aids to Computation, published by the National
Academy of Sciences, National Research Council, Washington 25, D. C.
Computing News, published by Jackson Granholm, 12805 Sixty-fourth Avenue,
South, Seattle 88, Washington.
The Computer Journal, published by the British Computer Society, London,
England.
3. Examples of problem formulation in the areas of business and industrial
applications:
Journal of the Operations Research Society of America, published by the Operations Research Society of America at Mount Royal and Guilford Avenues, Baltimore 2, Maryland.
4. Applications to business problems:
Data Processing Digest, published by Canning, Sisson, and Associates, 914 South
Robertson Boulevard, Los Angeles 35, California.
5. Popular discussions of programming· and applications:
Computers and Automation, published monthly by Berkeley Enterprises, Inc.,
815 Washington Street, Newtonville 60, Massachusetts ..
6. Foreign journals:
Zeitschrift fur angewandte Mathematik und Physik
Doklady, Akad. Nauk S.S.S.R. (Proceedings of the Academy of Sciences of the
U.S.s.R.)
N umerisches Mathematik
7. General reference and current reviews:
Mathematical Reviews, published by the American Mathematical Society, Providence, Rhode Island.
Matematicheski Refneraty, published by the Academy of Sciences of the U.S.S.R.

ACKNOWLEDGMENTS

The cooperation of the following organizations is gratefully acknowledged in granting permission to reproduce material in this chapter.
General
University of Michigan. Material from courses and summer sessions.
Section 3
University of Michigan. Number conversion tables from summer
session notes.

PROGRAMMING AND CODING

2-263

International Business Machines. Number conversion tables from
IBM 704 manual.
Section 6
International Business Machines. Instruction codes from the IBM 704
and IBM 650 manuals.
Remington Rand Univac. Instruction codes from the Univac II and
Univac Scientific 1l03A manuals.
Electrodata, a division of the Burroughs Corporation. Instruction
codes from the manual for the Datatron 205.
University of Michigan. Instruction codes from manuals for the
MIDAC computer and the Easiac interpretive system.
Librascope Corporation. Instruction codes from manuals for the
Royal-McBee LGP-30 computer.
Section 8
International Business Machines. Symbolic optimum assembly programming (SOAP), from IBM 650 programming bulletins.
University of Michigan. The MAGIC system used for the MIDAC
computer.
Section 9
General Motors Corporation. Description of the SHARE assembly
program.
International Business Machines. SHARE assembly programs from
IBM 704 bulletins.
Section 10
The Ramo-Wooldridge Corporation. Subroutines from the Subroutine
Library for the Univac Scientific 1103A.
Section 12
Bendix Computer Division. The Intercom 101 system for the Bendix
G-15 computer.
Carnegie Institute of Technology. The IT system for the IBM 650
computer, from a manual by A. J. Perlis, J. W. Smith, and Harold Van
Zoeren.
Section 17
Massachusetts Institute of Technology, Lincoln Laboratory. Instruction codes for the TX-O computer from reports.

REFERENCES
1. C. W. Adams, and J. H. Laning, Jr., The M.I.T. systems of automatic coding:
Comprehensive, summer session, and algebraic, Symposium on Automatic Programming Jor Digital Computers, Office of Naval Research, Washington, D. C., May 1954.

2-264

DIGITAL COMPUTER PROGRAMMING

2. R. Ash, E'. Broadwin, V. Della Valle, M. Greene, A. Genny, C. Katz, and L. Yu,
Preliminary Manual for M ath-M atic and Arith-M atic Systems for Algebraic Translation and Compilation for Univac I and II, Automatic Programming Development,
Remington-Rand Univac, Philadelphia, Pa., April 1957.
3. Automatic Coding for the Univac Scientific System (A Progress Report),
Remington-Rand Univac, Philadelphia, Pa., 1955.
4. Automatic programming the A-2 compiler system, Pts. 1 and 2, Computers and
Automation, 4, 25-31, Sept. 1955, 15-23, Oct. 1955.
5. J. W. Backus, The IBM speed coding system, J. Assoc. Compo Mach., 1, 4-6
(1954).
6. C. L. Baker, The PACT I coding system for the IBM Type 701, J. Assoc.
Compo Mach., 3, 272-278 (1956).
7. Iu. Ia. Basilwskii, The universal electronic digital machine (URAL) for engineering research, J. Assoc. Compo Mach., 4, 511-519 (1957).
8. W. F. Bauer, An integrated computation system on the ERA-1103, J. Assoc.
Compo Mach., 3, 181-185 (1956).
9. 1. K. Belksaja, Machine translation of languages, Research, 10, 383-389 (1957)
(in Russian).
'
10. R. W. Berner, What the engineer should know about programming, Automatic
Control, 6, 66-69, March 1957.
11. R. W. Berner, E. Krasnow, G. Jira, A. Hoggatt, and R. Levitan, IBM 705
Print I Manual, Programming Research Dept., International Business Machines
Corporation, N ew York.
12. Bendix G15 Preliminary Operations Manual, Bendix Computer Division, Los
Angeles, Calif.
13. E. K. Blum, Automatic Digital Encoding System II (ADES II), Navord
Report 4209, U. S. Naval Ordnance Laboratory, White Oak, Md., Feb. 8, 1956.
14. Bendix Intercom !Ol-G15 Interpretive Routines, Bendix Computer Division,
Los Angeles, Calif., July 1956.
15. B. V. Bowden, Editor, Faster than Thought, Pitman, London, 1953.
16. P. Brock, and S. Rock, Problems in acceptance tests of digital computers,
J. Assoc. Compo Mach., 1, 92-87 (1954).
17. J. H. Brown, and J. W. Carr III, Automatic programming and its development
on the MIDAC, Symposium on Automatic Programming for Digital Computers,
Office of Naval Research, Washington, D. C., May 1954.
18. J. H. Brown, J. W. Carr III, B. Larrowe, and J. R. McReynolds, Prevention
of propagation of machine errors in long problems, J. Assoc. Compo Mach., 3, 309313 (1956).
19. A. Burks, H. H. Goldstine, and J. von Neumann, Preliminary Discussion of
the Logical Design of an Electronic Computing Instrument, Institute for Advanced
Study, Princeton University, Princeton, N. J., 1946 (published under contract
W360340RD7481, can be obtained from Ballistics Research Laboratory, Aberdeen
Proving Grounds, Md.).
20. J. W. Carr III, Solving scientific problems, Control Eng., 3, 63-70, January
1956.
21. J. W. Carr III, Towards an automatic programming procedure, Proc. Assoc.
Compuiing ]vI achinery, Meetings, May 1952, .Pittsburgh, Pa.
22. J. W. Carr III, and A. J. Perlis, A comparison of large scale calculators,
Control Eng., 3, 83-92/ Feb. 1956.

PROGRAMMING AND CODING

2-265

23. J. W. Carr III, and A. J. Perlis, Small scale computers as scientific calculators,
Control Eng., 3, 99-104, March 1956.
24. J. W. Carr III, and N. R. Scott, Editors, Notes on the Special- Summer Conference on Digital Computers, Special Summer Conferences on Digital Computers,
University of Michigan, Ann Arbor, Mich., 1955.
25. J. W. Carr III, and N. R. Scott, Editors, Notes on Digital Computers and
Data Processors, Special Summer Conferences on Digital Computers, University of
Michigan, Ann Arbor, Mich., 1956.
26. N. Chomsky, Syntactic Structures, Mouton, 's-Gravenhage, 1957.
27. N. Chomsky, Three models for the description of language, I.R.E. Trans. on
Informat£on Theory, IT-2, Proc. Symposium on Information Theory, 113-124,
Sept. 1956.
.
28. N. Chomsky, Transformational Analysis, Ph.D. Dissertation, University of
Pennsylvania, 1955.
29. W. A. Clark, The Lincoln TX-2 computer development, Proc. TV estern Jt.
Compo Conf., 143-145, Feb. 1957.
30. H. B. Curry, On the composition of programs for automatic computing,
Naval Ordnance Laboratory Memorandum 9805, Naval Ordnance Laboratory,
White Oak, Silver Springs 19, Md.
31. J. L Derr, and R. C. Luke, Semi-automatic allocation of data storage for
PACT I, J. Assoc. Compo Mach., 3, 299-308 (1956).
32. Datatron Programming and Coding Manual, Electro Data Corporation, Pasadena, Calif.
33. C. Elgot, On single vs. triple address and computing machines, J. Assoc. Compo
Mach., I, 118-123 (1954).
34. Features of the new Univac II data automation system, Manual U23, Remington-Rand Univac Division orthe Sperry Rand Corporation, Philadelphia, Pa., 1957.
35. Fortran Automatic Coding System for the IBM 704 EDPM, Applied Science
Division and Programming Research Dept., International Business Machines Corporation, New York.
36. J. M. Frankovich and H. P. Peterson, A functional description of the Lincoln
TX-2 computer, Proc. TV estern Jt. Compo Con1., 146-155, Feb. 1957.
37. General Motors Research Staff, 704 Operations Manual-Share Assembler,
Detroit.
38. J. T. Gilmore, Jr., TX-O direct input utility system, Memorandum 6M-5097,
Lincoln Laboratories, M.LT., Cambridge, Mass., Apr. 10, 1957.
,
39. J. T. Gilmore, Jr., and H. P. Peterson, A functional description ,of the Tx-d
computer, Memorandum 6M-4789, Lincoln Laboratories, M.LT., Cambridge, Mass.,
Nov. 20, 1956.
40. H. T. Glantz, A note on microprogramming, J. Assoc. Compo Mach., 3, 77-84
(April 1956).
41. B. Gordon, An optimizing program for the IBM-650, J. Assoc. Compo Mach.,
3, 3-5 (1956).
42. S. Gorn, An experiment in universal coding, BRL Rept. No. 953, Ballistics
Research Laboratories, Aberdeen Proving Grounds, Md., Aug . .1955.
43. S. Gorn, Standardized programming methods and universal coding, J. Assoc.
Compo Mach., 4, 254-273 (1957).
44. E. P. Graney, Maintenance and acceptance tests used on the MIDAC, J. Assoc.
Compo Mach., 2, 95-98 (1955).

2-266

DIGITAL COMPUTER PROGRAMMING

45. M. Grems, and R. E. Porter, A Digest of the Boeing Airplane Co. Algebraic
Interpretive Coding System, Physical Research Staff, Boeing Airplane Co., Seattle,
Wash., July 1955.
46. 1. D. Greenwald and H. G. Martin, Conclusions after using the PACT I
advanced coding technique, J. Assoc. Compo Mach., 3, 309-313 (1956).
47. G. Hempstead and J. Schwartz, PACT loop expansion, J. Assoc. Compo Mach.,
3, 292-298 (1956).
48. G. M. Hopper, Report to the Association for Computing Machinery-First
Glossary of Programming Terminology, Association for Computing Machinery,
New York, 1954.
49. G. M. Hopper, The education of a computer, Proc. Assoc. Compo Mach., Meetings, May 1952, Pittsburgh, Pa.
50. J. H. Hughes, Tape file maintenance, Programmer, Sperry-Rand Corporation,
July 1957.
51. Yu. 1. Ianov, On matrix schemes, Doklady Akad. Nauk S.s.S.R., 113, 283286 (1957) (in Russian; translation available).
52. Yu. I. Ianov, On the equivalence and transformation of program schemes,
Doklady Akad. Nauk S.S.8.R., 113, 39-42 (1957) (in Russian; translation
available) .
53. The Fortran Automatic Coding System for the IBM 704 EDP}'! (Programmer's Reference Manual), Applied Science Division and Programming Research
Department, International Business Machines Corporation, N ew York, Oct. 15,
1956.
54. IBM 704 Electronic Data Processing, Form 24-6661-2, International Business
Machines Corporation, New York.
55. IBM 705-III Data Processing System, Form 22-6730-0, International Business
Machines Corporation, N ew York.
56. Illiac Programming Manual, University of Illinois, Urbana, Ill.
57. D. R. Israel, Introduction to coding, Engineering Note E-2000-1, Servomechanism Laboratory (later Project Whirlwind), M.LT., Cambridge, Mass., Sept. 26,
1950.
58. D. R. Israel, The Application of a High-Speed Digital Computer to the
Present-Day Air Traffic Control System. Master's Thesis EE, M.LT., Cambridge,
Mass., 1949.
59. J. L. Jones, A Survey of Automatic Coding Techniques for Digital Computers,
Master's Thesis, M.LT., Cambridge, Mass., May 1954.
60. L. V. Kantorovich, On a mathematical symbolism convenient for performing
machine cal~ulations, Doklady Akad. Nauk S.s.S.R., 113, 738-741 (1957) (in Russian; translation available).
61. A. 1. Kitov, Elektronnie Tsifrovie Mashiny (Electronic Digital Machines);
Izdatelstvo "Sovetskoe Radio," Moscow, 1956 (partial translation available).
62. S. C. Kleene, Introduction to Metamathematics, Van Nostrand, Princeton,
N. J., 1952.
63. L.N. Korolev, Coding and code compression, Doklady Akad. Nauk S.s.8.R.,
113, 746-747 (1957) (in Russian; translation available).
64. J. H. Laning and N. Zierler, A program for translation of mathematical equations for Whirlwind I, Engineering Memorandum E-364, M.LT. Instrumentation
Laboratory, Cambridge, Mass., January 1954.
65. S. A. Lebedev, The high-speed calculating machine of the Academy of Sciences
of the USSR, J. Assoc. Compo Mach., 3, 129-133 (1956).

PROGRAMMING AND CODING

2-267

66. Librascope, Inc., Librascope LGP-30, Manual, Librascope Inc., 80 Western
Ave., Glendale, Calif.
67. A. A. Markov, The theory of algorithms, ]'l'udy V.A. Steklov Math. 11Ist.,
42, 3-374 (1954) (partial translation available).
68. D. D. McCracken, Digital Computer Programming, Wiley, New York, 1957.
69. W. S. Melahn, A description of a cooperative venture in the production of an
automatic coding system, J. Assoc. Compo Mach., 3, 266-271 (1956).
70. R. J. Mercer, Micro-programming, J. Assoc. Compo Mach., 4, 157-171 (1957).
71. R. C. Miller, Jr., and B. Oldfield, Producing computer instructions for the
PACT I compiler, J. Assoc. Compo Mach., 3, 288-291 (1956).
72. O. Mock, Logical organization of the PACT I compiler, J. Assoc. Compo
Mach., 3, 279-287 (1956).
73. E. F. Moore, A simplified universal Turing machine, Proc. Assoc. Compo
Mach., Toronto, 1952.
74. J. Moshman, The generation of pseudo-random numbers on a decimal calculator, J. Assoc. Compo Mach., 1, 88-91 (1954).
75. F. J. Murray, Univac acceptance tests, Mathematical Tables and Aids to
Computation, 5, 176-177 (1951).
76. A. Newell, J. C. Shaw, and H. A. Simon, Empirical explorations of the logic
theory machine: A case study in heuristic, Proc. Western Jt. Compo Conf., 218-239,
Feb. 1957.
77. A. P. Newell, Notes for the Lectures on Heuristic Programs, delivered at the
University of Michigan Summer Session on Advanced Programming, August 1957.
78. A. Newell andH. A. Simon, The logic theory machine, I.R.E. Trans. on
Information Theory, IT-2, 61-79, Sept. 1956.
79. A. Oettinger, Simple learning by a. digital computer, Proc. Assoc. Compo Mach.,
Toronto, 1952.
80. R. Perkins, EASIAC, a pseudo-computer, J. Assoc. Compo Mach., 3, 65-72
(1956).
81. A. J. Perlis, J. W. Smith, and H. R. Van Zoeren, Internal Translator (11')-

A Compiler for the 650, Carnegie Institute of Technology, Computation Center,
Pittsburgh, Pa., 1956.
82. A. M. Pietrasanta, Debugging Programs on the IBM-650, New York Scientific Computation Center, International Business Machines Corporation, New
York.
83. S. Poley and G. Mitchell, Symbolic Optimum Assembly Programming (SOAP),
650 Programming Bulletin 1, Form 22-6285-1, International Business Machines
Corporation, New York.
84. E. L. Post, Formal reductions of the general combinatorial decision problem,
Am. J. Math., 65, 197-215 (1943).
85. Proposed Specifications for Fortran for the Type 704, Programming Research
Department, International Business Machines Corporation, N ew York.
86. F. Ragusa and S. Zucker, The NYU Omnifax compiler and library of subroutines, NYU-7692 Physics Rept., Institute of Mathematical Sciences, New York
University, New York, Oct. 15, 1956.
87. N. Rochester, Symbolic programming, Trans. I.R.E., EC-2, 10-15, 1953.
88. P. Rosenbloom, Elements of Mathematical Logic, Dover, New York, 1950.
89. H. Rutishauser, Automatische Rechenplanfertigung bei programmgesteuterten
Rechenmaschinen, Mitteilung aus dem Institut fur angewandte Mathematik, Basel,
1952, pp. 1-45.

2-268

DIGITAL COMPUTER PROGRAMMING

90. H. Rutishauser, Some programming techniques for the ERMETH, J. Assoc.
Compo Mach., 2,1-4 (1955).
91. H. Schecher, Programmierung fUr eine Maschine mit erweiterten Addressenrechenwerk; International Kolloqium in. Probl. d. Rechentechnik, Dresden, 1955,
pp. 69-81.
92. SEAC Operating and Programming Notes I-VIII, RP 1612, 1807, 1873, 1917,
1957, 2342, 2461, and 2918; Office of Scientific Publications, National Bureau of
Standards, Washington, D. C.
93. 70J,. Electronic Data Processing Machine, Manual of Operation (Form 246661-3), International Business Machines Corporation, New York, 1955.
94. C. Shannon and J. McCarthy, Editors, Automata Studies, Princeton University
Press, Princeton, N. J., 1956.
95. R. J. Solomonoff, An inductive inference machine, 1957 I.R.E. National Convention Record, Pt. 2 (Circuit Theory and Information Theory), pp. 56-62.
96. G .. Stibitz and J. Larrivee, Mathematics and Computers, McGraw-Hill,
New York, 1956.
97. C. J. Swift, Machine features for a more automatic monitoring system on
digital computers, J. Assoc. Compo Mach., 4, 172-173 (1957).
98. Symposium on Automatic Programming for Digital Computers, May' 13-14,
1954; Office of Naval Research, Department of the Navy, Washington, D. C.
99. The Uses of Digital Computers, a series of reprints by Grabbe, Carr, PerIis,
and others from Control Eng., 1955-1957, McGraw-Hill, New York, 1957.
100. The X-1 Assembly System, Remington-Rand Univac Division, Sperry Rand
Corporation, New York, 1956.
101. A. M. Turing, On computable numbers, with an application to the entscheidungs problem, Proc. London Math. Soc., ser. 2, 42 0936-37).
102. Type 650 Magnetic Drum Data-Processing Machine (Manual of Operations),
Form 22-60 60-1, International Business Machines Corporation, New York, 1955.
103. Univac Scientific Electronic Computing System Model 1103A, Form EL 338,
Remington-Rand Corporation, 1902 West Minnehaha Ave., St. Paul W4, Minn.
104. M. Weik, A Second Survey of Domestic Electronic Computing Machines,
BRL Rept. No. 1010, Aberdeen Proving Grounds, Md., 1957.
105. A. N. Whitehead and B. Russell, Principia Mathematica, Vol. I, 1st edition,
Cambridge, 1910, 2nd edition, 1925.
106. M. V. Wilkes, The use of a "floating address" system for orders in an automatic digital computer, Proc. Camb. Phil. Soc., 49, Pt. I, 84 (1953).
107. M. V. Wilkes and J. B. Stringer, Micro-programming and the design of the
control circuits in an electronic digital computer, Proc. Camb. Phil. Soc., April 1953.
108. M. V. Wilkes, D. J. Wheeler, and S. Gill, The Preparation of Programs for a
Digital Computer, Addison-Wesley, Cambridge, Mass., 1952.
109. M. V. Wilkes, D. J. Wheeler, and S. Gill, Programs for an Electronic Digital
Computer, 2nd edition, Addison-Wesley, Reading, 1957.
110. C. E. Shannon, The Mathematical Theory of Communication, University of
Illinois Press, Urbana, Ill., 1949.
111. W. J. E'ckert and R. Jones, Faster, Faster, McGraw-Hill, New York, 1952.
112. E. Herbst, N. Metropolis" and M. B. Wells, Analysis of problem codes on
the MANIAC, Mathematical Tables and Aids to Computation, 9, 14-20 (1955).
113. C. C. Gottlieb and J. N. P. Hume, High-Speed Data Processing, McGrawHill, New York, 1958.
114. J. Kister, P. Stein, S. Ulam, W. Walden, and M. Wells, Experiments in
chess, J. Assoc. Compo Mach., 4, 174-177 (1957).

PROGRAMMING AND CODING

2-269

115. 1. Copi, Symbolic Logic, Macmillan, N ew York, 1954.
116. G. P. Dineen, Programming pattern recognition, Proc. Western Jt. Compo
Conf., Los Angeles, Calif., 1955.
117. M. Minsky, Heuristic aspects of the artificial intelligence problem, Group

Rept. 34-55, Lincoln Laboratories, M.LT., Cambridge, Mass.
118. Manual of Operation, IBM 650 Data Processing System with 355 Random
Access Memory, Form 22-6270-1, International Business Machines Corporation,
New York.
119. Handbook, Model 560 DATAFILE, Multiple Bin Tape Unit, Bulletin 3026,
Electro-Data Corporation, Pasadena, Calif., 1956.
120. W. N. Locke and A. D. Booth, Machine Translation of Languages, The Technology Press, Boston, and Wiley, New York, 1956.
121. A. D. Booth and R. H. V. Booth, Automatic Digital Calculators, Butterworth,
London, 1953.
122. R. K. Richards, Arithmetic Operations in Digital Computers, Van Nostrand,
Princeton, N. J., 1955.
123. S. Langer, Introduction to Symbolic Logic, Dover, New York, 1955.
124. M. V. Wilkes, Automatic Digital Computers, Wiley, New York, 1956.
125. ERA Staff, High-Speed Computing Devices, McGraw-Hill, New York, 1952.
126. E. C. Berkeley and L. Wainwright, Computers, Their Operation and Applications, Reinhold, New York, 1956.
127. G. Kozmetsky and P. Kircher, Electronic Computers and Management
Control, McGraw-Hill, New York, 1956.
128. R. Canning, Electronic Data Processing for B'Llsiness and Industry, Wiley,
New York, 1956.
129. N. Chapin, An Introduction to Automatic Computers: A Systems Approach
for Business, The Technology Center, Chicago, Ill., 1955.
130. E. C. Berkeley, Giant Brains, Wiley, New York, 1951.
131. S. Gorn and W. Manheimer, The Electronic Brain and What It Can Do,
Science Research Associates, Inc., Chicago, Ill.
132. Pioneering in data processing, Special Rept. No.9, American Management
Association, New York.
133. Electronic Data Processing in Industry, American Management Association,
New York, Aug. 1955.
134. Scope for Electronic Computers in the· Office, A Symposium, Office Management Association, London, 1955.
135. Impact of Computers on Office Management, Office Management Series No.
136, American Management Association, New York, 1954 ..
136. Trends in computers: Automatic control and data processing, Proc. Western Jt.
Compo Conf., Am. lnst. Elec. Engrs., Feb. 11-12, 1954.
137. Large Scale Digital Computers-An Annotated Bibliography, EL 335, Remington-Rand Univac Division of the Sperry Rand Corporation.
138. G. M. Hopper, Chairman, First glossary of programming terminology, Committee on Nomenclature of the ACM, The Association for Computing Machinery,
New York, June 1954.
139. Unicode, Preliminary Reference Manual, Remington-Rand Univac Division
of the Sperry Rand Corporation, U 1451, New York.
140. H. Seward, Information Sorting in the Application of· Electronic Digital
Computers to Business Operations, M.S. Thesis, M.LT., Cambridge, Mass., 1954.
141. R. W. Bemer, The status of programming for scientific problems, Proc. 4th
Compo Appl. Symp., Armour Research Foundation, Chicago, Oct. 24-25, 1957.

2-270

DIGITAL COMPUTER PROGRAMMING

142. Introduction to Transac S-2000 Data Processing System, Philco Corporation,
Government and Industrial Division, Philadelphia, Pa., May 1957.
143. A. Newell, J. C. Shaw, and H. A. Simon, Empirical explorations of the logic
theory machine: A case study in heuristic, Proc. Western Jt. Compo Conf., Feb. 26-28,
1957, Los Angeles, Calif., pp. 218-230.
144. Automatic Coding, Proc. of the symposium held January 24-25, 1957, at the
Franklin Institute, Philadelphia, Monograph No.3, J. Franklin Institute, Philadelphia, Pa.
145. Univac II Programming Manual, Remington-Rand Univac, Philadelphia, Pa.
146. Principal Characteristics of Bendix G-15D General Purpose Digital Computers,
Bendix Computer Division, Los Angeles, Calif.
147. J. Jeenel, Programs as a tool for research in systems organizations, IBM J.
Research and Development, 2, 105-122 (1958).
148. IBM 650 Manual of Additional Features-Magnetic Tapes, High-Speed
Storage, Printer, Form 22-6265-1, International Business Machines Corporation,
New York.
149. Univac Generalized Programming, Management Services and Operations
Research Department, Remington-Rand Univac Division of Sperry Rand Corporation, 1957, New York.
150. H. Kahrimanian, Univac Programming Report, Sperry Rand Corporation,
Philadelphia, Pa.
151. S. N. Razumovskii, On the question of automatization of programming of
problems of translation from one language to another, Doklady Akad. Nauk S.8.8.R.,
113, 760-762 (1957).
152. A. D. de Groot, fiber das Denken des Schachspielers, Rev. Psicol., 50, 73-104
(1956).
153. J. Wegstein and J. Cooper, Corbie system for the 704, BSCRB, National
Bureau of Standards, Washington, D. C., 1957.
154. J. W. Carr III, Editor, Notes on applications of logic to automatic programming, Engineering Summer Conference, University of Michigan, Ann Arbor, Mich.,
1957.
155. R. M. Graham, Translation between algebraic coding languages, Paper 29,
Assoc. Compo Mach., 13th Nat!. Meeting, Urbana, Ill., June 11-13, 1958.
156. A. J. Perlis and J. W. Smith, A command language for handling strings of
symbols, Paper 30, Assoc. Compo Mach., 13th Natl. Meeting, Urbana, Ill., June 11-13,
1958.
157. R. W. Berner and D. A. Hemmes, Computer language compatibility through
multilevel processors, Paper 31, Assoc. Compo Mach., 13th Natl. Meeting, Urbana,
Ill., June 11-13, 1958.

THE USE OF DIGITAL COMPUTERS
AND DATA PROCESSORS

C.

THE USE OF DIGITAL COMPUTERS AND
DATA PROCESSORS

H. T. Larson and
R. B. Conn, Editors

3. Data Processing Operations, by M. J. Mendelson
4. Quantitative Characteristics of Data Processing Systems, by R. L. Sisson
and R. G. Canning
5. Equipment Description, by J. W. Busby and J. H. Yienger
6. Facility Requirements, by E. Tomash
7. Design of Business Systems, by H. S. Levin
8. Accounting Applications, by A. C. Vanselow
R. L. VanWinkle

L. L. van Oosten
E. D. Cowles
H. Tellier
9. Inventory and Scheduling Applications, by C. E. Ammann
C. W. Schmidt and R. Bosak
10. Scientific and Engineering Applications, by R. T. Koll
11. Handling of Non-Numerical Information, by M. E. Maron

c

THE USE OF DIGITAL COMPUTERS
Chapter

AND DATA PROCESSORS

3

Data Processing Operations
M. J. Mendelson

J. Introduction

2.
3.
4.
S.
6.
7.
8.

Data Collection
Data Conversion, Transcription, and Editing
Data Output
On-Line Versus Off-Line Processing
Scientific Data Manipulation
Business Data Manipulation
Checking

3-01
3-02
3-03
3-04
3-04
3-0S
3-06

3-13

I. INTRODUCTION
Data processing begins the instant any action takes place which will
generate information whose content will be a subject for subsequent
analysis, and terminates only when all such analyses have been completed, records up-dated, and reports generated. In some instances it
may never be completed since these outputs may themselves become new
sources of data or evoke new pieces of information for processing. In
any event, since data processing is a continuous and not a discrete
process, planning for an efficient data processing system must begin at
some point earlier than the generation of the first information and extend
through all subsequent operations. This chapter will delineate and define
the more important and basic operations which permeate all data
processing situations. These definitions will serve to clarify the content
of the succeeding chapters.
3-01

3-02

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

2. DATA COLLECTION

It is important for the efficiency of the data processing operation that
data be recorded in some form which admits of subsequent automatic
processing. Generally, it is equally desirable that this recording be
effected at the earliest possible point in the process since it is only at
this time that all the contributing factors are simultaneously present,
the adequacy and correctness of the record may be verified, and errors
of recording rectified. In addition, the earlier the recording, the more
the processing can be automated. Because of this desire, it is convenient
to break data collection situations into two categories: (1) Processor
controlled collection systems are those which are processor oriented.
(2) Collection controlled collection systems are those which are collection
oriented. This split is chosen since the subsequent processing may be
profoundly effected by the category to which its data collection system
belongs.
Language, Medium, and Structure. These are important aspects of
data collection systems. Language is the particular set of marks and
symbols which are used to represent data in any particular consistent
system. These may take such forms as printed characters, holes punched
in particular places on a document, or groups of magnetic markings on
a magnetizable surface. Medium is the physical unit on which the
information is recorded and retained. Typical examples are the card
which is punched, the paper which is printed, the magnetic tape which
is magnetized. Structure pertains to the organization of the data, with
respect to such factors as sequence, groupings, and special punctuations.
Processor Controlled Collection Systems. These are systems in
which the language, medium, and structure of the data collected are
made to conform with the requirements of the input system of the data
processor which will perform the subsequent analyses. Processor controlled collection systems represent the ideal situation from the viewpoint of data processing system efficiency, and should be achieved if the
operation and the data collection process permit. Achievement of this
goal eliminates time-consuming and possibly error-producing intermediate operations.
Manual Systems. Intermediate operations are most common when
data generation is manual and there is no alternative but for human
operators to transcribe the data to machine language by a subsequent
second manual operation of equipment vv'hich produces suitable media.
In this instance, since the second manual operation is required, the characteristics of the processor input system can in great part determine the

DATA PROCESSING OPERATIONS

3-03

nature of the transcription equipment and the structure of the transcription process.
Automatic SysteJr/'s. ,Vhen data collection is automatic, it may still
be possible to define the characteristics of the data collection system
on the basis of the processor input system and produce input data
suitable for processor assimilation. Two conditions must generally be
met before this can be true.
1. The collection process and instruments must be such that they
permit the collection of the data in a suitable form on a suitable media.
2. There exists no requirement that the primary data be available in
a form for direct and immediate human utilization.
Collection Controlled Collection Systems. Many data collection
situations are not readily adapted to the above conditions. vVhere any
combination of the process, the instrumentation, or human requirements
determine any particular combination of the media, or language, or structure of the data collected, the system is called collection controlled.
Data may also be forced into a particular structure by virtue of the
requirements of remote transmission equipment.
EXAMPLES. Scientific data collection is often analog in form and not
suitable for digital processor assimilation. Business data must often be
in a form suitable for human consumption and therefore they may not
be in proper language, or on a proper media, or in a proper structure
for direct processor use.

3. DATA CONVERSION. TRANSCRIPTION. AND EDITING
Where data collection is collection controlled, an intermediate step
consisting of a combination of conversion, transcription, and editing
processes is generally required.
Conversion is the process of changing data from one language form
to another. Analog data may be converted to digital data; binary data
may be converted to decimal data; data in one coded system may be
converted to data in a second coded system.
Transcription is the process of changing data from onc medium of
recording to a second. Written records may be transcribed to punched
cards; punched paper tape data may be transcribed to magnetic tape
recording.
Editing is the process of changing data from one structure to another.
This may consist of changing the sequence of the data on the storage
medium and of adding or deleting information. These functions are also
usually required at the output end of the system where data must be
transformed appropriate to its end use.

3-04

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

4. DATA OUTPUT

At the other end of the data processing stream lies the problem of
output data preparation. Here the end use of the data will determine
their language, medium, and structure. Data output preparation may be
conveniently categorized on the basis of this end use. In general, data
are prepared by the processing system for use by (a) humans, (b) for
later reuse by itself, or (c) for use by machines other than itself.
Output Data for Human Use. The most common form of output
use for human consumption is the printed document. This may take
several forms:
1. A printed report whose entire content is generated within the
processor, or a document generated from the insertion of information
ona partially preprinted form such as an invoice or a check.
2. A graph or pictorial representation of a set of information.
Output Data for Machine Reuse. The nature of data generated for
machine reuse is often dependent on whether the information is retained
internal to the machine's system or is to be transmitted outside the
machine's domain for subsequent return and reentry. Magnetic tape
files are an example of the former, punched card checks of the latter.
Output Data for Other Machine Use. Data may often be generated
by one machine for subsequent use by another. This may occur where
a piece of processing equipment also acts as a data collecting device for
later processing operations.
EXAMPLES. The point of sale type of data processor which prepares
punched tape for subsequent processing. Installations where remote
data transmission by teletype is a system requirement.
5. ON-LINE VERSUS OFF-LINE PROCESSING

Once the data have been organized in a suitable language, are on a
suitable input medium, and have a structure suitable for assimilation by
automatic processing equipment~ they may be subjected to a number of
data manipulative processes. Of fundamental importance for consideration at this point is the time position of the data processor in the data
processing sequence. A data processor is called off-line if data are
collected on a storage medium and brought to the processor for processing
at a later time. The data processor is called on-line if it participates
directly in the data processing operation, manipulating the data as they
In a second sense, if the output of the data processor is made available
at practically the same time as the input data which called for the
process, it is said to be an on-line processor, but if its output can satis-

DATA PROCESSING OPERATIONS

3-05

factorily be produced with a significant time delay, it is said to be an
off-line processor.
EXAMPLES.
A department store in which the daily sales activity is
collected from a set of point of sale recorders and daily analyses compiled at the end of the day would be using the point of sale recorders
in an on-line fashion and the data processor in an off-line fashion.
An automatic airline reservation system in which' space availability,
sales of seats, and reservation cancellations are automatically processed
as they occur is an example of a system operating in an on-line fashion.
Where the processor is in an on-line status and is required to keep
pace with some physical phenomena, it is often referred to as a real-time
processor. Example. A digital autopilot and control system which must
accept current status signals from an aircraft's sensing system, process
them, and provide proper control signals would be an example of a realtime processor.
The determination of which status is required of a processor in a given
data processing situation will have a profound effect on the entire data
processing system to be employed.
6. SCIENTIFIC DATA MANIPULATION

Scientific data manipulation functions can be characterized only in a
broad sense. Most scientific problem solutions consist of a central
processing scheme peculiar to the problem being solved working in conjunction with a set of standardized suboperations.
Central Processing Methods. The central processing methods tend
to be so highly individualistic as to defy classification. The alternative
seems to be, therefore, to define classes of problems rather than classes
of operations. See Chap. 10 for a detailed description of these classes
of problems.
Suboperations. Although the central process in a scientific calculation is unique, the suboperations it employs are generally drawn from a
"library" of such operations which are common to many processing
situations. The suboperations of such a library are of three maj or types:
1. Function Generation. Function generation, as its name implies,
consists of the evaluation of a function for a given value of a variable.
Obtaining the sine of a given angle or the square root of a given
number is a typical suboperation of the function generation class.
2. Computing Sequences. Operations such as the integration step in
the solution of a set of differential equations or the multiplication of
two matrices in a coordinate transformation operation are common to
many different scientific data processes.

3-06

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

3. Modification Operations. These are suboperations which are de'signed to have the effect of modifying the machine program to one more
suitable to a given application. Typical routines of this class provide
for such facilities as floating point arithmetic operations or complex
number manipulation.
7. BUSINESS DATA MANIPULATION
Since the initial applications of data processors in the business field
have been largely of a record keeping and statistic reporting nature, it
becomes quite possible to characterize business data manipulation on an
operation basis. That is, rather than each application being unique unto
itself as in the scientific field, business data problems tend to show a
strong similarity of structure and generally can be shown to consist of
combinations and sequences of some fundamental operations.
As the modern data processors are applied to the business field, more
and more of the data analysis will be turned over to the processor and,
therefore, an increasing proportion of the business applications will
tend to match their scientific brothers in individuality.
Units of Information. The description of business data processing
operations which follow will be greatly simplified by a definition of a
few fundamental terms describing the basic units of information involved
in a processing situation. The unit of information in any data processor
is the binary digit. A binary digit may be defined as the amount of
information described by a single yes-no decision. (See Vol. I, Chap. 16.)
In electronic systems, all information is ultimately expressed in terms
of binary digits.
Although the binary digit is a fundamental unit of information within
a data processor, it is of little use in communicating information to the
human users of a system. The human user communicates by means of
combinations of symbols each of which represents far more information
than a single bit. The fundamental element of this set of symbols is
defined to be the character. The characters of a typical business system
consist of the numbers from zero to nine, the alphabetic symbols from
A to Z, punctuation marks, and special symbols such as dollar signs, percentage symbols, and asterisks. A group of characters used to describe
a piece of information is called a field. A field may contain any number
of characters. A unit of information which may be described only by
a combination of a number of fields of information will be termed an
item. The particular field of an item by which the item is identified in
any processing situation is often termed the key. An assemblage of
items, usually ordered with respect to a key, necessary to describe a

DATA PROCESSING OPERATIONS

3-07

complete system of information will be termed a file. The items of a
file are often referred to as records.
EXAMPLE. One example will suffice to clarify these definitions. An
inventory file consists of a set of items each describing one unit of merchandise, and ordered according to the field containing the stock number
as a key. Other fields of each item contain descriptive and quantitative
information, such as color or amount on hand, expressed in terms of the
basic characters available within the system. If such a file is recorded
on a magnetic tape, the ultimate form of data representation is in terms
of binary digits of information as defined by magnetized areas on the
surface of the tape.
Data Rearranging
Editing. In addition to the editing functions required in order that
data may be initially assimilated by a processor, there are a number of
other data manipulations which may be grouped under the general category of data rearranging. Because the initial input medium is quite
often one of the slower communication elements in the processor system,
it is generally desirable to minimize the number of times that data are
transferred from it to the processor. However, the initial input data
quite often contain information which will ultimately be distributed to,
and have an effect on, a large variety of different processing activities.
It is expedient, then, to absorb the data from the input medium only
once, and, in the process, create a number of different standard items of
information each peculiar to its own end use. EXa1nple. A punched
paper tape from a point-of-sale recorder may contain such diverse
information as clerk number, customer number, stock number, quantity
sold, sales price, state tax, and federal tax. From this information,
reports and records such as clerk sales analyses, buyers reports, inventory
records, customer billing, and tax reporting are generated. For each
report, a specific subset of information recorded on the paper tape must
be extracted, regrouped, and appropriately organized for the data
processes which it will undergo. This type of processing thus constitutes
a second kind of editing problem.
Sorting. If it is assumed that a set of standard items relating to
a given reporting function has been generated, it is generally required
that the items be placed in some orderly sequence. The process of arranging a set of items of information into a sequence dependent upon a
specific set of characters within each item is called sorting. The need
for sorting information stems from two principal sources. First, many
auxiliary storage systems used for the recording of files of information

3-08

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

are of a serial access nature. That is, the time for acquisition of a given
item in a file is dependent on the relationship of its position in the file
to the position of the last preceding item acquired. In such a situation,
it is absolutely essential that the file be used in an orderly fashion in
order to minimize the time delays of data acquisition. This is most
easily accomplished by keeping the file in some fixed sequence and sorting
the input information to that sequence before file processing begins.
When suitable random access auxiliary storages (i.e., each data acquisition time is essentially independent of any preceding data acquisition)
become available, file updating processes will cease to be a reason for
sorting. However, the advent of such pieces of equipment will by no
means eliminate the need for sorting since a second requirement for
sorting exists which is independent of such equipment. Most reports
generated for human use must be presented in an orderly fashion, and
this order is quite frequently determined by the input data themselves.
The buyer's report of our previous example is a record of the sales
made in the departments which come under his jurisdiction. This
record is only of use to him if it is presented in a logical sequence that
can be determined only by sorting the input information, no preorganizing being possible since there is no control over what items will be sold
on a given day.
Merging and Collating. It is frequently required that two sets of
items, each independently sorted according to a common key, be combined into a single set of items sorted with respect to that same key.
This operation is called merging when the two sets of items have an
identical item structure, and it is called collating when the two sets of
items have independent structures (except for the common key, of
course) . Merging operations are frequently used in obtaining a sort
on a large set of data. They are often conveniently used when several
different activities may affect a common file. For example, separate
ordered reports may be required to indicate sales of merchandise to customers, receipt of merchandise from vendors, and returns of merchandise
from customers. Each of these reports would require a separate sorting
operation. Since each of these activities will affect a common inventory
file, it is desirable to perform a merge or collation of these sets of data
before the file updating process begins.
Match-Merge. In some processing systems, a number of variations
of the merge operation are provided. One such variation is called the
match-merge. In this operation, one set of items is considered as a
control set and the second as a master set. The result of the matchmerge operation is to produce an output set of items which consists of an
ordered combination of the control set and those items of the master

DATA PROCESSING OPERATIONS

3~09

set whose keys exactly match the keys of the control set. Such an
operation is useful in selecting from a large file only those items which
are actually to be operated on in a subsequent process. This is most
frequently done where special equipment is available to accomplish the
match-merge process since it relieves the equipment involved in the subsequent process of the task of recognizing, and time delay involved in
bypassing, inactive items in the master file. Another variation of the
merge process uses the control set to cause the insertion or deletion of
items in the master set.
Scanning. Scanning is the process of moving systematically through
a set of data in search of the items whose key meets a specified set of
criteria. Since in summarizing a set of sorted data, one wishes to
accumulate all those items with a common key, it is necessary to scan
the item keys until one is found which is different from its predecessors. The results of such a scan thus determine the exact point at which
the current accumulation should be terminated and a new scan operation begun.
Another common scan application is that of table-look-up. Many
business functions can only be expressed in a tabular form whose entry
arguments are nonuniformly spaced. A utility rate table where the rate
changes do not occur at equal increments of consumption is an example
of such a function. In order to obtain the correct function value for an
arbitrary argument, it is necessary to scan the table until one finds an
entry argument which is greater than or equal to the specified arbitrary
argument. The result of the scan determines the exact point at which the
correct function value can be found. A scanning operation also occurs
when it is required to sift out of a set of items all those which have a
common set of characteristics. The scanning of a set of loan payment
records to determine all those which are delinquent is an example of such
an operation.
File Maintenance

Almost without exception, every business application requires the
maintenance of files. The addition or deletion of records and the addition, deletion, or modification of information within a record constitute
the major elements of the file maintenance problem. The removal of
the records of no longer stocked items from an inventory file or the deletion of the records of subscribers who have failed to renew a magazine
subscription are typical examples of a record deletion operation. Similarly, the introduction of records pertaining to items that have just
become active in a system constitutes the bulk of the addition of records
type of operation.

3-10

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

Nature of the File. An important determinant in the file maintenance process is the physical nature of the file system employed. If the
information storage system of the file enforces, either by its physical
structure or logical organization, a "nextness" relationship between records (i.e., no record may be inserted between any two adjacent records)
it will be termed a continuous system. When no nextness relationship
is implied, the file system will be termed discrete. Magnetic tapes and
drums (without special index devices) are typical examples of continuous
file systems. Punched cards represent the most common example of a
discrete file system. If the system is such that a particular record may
be modified, at least in content if not in space occupied, and replaced
in its original position in the file without having any effect on the remaining contents of the file, the system is said to admit of selective recording.
All discrete systems and some continous systems admit of selective
recording.
Continuous File Processing. In a continuous file system which does
not admit of selective recording, it is necessary to make a completely
new copy of the entire file whenever any portion of the file is to be modified, with an obvious concomitant time cost. Where the number of
records to be modified is a small percentage of the total file, this time
cost- can become quite excessive. If a continuous file system has the
ability to locate a particular record independent of the data processor
and its medium admits of selective recording, a large percentage of this
time may often be saved provided the modified record does not require
more storage space than is available. Any continuous system faces a
severe problem when the file maintenance procedure requires addition
and deletion of information in the file. Here, even though selective
recording may be available, the nextness characteristics of the continuous system preclude the possibility of its use. The entire file must be
recopied in such an operation.
Discrete File Processing. Discrete systems generally obtain their
characteristics in one of two fashions.
1. The actual storage medium may be divided into discrete pieces
with a single record of information occupying one or more such pieces,
and not more than one record occupying a single piece. In such a situation, it is trivially possible to record selectively, to expand, or to contract
the file without disturbing unmodified data.
2. The actual storage medium is physically continuous but it is broken
into discrete pieces logically by means of an index which is used to define
where each piece of stored information is located. Such a system always
admits of selective recording and of expansion and contraction of information. It is to be pointed out, however, that the index is a special
r

DATA PROCESSING OPERATIONS

3-11

file itself and has many of the problems of file maintenance inherent in
its own structure. Further, many file modifications also require index
modifications thus doubling the work required in these instances. After
a reasonable period of use, the indexing system tends to become quite
complex and cumbersome in its attempt to describe the locations of new
records added, new pieces of old records stored in spaces not physically
near their parent record, and spaces made available by the deletion
of old records. In such systems, a periodic housecleaning and revamping of the file and its index is required for any reasonable efficiency in
file processing.
Retrieval of Information from Storage

l\10st files are organized with respect to some key characteristic of
the data they contain, with direct access to the file being available only
through the specification of the correct key. For example, an inventory
file is organized with respect to the item stock number as a key, and
no item may be located directly without specific knowledge of its stock
number. Thus, even though a verbal or technical description completely
defining a single item may be available, direct access to the item is not
possible without its stock number. In view of this fact, it is convenient
to break information retrieval operations into two classes, one which is
externally controlled and the other internally controlled.
Externally Controlled Retrieval. The first class is termed external
because sufficient information is available external to the file itself to
determine the precise identification of the desired record. A request for
the current status of a particular item whose stock number is known is
an example of an external file operation.
Internally Controlled Retrieval. On the other hand, it is frequently
required that an item be located with respect to some characteristic
other than the key with respect to which it is filed. This situation gives
rise to the second class, which is internally controlled. Internal situations require that a scanning operation be applied to a file in order to
accomplish the location of the desired information. (Many file systems
have this as a requirement for locating information even when the key
is known.) This may be further clarified by considering a particular
application and a particular file system. Consider a loan account file,
ordered according to account number, and stored on a selectively recordable magnetic tape in a file system which has the ability to locate any
record if it is given the account number. The posting of payments in
such a system would become an example of an externally controlled
operation since it would be trivially possible to identify the proper
account number when the payment is received. The process of determin-

3-12

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

ing delinquencies is an example of an internally controlled operation
since the file must be scanned to locate those records in which no payment has been posted.
Categorical Types of Information Retrieval. This operation brings
up another characteristic internal operation of fundamental importance
in automatic file systems. Information to be obtained from a given
file often consists of locating all those records whose characteristics
match a prespecified set of characteristics. An inventory file might be
scanned in order to produce a list of all those items which are used in
the manufacture ,of a specific product, which are in short supply, and
which require a purchase lead time of six weeks or more as an example
of such an operation. Manual systems have provided for such information searches (which the author terms category search), on a limited basis,
provided the particular set of classifying characteristics were known at
the time the system was installed. Edge-punched cards are a common
example of such a system.
Automatic systems for the first time provide the user with the ability
to provide economically for internal file operations of this type on a
large scale and not necessarily predetermined basis. It is apparent that
giving the business man the ability to scan his records for information
matching any prescribed set of characteristics provides him with one of
the most powerful analytical tools available in modern data processing
equipment, and that this feature will be one of the first to be exploited
after the first rush of straight data reporting jobs have been taken care of.
The Interrogation Problem. One of the most important and at the
same time difficult problems facing the user of automatic data processing
equipment in the business field is the necessity for making file information
available to both the processing equipment in its language, structure,
and medium and to the human users in theirs. Unfortunately, situations
arise where the people using a data processing system simply must be
able to obtain specific information from the records contained within the
system on a random and reasonably rapid basis. A department store
customer who wishes to pay up his account before leaving town on an
extended trip must be provided with his current balance within a short
time of his request. One simply does not tell him that he cannot leave
town until the twenty-fifth because that is when his bill is due to be
computed according to the current machine billing procedure. Yet such
data as this must be contained within the 'automatic auxiliary storage
of the processing equipment and cannot be simultaneously and economically duplicated in a form satisfactory for human use. At the present
time, no really satisfactory solution for this problem exists. Present

DATA PROCESSING OPERATIONS

3.13

methods generally require a printing of a minimum amount of information for each record in the file to serve as a basis for a manual interrogation process. This problem can be readily handled by a system with
a random access storage, but no such device is today capable of providing sufficient processing speed for the bulk data processing activity to
justify its inclusion for the interrogation problem. In certain on-line
data processing systems with reasonably slow input-output requirements
such a solution is provided. The automatic reservation devices employed
by some airlines and railways are examples of such systems.

8. CHECKING
Few systems can tolerate the introduction, generation, or perpetuation
of erroneous information. Of course this statement applies to a greater
or lesser degree depending on the particular situation. One erroneous
data point in a missile tracking situation will not have profound effect
on the final analysis. A mistake in an inventory record of a few hundred
washers would not upset a hardware warehouse, but a similar mistake
might be catastrophic to a supplier of household laundry equipment.
Error detection and correction takes on a considerably more important
aspect in automatic data processing situations than it has in manual
systems for several reasons. The data within an automatic system
does not pass under human scrutiny where reasonability judgments may
readily take place. The sale of five thousand fur coats might be readily
accepted by an automatic business system, whereas it would be immediately questioned by its human operators. Just as important perhaps
is the fact that the user has a considerable investment in his data processing system and that location and error correction may entail the execution
of a difficult, time-consuming, and costly operation. It is therefore extremely important that provision be made to detect and provide correction procedures for all errors which may be introduced in any phase of
operation of an automatic system.
Checking procedures may be described as being either automatic or
programmed. Automatic checking systems provide for the verification
of the correctness of all operations by special equipment built into the
automatic processing system. As such, automatic checking systems do
not introduce any new function for the system user. Programmed
checks, however, are basic data processing functions because they consist
of the verification of the correctness of system operation by means of
special procedures introduced by the system user.
Input Data Checking. Three techniques are in common use for the
checking of input data.

3-14

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

1. \Vhere the sequence with which data are entered is important, each
input item is made to contain a sequence number, and a programmed
check for the continuity of this sequence number is provided.
2. Where the correctness of a particular set of input characters is
especially important, a redundancy check may be employed. In this
case, the set of input characters is augmented by the addition of one
or more characters whose nature is determined in a well-defined fashion
by the input characters with which they are associated. Subsequent to
the input operation, a programmed check is performed to verify that
the input characters and their associated check characters satisfy the
correct relationship. An example for numerical data entry verification
is to provide a "mod II" check character. This character is obtained
by alternately adding and subtracting the digits of the data, casting out
any multiples of 11 which may accrue during the process. (The mod 11
check digit for the number 52719 is obtained as 9 - 1 + 7 - 2 + 5 = 18,
18 - 11 = 7.) This digit is then entered along with the data (thus
52719 would be entered as 752719), and a programmed check provided
to ensure that the check character matched the data entered. The mod
11 check ensures that no single digit was entered incorrectly and that no
transposition of digits occurred, and is, therefore, an excellent check
against the most common types of operator transcription errors.
3. The third common form of input data check is the sum check. In
this instance, a set of input items are arbitrarily chosen and each field
of· each item is added into a common total. This total is then entered
together with the set of input items to which it refers and a similar summing operation is performed subsequent to the entry process.
Checking of Data Processing. Operations internal to an automatic
data processor often permit programming checks. Internal operations
may be repeated and results compared or a given result may be obtained
by two independent methods. It is often the case that two independent
and necessary results can act as a crosscheck against each other because
some fundamental relationship is known to exist between them. It is
sometimes possible to provide reasonability type checks on the results
of computations. In scientific problems differencing techniques will
reveal out of line results. In business data processing situations, reasonable activity levels may be established and recorded for checking
purposes. Such a check would remove the possibility of recording a
sale of ninety-five mink coats because of the entry of an incorrect stock
number in an inventory updating procedure.
Output Data Checking. Checking of data transmitted from the
internal processor to output equipment is usually accomplished by
automatic checking equipment since it is generally impossible to acquire

DATA PROCESSING OPERATIONS

3-15

any information on output results for programmed checks. One major
exception to this is the checking of magnetic recording. No automatic
check of magnetic recordings is satisfactory that is not obtained by a
direct reading subsequent to writing of the actual magnetic record produced. Since such a system is not generally provided in current equipment, the only satisfactory check of magnetic recording is a programmed
check in which the data are read back from the magnetic medium and
compared with those which were transmitted originally. It is sometimes
possible to circumvent this requirement by delaying the read back check
until the current recording operation has been entirely completed, and
then executing some useful processing operation utilizing the recorded
information. By this means a writing error from the previous operation
can be caught and corrected during the current operation provided the
magnetic system admits of selectable recording.

c

THE USE OF DIGITAL COMPUTERS
AND DATA PROCESSORS

Chapter

4

Quantitative Characteristics
of Data Processing Systems
Roger L. Sisson and Richard G. Canning

I. Determining System Requirements
2. Basic System Characteristics

4-01
4-02

3. Basic Equipment Characteristics
4. Measurement of System Factors

4-04

5. Relating System Characteristics to Equipment Characteristics
References

4-09

4-04
4-16

I. DETERMINING SYSTEM REQUIREMENTS
The objectives of this section are to point out the basic characteristics
or factors which exist in any data processing system, and to discuss
methods of (a) measuring the system characteristics and (b) relating
the system characteristics to the possible equipments for performing
the systems functions.
The boundaries of the system under consideration are set to exclude
areas over which the designer has no control. The information flowing
into the system across these boundaries determines the input characteristics, and the type and nature of the inputs can usually be measured.
The information that flows out of the system is produced in accordance
with clearly defined requirements which are the output characteristics. It
is assumed that the designer has complete control over the structure
within the boundaries, being limited only by (1) the techniques known,
(2) equipment, (3) the economics of the situation (in military systems
4-01

4-02

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

values other than dollar economy might be defined), and (4) policy
restrictions.
The steps in designing a data system are:
1. Determine and clearly state requirements.
2. Determine the sources of data (outside the system) which allow
the realization of these requirements.
3. Determine, from an analysis of the requirements, the sequences of
data manipulations and transmissions to meet the requirements.
2. BASIC SYSTEM CHARACTERISTICS
Input Factors.

1. The rate at which data come into the system and the fluctuations
in this rate for each source of data. See Vol. I, Chap. 16.
2 .. The significance of the data. Each quantity must refer to some
entity in the physical or economic system, either explicitly, by symbols
or descriptive matter, or implicitly, by its location in relation to other
data.
Output Factors.

1. The rate and variations in rate.
2. The significance of each output specified explicitly (e.g., by a
heading), implicitly (by format), or by data previously supplied. An
output might be a variable which is a function of one or more others,
the rate of change (trend) of a variable (occasionally higher order rates
of change are required), or the past history of a variable (sometimes
expressed as the integral).
Internal System Characteristics. The internal structure of a system
may vary, depending upon the job being done. However, many data
systems fall into the following pattern:
1. Data collected. Input recorded, ready for use by the system when
required. Conversion, transcription, and editing might occur here.
See Chap. 7.
2. Input data stored (filed), often by storage of the recording medium.
3. Data transmitted to a central point (data gathering).
4. Data batched, i.e., collected into groups for ease in processing.
5. Data stored or filed, to make it possible: (a) to hold for processing
or until external processes affecting the data occur; (b) to maintain
records of past events (historical or integral data); (c) to combine data
for processing; (d) to determine rates of change of data (trend analysis).
6. Computations and logical manipulations performed on the data,
such as: (a) maintenance of the files noted in step 5; (b) computations
required for the outputs. The inputs for these steps consist both of
incoming data and data extracted from the central files.

QUANTITATIVE CHARACTERISTICS

4-03

7. Conversion and transcription of the data to a usable form.
Table 1 illustrates these steps in typical systems.
TABLE

1.

EXAMPLES OF DATA PROCESSING SYSTEM CHARACTERISTICS

System

Function
1. Record data

2. File data
(temporary)
3. Gather data

4. Batch data

5. Store data
6. Manipulate
File
maintenance
Output
pre para tion

7. Transcribe

Business
System
(Inventory
Control)

Data Reduc- Computation
Control
tion (Guided
(Linear
(Tape Driven
Missile)
Programming)
Machine)

Record trans- Not recorded
in missile;
actions on
transmit to
keyboard
ground where
recorded on
tape
(Not done)
Store tape

Record parameters on
paper

Hold data
(paper)
Organize
Transmit
Send tapes
to processing parameters in
electrically
to paper
center
form required
by program
tape punch
Put tapes
Organize
Combine
in proper
parameters in
paper tapes
form required
sequence
by program
File on mag- Not required File on magnetic tape
netic tapes

Bring master
files up to
date
Prepare
reports,
orders, etc.
Print out

Not required Linear program computation
Linear proEdit, caligram compubrate, compute (data
tation
reduction)
Print out,
Print out
answers
plot

Record on
magnetic tape
during preparatory
process
Hold tapes
Receive error
signals, and
signals from
tape
None
(on line)
None
(on line)
None
(on line)
None
(on line)
Convert to
servo signals
to guide
machine tool

General System Factors.
1. Accuracy, correspondence of results to reality ( error rate).
2. Precision, repeatability.
3. Flexibility, ability to solve new problems (meet new situations).
4. Cost (or value, e.g., to the military).
5. Installation time.
6. Reliability, probability of the machine being available when needed.

4-04

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

3. BASIC EQUIPMENT CHARACTERISTICS
Table 2 outlines briefly the factors which characterize data processing
devices.
TABLE

2.

BASIC EQUIPMENT CHARACTERISTICS

Factors Defining Data
Processing Characteristics
Peak capacity to transmit information
Error rates
Storage capacity
Maximum rate of data entry or extraction
Access time to individual elements of
data,
minimum,
average, and
maximum
Basic operations the equipmEmts can
Arithmetic and logical manipulators
perform
Rate of performance of basic operations
Input rate
Output rate'
Data converters, including input and Form of input to converter
Rate of conversion of data from input
output units
form to converter output form
Form of output from converter
Equipment
Communication or transmission
devices
Storage (storage filing) elements

4. MEASUREMENT OF SYSTEM FACTORS
This section describes how the characteristics described above are
measured and discusses them in more detail.
Location of Sources of Data. Table 3 gives examples of sources of
data and typical data rates.

TABLE

Type of Data
Processing,
Guided missile data
reduction
Scientific computation
Business systems

3.

EXAMPLES OF DATA SOURCES

Typical Data Rates
0.1-10,000 binary digits
per second
A few binary digits per
Person who defines the
problem
minute
Devices (or persons) that re- From a few binary digits
per day to 200 binary
cord data about transdigits per second
actions (sales, purchases,
work done, etc., and the
results of management
decisions)

Location of Source
Instruments in the missile

QUANTITATIVE CHARACTERISTICS

4-05

Source Data Units

Source data rate is measured in number of binary digits per second
(as a function of time) entering the system. If data are recorded in a
definite format, it is possible to use other units such as: (1) documents
per unit of time, where all documents have approximately the' same
number of digits; (2) transactions per unit of time, where the same data
are recorded about each transaction, e.g., points between which a machine
tool is directed to travel.
'
The data may enter the system at a uniform rate; but more often they
enter at random intervals so that a choice must be made between a
system handling the average rate but introducing delays, and the more
expeniive system which is capable of handling peak loads.
Measurement of Source Data Rates. This is usually performed by
one of the following methods.
1. Estimating from knowledge of the type of source. For example,
knowing the limits of performance of a guided missile, it is possible to
estimate the maximum rate of data transmission required to record faithfully the variation in the various factors, e.g., fuel pressure.
2. Determining the existing rate of input, e.g., counting incoming sales
orders over a period of time in a business system.
3. Knowledge of the problem. For example, by knowing the size of the
matrix problem to be solved, it is possible to determine the number of
coefficients to be fed into the computing system per iteration.
Storage of Data

The two key factors in data storage systems are (1) storage capacity
and (2) rate at which data must enter and leave storage.
Storage Capacity. This quantity is basically measured in binary
digits. However, a particular system may use derived measures. For
example, in a decimal system, storage may be measured in decimal digits.
Often a system handles data in groups of digits because of the storage
media used (e.g., cards) or because of the equipment design (many
equipments handle small groups of digits called words). Then the
storage capacity is stated in terms of the number of words in the storage
or the number of cards it will hold.
In every storage or filing system, data within the storage are located
by an address. The address is a number (or code) which the access or
scanning equipment recognizes, and it is used to locate the data for insertion or withdrawal.
Data Entry. Entry of data into a storage system can occur in two
ways: (1) the data can already be arranged into address sequence; (2)

4·06

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

data arrive at the storage randomly with respect to the address at which
a given item will be stored. These are referred to respectively as sequential and random arrivals. The requirements imposed on the system may
determine the sequence in which data arrive at the storage. Very often,
however, this choice is left to the system designer. For example, the
designer may allow data which are arriving in a random fashion to enter
storage as they arrive, or he may first collect a group of the incoming
data and order them on a unit which sorts them into the desired sequence
of address numbers. Then this set of data can be fed into a storage
sequentially. Thus the system for entering data into storage cannot be
divorced from the types of equipment available.
Collation Ratic:}. This is defined as the number of unit records (of a.
file) used in a given period of time to the total number of unit records
in the file. With low collation ratios (few records affected per cycle
time) the use of sequential data storage units becomes costly. If the
collation ratio is high, and if the data can be arranged in the proper
sequence, sequential storage may be more practical.
Size of Files. The process of determining the size of files and the
access type and time required is an integral part of the system study
and involves a detailed analysis of the problem. The file size depends
upon: (1) instantaneous rates of data coming into and out of the file and
(2) the number of items ,which the file represents.
Access Requirements. These are determined by: (1) the rate of
information arrival and withdrawal, both average and peak; (2) the maximum permissible delay between the arrival of an inquiry of the file and
final response to the inquiry; (3) the size of the file.
Computation and Logical Manipulation

The basic operations performed by a data processing system are
described in Chap. 3. The job of the system designer is to arrange these
basic operations so that the required outputs are obtained in the most
economical manner within the permissible time limits. An important
question is how to measure computation and manipulation. Almost
every system has basic items or transactions which it is processing (e.g.,
payroll records, points in space-missile position, iterations of a relaxation computation).
Manipulation Rate. This can be measured as items or transactions
processed per unit time. Examples of the items of transactions that
define the size of a given data processing task may be obtained by
studying Chaps. 8, 9, and 10.
Computation Rate. As with storage, the computational characteristics of a system often cannot be completely measured without relating

QUANTITATIVE CHARACTERISTICS

4-07

the problem to the equipment which can perform the job. If a general
purpose computing device is used in part of a system, it can be programmed to perform any computational procedure required. On the
other hand, a special purpose computer might be designed to perform
only that sequence of operations required of a particular system. The
problem in either case consists of estimating the economics and time
involved.
Output Factors

The form of the output is determined by the requirements of the
elements, external to the system, which are to utilize the information
from the system. The factors to consider when determining these requirements are: (1) the language or form of data presented, e.g., analog or
digital; (2) the format, that is, the arrangement of data; (3) the medium
(see Chap. 5); (4) the rate at which data will be produced and the fluctuations in the rate.
The Rate of Output Data. This can be derived by knowing the input
data rates from the data sources, the computational procedures used, and
the requirements for output information content. Since this process is
rather lengthy in complex systems, it is sometimes sufficient, for quick
estimates of the output factors, to count or to measure the output rates
in an existing system. These data must be used carefully, however~
because the new system is often being designed to provide some new
and different outputs. In some cases t,he new system will result in more
output data; in other cases, the output rate is reduced because the new
system performs more of the decision-making functions internally (see
Vol. I, Chap. 15).
Errors and Reliability

Important characteristics whieh must be considered at every point in
a system are error rate and reliability.
Error Rate. All the characteristics mentioned above (for instance)
rate of input and rate at which computations proceed) must also include
information on rate at which errors may occur. With good design it is
possible to reduce the probability of undetected errors to such a low
value that it is effectively zero in actual operation of the system. But
when error detecting and correcting methods are included (see Chaps. 5
and 13), it becomes important to recognize that the effective rate at which
data are arriving or computation is proceeding is reduced because
part of the information is redundant (i.e., involved with the error correction procedures).

4-08

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

Reliability. The reliability requirements of the system are also extremely important. There are some systems (for instance, the control
of air traffic) in which, ideally, no failures can be tolerated. On the
other hand, there are other systems such as certain business systems in
which machine failures would merely delay the overall process, but would
cost little money and certainly no lives. Where extremely high reliability
is required, the cost of the system must be expected to be higher.
Flexibility

A data processing system is a tool designed to process information.
As with any tool, there may be "tool design" and also "setup" time
and effort required, if the tool is expected to perform a variety of specific jobs. The tool design aspect of a data processing system includes
such things as programming a computer, or wiring the plugboard of
punched-card or analog computing equipment. Setup includes such
steps as entering the program into the computer memory and inserting
the plugboard.
Where a large variety of jobs must be processed, the system must be
flexible, and the ease. and rapidity of designing and setting up for a
new job become vital. In high volume applications, the programming
(design) occurs less often (usually only to make improvements) so that
flexibility is less important. In this case, special purpose machines
designed to perform only one specific job can be effective.
Flexibility is measured by comparing the time and cost for preparing
for a new job required by the systems under consideration.
Cost

Given specific system characteristics, there generally are specified
economic limits within which the equipment costs, installation costs, and
operating costs must fall, if the system is to be satisfactory.
Equipment Costs. These include the cost of data transducers and
recorders, transmission equipment, data converters, input devices, computers and data processors, output devices, auxiliary data storage equipment, office furniture, supply storage equipment, air conditioning
machinery, and maintenance equipment.
Installation Costs.- These include three maj or items:
1. The planning of the new data processing system, organizing for its
inception, and training personnel to operate the new system (see Chap. 7).
2. The preparation -of the physical facilities for the new equipment,
and the actual installation and check out (see Chap. 6).
3. The operation of the new system in parallel with existing systems

QUANTITATIVE CHARACTERISTICS

4-09

for a period of time, to establish its reliability and shake out the system
bugs before depending upon it (see Chap. 7).
Operating Costs. These costs include the types of costs associated
with operating any system of men and machines. The major items of
operating costs are depreciation or rental, salaries and wages and associated overhead, maintenance, space, supplies, and power.
Installation Time

An important overall system requirement or factor is the time required
to put the system into operation. The major steps which account for
the installation time are those listed under installation costs in the
previous paragraph.
5. RELATING SYSTEM CHARACTERISTICS TO
EQUIPMENT CHARACTERISTICS

The equipment characteristics are described in detail in Chap. 5. This
section will attempt to show how the system designer must relate various
system factors in selecting equipment.
Recording, Transmission, and Temporary Storage

The input source factors are determined by location, rate, and content.
These affect equipment characteristics in several ways:
1. Devices may be needed for converting physical phenomena (pressure,
shaft position) or informational inputs (quantity of items processed,
item of a sales order) to a form which the data processing equipment
can then handle, such as electric impulses, punched cards, and mechanical
motions.
2. Devices for recording these data for temporary storage may be
required.
3. The temporary storage media itself must be selected.
4. Communication links to bring the data from sources to intermediate and to central processing centers are usually involved.
Location. The location of data sources in relation to each other
and to the central processing units of the system determines the need
for the recording, temporary storage, and communication links in the
input part of the system.
Rate and Content. The rate at which data are generated at the
sources in relation to each other and to the processing rate determines
the need for temporary storage within the input system. If data are
generated at peak rates which differ from processing rates or the rate
at which data are generated at other sources, some temporary storage
is required. Often data are generated intermittently and/or processed

4-10

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

intermittently, so that storage is required to hold data during inactive
periods. The need for and size of temporary input storage is related to
the type and size of storage facilities in the central processing unit and
to the type of communications available. For example, broad-band links
which handle peak loads of information may require little storage; links
available only intermittently may create a need for more input storage.
Temporary input storage is generally sequential, since any rearranging
to be performed is accomplished at the main processing center; that is,
data are read out in the same sequence as received but sometimes at a
different rate.
The need for conversion is brought about when, for example, the source
data are in analog form and the processing or communications are digital.
In almost every system the data as they arrive from the source must be
converted to some other form or medium for further processing into the
system. For examples, see Table 4.
TABLE

4.

EXAMPLES OF DATA CONVERSION

Source Form
Pressure
Shaft position
Handwritten figures on paper
Coded information on magnetic tape

Required Form
Electric voltage
Digital signals (pulses representing numbers)
Punched cards
The same information in a different code
on paper tape

Relation of Data Source and Input Equipment.
1. Guided missile system. The data are generated at various rates
at points throughout the missile (see Fig. 1). The data are converted
EXAMPLES.

Missile

Ground

Transducers
Pressure
Selection and
temporary
storage

I

I

I
ransmltter I

"'-------' T

I
Air flow

Communication

.

I

Receiver

Temporary
storage

Central
processing Results

I
FIG. 1. Relation of data source and input equipment, guided missile system.

QUANTITATIVE CHARACTERISTICS

4-11

by transducers from the physical form to a fOfln convenient for transmISSIOn. They are transmitted to a central air-to-ground transmission
link by communications systems within the missile. Some temporary
storage may be required here as the internal transmission rate may differ
from the rate at which air-to-ground communications occur. The data
are then transmitted to the ground. Here they may be communicated to
a processing center, or may be stored (e.g., on magnetic tape) and then
processed later.
2. Processing sales orders. The data originate at random times with
the customers and are communicated by mail to a branch office of the
firm (see Fig. 2). Here they are stored, by holding the media, and then
Customers

FIG. 2.

Branch Office

Main Office

Relation of data source and input equipment, sales order processing.

eventually further translated by retyping into standard forms and
punched on paper tape. Data are then communicated (by teletype, for
example) to the main office where they may be stored again, and finally
processed on an intermittent basis.
Storage Equipment (Memory Units)

The storage capacity of the required equipment relates directly to the
storage requirements in the central processing system. There must be
provision for equipment to hold the number of binary digits (basically)
that must be stored.
The rate and sequence in which data will arrive partially determine
the type of access or scanning system required. In a sequential storage
the access mechanism locates the desired item by scanning one item after
another, usually in order of the address numbers. In a random access
storage, the access mechanism can go dir@ctly to the desired item
(address). Most storage systems are a compromise. Table 5 shows that
many access systems are partly random and partly sequential.

4-12

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS
TABLE

5.

SCALE OF DATA STORAGE ACCESS METHODS

Examples
Completely Sequential

Tape (magnetic and paper)

Tape drum and tape loops

Magnetostrictive lines.
Acoustic lines

Scale of
Randomness
(Arbitrary)

Magnetic drum

Semlrandom

Disk array
ledger card

Completely Random

Magnetic cores

The functional difference between random and sequential access
systems ifil great, and the system design will vary appreciably, depending upon which is used. With a sequential storage; data may have to
be batched and sorted by address numbers before entering the file or
storage.
The choice between random and sequential methods and equipment
is affected by the collation ratio. See Sect. 4. With sequential equipment
it is often nearly as easy to examine all unit records of a file as it is to
examine a few, so that systems with a high ratio can be processed almost
as cheaply as those with a low ratio.
In a sequential system access time is measured for two cases: (1) time
to read or write the next item in sequence; (2) rate at which data are
transferred when transferring continuously.
The access time is measured as the time required to locate the
desired item, sometimes termed the search time. If not a completely
random system, the average access time is given.
If a naturally sequential system (e.g., magnetic tape) is used as a
random access system (which is usually possible) then the system would
have a long mean access time with a large variance or range. See the
magnetic tape entry in Table 6. The naturally "random" system is

QUANTITATIVE CHARACTERISTICS
TABLE

Storage
Device
Magnetic coresa
Mercury delay linesa
Magnetic drums
Univac file computer drum
Univac Larc drum
Datatron druma
Magnetic tapes
Tape strips (data file)
Magnetic disks
Photographic disks
co

6.

4-13

ACCESS TIl\IES OF STORAGE DEVICES

Representative
Capacity
5000-600,000
binary digits
20,000-50,000
binary digits
180,000 alphanumeric characters
3,000,000 decimal
digits
40,000 decimal
digits
1,000,000-28,000,000
characters per reel
20,000,000 decimal
digits per unit
6,000,000 decimal
digits
4,000,000 decimal
digits

Representative Access Times
Min.
Mean
Max.
10 j.l.sec
10 j.l.sec
10 j.l.sec
50 j.l.sec

200 j.l.sec

400 j.I./Sec

1 msec 18.5 msec

36 msec

3 msec 1.25 sec

2.5 sec

0.5 msec

8.5 msec

10 msec

2 min

17

m~ec

10 min

2 sec

16 sec

48 sec

150 msec

500 msec

800 msec

0.1 msec 12.5 msec

25 msec

Internal storage devices.

characterized by a short mean access time with a small range or variance (e.g., see magnetic drums and magnetic cores in Tab1e 6). Mixed
systems often have a short mean time but a wider variance than the
naturally random system. For example, a group of short tapes might
have a mean access time of 100 milliseconds and a range of 5 to 200
milliseconds. See Chap. 20.
Computational and Logical Proceisors

The computational and manipulation facilities required are determined
by the processing which must be performed. Table 7 reviews some of
the characteristics of digital computing equipment and their relation to
system factors.
The size of storages (2 and 3) will be influenced in part by whether
the system is on line or off line. On-line systems require large internal
memory to hold programs for all possible occurrences, but small auxiliary
memories. Off-line system must have large auxiliary storages to hold
batches of data, but can be operated with smaller internal storages.
The flexibility required by the system determines the requirements for
ease in reprogramming or rearranging the equipment. Analog computing
equipment is often used when a number of different problems must be

4-14

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS
Table 7.

EQUIPMENT FACTORS AND RELATED SYSTEM FACTORS

Equipment Factors
1. Internal operation, including index
registers, buffers, special commands
for sorting, merging, floating point
2. Internal storage

Related System Factors
1. a. Manipulations required

2.

3. Auxiliary storage

3.

4. Capacity: number length, alphabetic facilities
5. Reliability

4.

6.
7.
8.
9.

5.

Cost
6.
Physical size
7.
Availability
8.
Auxiliary features: converters, "file 9.
processors," sorters

b. Flexibility and ease of programming and setup required
The need for storage of factors and
programs during computation
The requirements for storage of all
information in the system at any
one time
Language and size of the fields in
the data processed
Freedom from undetected errors
required; efficiency required (effective computing speed, including
redundancy for error detection and
correction, and down time)
System economics
Space available
System installation plans
Auxiliary system requirements:
Conversion, transcription, editing,
sorting and file manipulation requiremEmts (not to be performed in a
computer)

solved quickly, since it is easy to program or design the system for a
particular problem. Programming for a digital computer is more costly,
although special features and techniques are available to make programming easier. Programming ease can be "bought" by sacrificing computing time through the use of automatic programming techniques. See
Chap. 2.
Output Equipment

The form and media on which the output must be presented determine
the type of output equipment. The equipment must accept the data
in the form and on the media available from the processor proper. The
output equipment must translate or convert these data to a required
output form, including inserting the format arrangement or position
data inserted to make interpretation easier. The equipment must handle
the data at the required rate. Details such as requirements for multiple
copies, reproduction copies, instantly visible copies, and other factors
not necessarily explicit in the data themselves must be considered.
The control of format may be performed in two places, in the computational facilities or within the output units themselves. In either case

QUANTITATIVE CHARACTERISTICS

4-15

the format control must be able to provide the foreseeable range of
fonnats.
The output media required, of course, determine the type of output
units which can be used.
If the computations are performed digitally and an analog output is
required, a digital-analog converter is required having the proper characteristics.
In many output systems it is common to measure the output rate in
terms of the output form rather than basic binary digit rate. Thus, we
have units such as decimal digits per second, points plotted per minute,
lines printed per second, and cards punched per minute. 'Vhen output
information rates are given in terms of these larger units, additional
information is often needed to determine the actual information rate. For
example, the information per line depends on the number of characters
in each line.
The output requirements also can affect the computational procedures.
They can affect the sequence in which computations are performed, so
that data arrive at the output in the correct order.
TABLE

Type
Parity
Redundant
digits

Duplication

Reasonableness

Consistency

8.

TYPICAL REDUNDANCY CHECKING METHODS

Typical Use
Checking magnetic tape data
transfers
Checking internal computer
transfer and arithmetic operations, e.g., in Datamatic
1000
Self-checking number systems
Calculating and checking
"batch" or control totals
Repeating complete message
transmission (duplication
in time)
Duplicate arithmetic logic,
unit, e.g., in Univac
Checking to see if data deviate by a given percentage
from an extrapolation of
previous data
Checking agreement of stock
number and name

Redundancy
One binary digit of 7
4 binary digits of 40

One decimal digit of 7
Typically 10 digits of 1000
100%
100%
The computation involved in
extrapolation, comparison
and storage of limitsa

Storage of correct combination and checking calculation timea
Completeness
Checking to see if a field is Checking calculation timea
missing or if an item is
skipped in a sequence
a Such checking typically consumes 10% of the time for a complete calculation.

4-16

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

Equipment Error Rate and Reliability

The undetected error rate permissible directly affects the type of
equipment which can be selected for a given system. Where extremely
low undetected error rates are required a large amount of redundancy
must be introduced into all phases of equipment. Redundancies of
about 17 per cent (e.g., a parity bit for every six information binary
digits) are common. Redundancy as high as 100 per cent, that is, complete duplication, is used (e.g., equipment duplication as in the Univac
arithmetic unit, or a time duplication as in the IBM transceiver). Communication channels must carry extra data, in the form of error-correcting
codes, for instance. Computational procedures must include a large
number of checks in the form of redundancy (duplication, perhaps) and
consistency checks. See Table 8.

REFERENCES
1. R. G. Canning, Electronic Data Processing for Business and Industry, Wiley,
New York, 1956.
2. C. W. Adams, Automatic data-processing equipment: a survey, Electronic Data
Processing in Industry, pp. 125-138, American Management Association, New York,
1955.

c

THE USE OF DIGITAL COMPUTERS
Chapter

AND DATA PROCESSORS

5

Equipment Description
J. W. Busby and J. H. Yienger

I.
2.
3.
4.
5.
6.
7.
8.

General Equipment Description
Characteristics of Electronic Data Processing Equipment
Input Equipment
Storage Equipment
Output Equipment
Arithmetic and Logic Unit
Control Equipment
Typical Electronic Digital Equipment
References

5-01
5-04
5-09
5-24

5-33
5-38
5-40

5-43
5-43

I. GENERAL EQUIPMENT DESCRIPTION
Organization of Electronic Dig~tal Equipment

All electronic digital computers and data processors have five functional elements, namely input, storage, arithmetic and logic, output, and
control, as shown in Fig. 1.
The input unit is the means of getting both the data to be processed
and the directions for processing this data (control instructions) into
the equipment. The storage unit provides a resting place for all data
placed into the equipment, for data developed during the processing
operations, and for the instructions that direct the operations. The
arithmetic and logic unit processes the data according to the rules of
arithmetic and a predetermined logic. The output unit accepts the
results of the processing and passes them out of the equipment. The
5-01

5-02

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

control unit directs the processing operations by informing the various
units when and how they should perform. The arithmetic and logic,
storage, and control units are referred to as the processing unit.
Processing unit

1'-'-'-'-"'

I·

Arithmetic and
logic unit

,.

I
I

I
I

I

I

I
'-------t---

I

.

I

.

ii

I

Control unit

=-~_+

L. _______.__ ._· _J

I

I

_____..:J

Organization of electronic digital equipment.
Transmission: information - - ; control - - -.

FIG. 1.

Major Components. The major components that make up electronic
digital equipment are illustrated in Fig. 2.
Input Media. The most widely used input media are punched cards
and magnetic tape. They contain the data to be processed and the directions for the processing in a coded form.
Storage Media. The most widely used storage media are magnetic
cores, magnetic drums, and magnetic tapes. They hold the data to be
processed and the instructions for the processing in magnetic form. Magnetic drums and magnetic cores are permanent components of the storage
unit, whereas magnetic tapes may be disconnected from the processor
and replaced with other reels.
Arithmetic and Logic and Control Units. The arithmetic and logic
and control units consist of electronic circuits.
Output Media. The most 'widely used output media are punched cards,
magnetic tapes, and printed reports. These media are used to record
the results of the data processing. Punched paper tape, electric typewriters, visual displays and special electronic equipment can also be
used for output.

OUTPUT

m

-0

c

-a

~

m
Z

-i

om

en

()
~

-a

-i

o

Z

PTlfNf£l) l1£POPTS
_ _ . _ _ '--....1

Cl"I

FIG. 2.

Components of electronic digital equipment.

bw

5-04

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

General Purpose and Special Purpose Equipment. General purpose electronic digital equipment has the ability to perform a large

variety of problems. This equipment is designed to perform a set of
basic arithmetic and logical operations. The sequence of the operations
executed can be readily changed by changing the stored program. This
feature makes general purpose equipment very versatile and results in
a flexibility that permits it to be used in a variety of applications.
Special purpose electronic digital equipment have the following characteristics:
. 1. They are limited in the types of problems they can solve.
2. Most special purpose equipment is designed for only one particular
application.
3. The sequence of operations which special purpose machines execute
is often fixed into the control unit. To change this sequence, it is necessary to make an engineering change within the equipment.
4. Special input media are usually employed.
EXAMPLE. Reservation machines (see Chap. 9).
Distinction between Scientific and Business Machines. There is
no sharp dividing line between scientific and business electronic digital
equipment. In general, the two kinds of machines have the same functional organization and can do the same things. Electronic digital equipment for scientific applications is designed with emphasis primarily on
the speed of arithmetic operations and the ability to perform complicated.
arithmetic processes. Scientific computations are characterized by generally low volume of input and output, little or no reference file requirements, and extensive repetition of internal arithmetical operations.
Electronic digital equipment for business applications is designed with
emphasis primarily on fast means of transferring data into and out of
the equipment, large capacity file storage, and the ability to manipulate
data. Business data processing is characterized by voluminous file storage requirements, high volume input and output of data, and generally
nominal amounts of internal computations.
New designs tend to combine the features of scientific and business
machines.
2. CHARACTERISTICS OF ELECTRONIC
DATA PROCESSING EQUIPMENT
Number Systems. Numbers may be described by the digits composing them and the number system on which they are based. The number
system used in everyday living is the decimal system, based on the
number 10. Electronic computers use some form of the binary number
system (see Chaps. 2 and 12).

EQUIPMENT DESCRIPTION

5-05

The conversion of a decimal number to a binary number and vice versa
can be performed by the electronic digital equipment. The basic arithmetic operations of addition, subtraction, multiplication, and division can
also be, performed in the binary system. See Chaps. 12 and 18.
Coding of Information. The numerical data that have to be processed are usually in decimal form on the input documents, and the results
of the processing have to be in the same form on the output documents.
Electronic digital equipment has been constructed to represent numbers
in the decimal system. However, this is a very inefficient and costly
method of number representation in electronic form. Hence, the binary
number system or a binary coded system is usually employed. (See
Chaps. 12 and 13 for other codes.)
Binary Code. The binary system has been widely used in electronic
digital equipment, especially computers for scientific and engineering
work. The major disadvantage to the binary number system is that
it is difficult for human beings to interpret without training.
Binary Coded Decimal. Another method of coding information in
electronic digital equipment is the binary coded decimal system or the
8421 system shown here:
8421 Binary Coded Decimal
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001

Decimal Equivalent

o
1
2
3

4
5
6

7
8
9

A decimal number such as 267 is represented as (0010) (0110) (0111),
while 1959 is represented as (0001) (1001) (0101) (1001). The advantages of this system are that it is fairly easy to interpret and there is
room for additional symbols because the ten-decimal digits use only ten
of the sixteen possible combinations. A disadvantage is that it is not
as efficient as the binary system if the six additional code combinations
are not used.
Alphanumeric Codes. The coding of decimal digits can be extended
to include alphabetic characters and special symbols. Six binary digits
make it possible to accommodate sixty-four different combinations.
Therefore, six binary digits can handle the ten-decimal digits, twenty-six

5-06

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

alphabetic characters, and up to twenty-eight additional characters such
as punctuation marks and special symbols. One adaptation of the use
of six binary digits to represent various characters is as follows:
Character

Binary Coded Character

1

000001
000010
000011
000100

2
3

4

9

o
A
B
C
D

z
,

%
$

*

001001
001010
110001
110010
110011
110100

011001
011011
011100
101011
101100

This type of binary coded character representation is used in the
alphanumeric machines. Its advantages are that (a) it is fairly easy
to interpret, and (b) twenty-eight possible combinations left after the
ten-decimal digits and twenty-six alphabetic characters provide room
for additional symbols.
Information Representations. Number systems are represented
within electronic digital equipment by discrete electric signals. These
signals are interpreted by establishing a correspondence between their
characteristics and the characteristics of the number system used, as
shown in Fig. 3.
Electronic digital equipment is designed to treat a specific group of
digits as a single item called a "word." It can treat a sequence of binary
digits as a binary word, binary number, a binary coded decimal word,
or a binary coded decimal number, as illustrated in Fig. 3.
Words. A word within electronic digital equipment is a grouping or
a collection of digits and/or characters that represents a specific number
or another piece of information. Most arithmetical and logical opera-

EQUIPMENT DESCRIPTION

5-07

tions are performed upon the word as a whole. In fixed word length
equipment, the size of all words, such as ten-decimal digits, is constant.
In variable word length equipment, the size of the words is not necessarily
constant.

I

I

u

I

9

I

Y

G

-

Binary coded
alphan umeric
0 1 0 1 0 o 0 0 1 o 0 1 0 1 1 0 0 o 1 1 0 1 1 1 word U9YG
5
9
0
6
3
7
Binary coded
1
0
1 0 o 0 0 1 o 0 1 0 1 1 0 0 o 1 1 0 1 1 1 decima I number
0
509637

f-

o
o

t-

1

1

o
o

1

1

o
o

0

0

o0
o

1 0

0 1 0

o

o

1

1

o
o

1 1 0

1 1 0

o
o

0 1 1

0 1 1

Binary number

o

1 1 1 whose decimal

o

equival ent is
5,281 ,335
1 1 1 Signal digits

n. f--~
n- rt n-rL rt rt- fL rL rL
rt n. n. n. fL rLn-rL fLrt rtn- rt tL rt n-rt n-n- n. n-n- n. n.
f--

t - t--

I--

t--

Pulse signal

Timing signal

Time~

FIG. 3.

Discrete electric signals.

Operating Speeds. Elementary switching operations in computers
can be performed at rates of the order of 1,000,000 per second. However,
in most electronic digital equipment, the arithmetic and logical data
processing operations require several hundred switching times or periods
and, therefore, are performed at rates of the order of 1000 to 10,000
per second.
Control Signals and Instruction Code. The collection of digits or
characters representing a control signal is interpreted as a control word.
The complete list of control words, together with an identifying description, is called the instruction code of the data processing equipment.
This instruction code is the list of the different operations that the equipment can perform. (See Chap. 2.)
Addressing. Distinguishing one storage location from another is
accomplished in certain electronic digital storage devices, such as magnetic cores and magnetic tapes, by assigning an address to each sto~age
location.

5-08

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

In some magnetic tape storage units, the individual storage locations
on magnetic tape are not assigned addresses. The storage locations are
distinguished by the pieces of information stored in the locations. The
pieces of information contain distinguishing labels such as account numbers or part numbers and are stored in a particular sequence on the
magnetic tape. When a particular piece of information is required in
this addressing scheme, the equipment has to search for it because it does
not know exactly where it is located.
Types of Instructions. The various types of instructions used are
shown in Fig. 4.

Operation
code

Second
operand
address

First
operand
address

Next
instruction
address

Result
address

(a)

Operation
code

Second
operand
address

First
operand
address

Result
address

(b)

Operation
code

Second
operand
address

First
operand
address
(c)

Operation
code

Operand
address

Next
instruction
address

(d)

Operation
code

Operand
address
(e)

FIG. 4.

Instruction types: (a) four-address instruction, (b) three-address instruction,
(c) two-address instruction, (d) one + one address instruction,
(e) one-address instruction.

Programming and Coding. Before electronic data processing equipment can solve a problem or process data, it is necessary for human

EQUIPMENT DESCRIPTION

5-09

beings to prepare a program for the equipment. This program is a
specific, predetermined sequence of instructions that the equipment can
perform. The program is prepared by the human operations of problem
definition, programming, coding, and debugging. (See Chap. 2.)
3. INPUT EQUIPMENT
Scope of Input Function. The input unit connects the electronic
digital equipment with the external world. It supplies the data that are
to be processed as well as the instructions that guide the processing. It
converts the data from the form used in the external world into machine
language.
The complete input function starts with the preparation of the media
that carry the required data into the system from the source documents.
It ends with the actual placing of the data and control instructions into
the equipment. The input preparation equipment is not connected to
the electronic digital equipment, but it is included so as to bring out
the full scope of the input function. The preparation of the input media
is usually accomplished by operating a keyboard and manually keying
the information contained in the source documents into the input media.
In general, the same amount of data to be processed will require the same
number of operators working for the same length of time to prepare the
input media, no matter what input media are used.
Requirements of a Good Input Medium.
1. Machine language that can be fed automatically into electronic
digital equipment or can be automatically converted to such a medium.
2. Simple and inexpensive recorder. Most applications require much
recording equipment; therefore, it is necessary to minimize cost and
maintenance.
3. Obtainable as by-product. Input medium should be obtained as
a by-product of another machine operation, thereby eliminating duplication.
4. Compact, inexpensive, and lightweight.
5. Visually auditable, for ~hecking and editing.
6. Reusable.
7. High-speed input; approaching internal speed of electronic digital
equipment.
8. Automatically convertible to high-speed input, if not a high-speed
input itself.
Comparison of Input Media. Based on the above requirements,
Table 1 gives a comparison of punched cards, punched paper tape, paper
documents, and magnetic tape. Table 2 compares speeds and costs (1958
data) for these input media.

5-1.0

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

TABLE l. COMP ARISON OF INPUT MEDIA
Paper
Punched
Punched
Requirements
Documents
Cards
Paper Tape
Machine language
Yes
Yes
Yes
Simple and inexpensive
Yes
recorder
No
Yes
Obtainable as by-product
Yes
Yes
Yes
Compact and inexpensive
No
Yes
No
Visually auditable
Yes
Yes
Yes
Reusable
No
No
No
High-speed input
No
No
No
Convertible to high-speed
input
Yes
Yes
Yes

TABLE 2.
Speed and Costa
Speeds, char/sec
Costs, approximate
Input media, per char
Preparation equipment
Key unit
By-product
Input units
a

Magnetic
Tape
Yes
No
No
Yes
No
Yes
Yes

SPEEDS AND COSTS OF INPUT MEDIA
Punched
Cards

Paper
Punched
Paper Tape Documents

150-2,500

400-2,000

$0.00001

$0.0001

$2,500
$3,000
$15,000

$2,250

500-1,000

Magnetic
Tape
6,000-60,000
$0.00001

$500

$4,500

$~500

N.A.

$4,000

$20,000

Based on 1958 costs.

Speed and Costs. Magnetic tape is by far the fastest input medium
available. The cost of a magnetic tape input unit is the greatest, but
the cost per character in information transferred per unit of time is much
less. This accounts for the extensive use of magnetic tape as an input
medium.
The cost of the input media is very small and does not play a large
part in the overall cost problem. The cost of the equipment required to
obtain punched cards as a by-product is much greater than the cost for
punched paper tape. This is one of the reasons punched paper tape has
been more extensively used as a common language medium.
Input Preparation Equipment
Key-Driven. The most basic method of preparing input media is that
of finger-driven keyboard devices. The two most prevalent keyboards
available are the typewriter keyboard and the ten-key numeric keyboard.
The typewriter keyboard is a general purpose board for handling the
ten-decimal digits, twenty-six alphabetic ch~r~ctersl punctuation marks,

EQUIPMENT DESCRIPTION

5-11

and special symbols. In cases where the data are, or can be made to be,
all numeric, the ten-key numeric decimal keyboard is frequently used.
Card punches, paper tape punches, and magnetic tape preparation
devices are the most widely used key-driven input preparation equipment.
These devices prepare the input media as the operator keys the data onto
the keyboard. For example, as the operator keys the data onto the keyboard of a card punch, the data are permanently recorded in the card
by means of the punched holes.
Speed. The speed with which information can be keyed onto an
input medium depends upon the type and form of the data to be recorded,
the operator's familiarity with the data, and the equipment being employed. Operators using typewriter keyboards can average 7000 to 12,000
key depressions per hour. A ten-key numeric keyboard can be operated
30 to 50 per cent faster because of its smaller size.
By-Product. Input media can be produced as a by-product during
the preparation of other material, such as a bill, invoice, or check. In
this operation, the input preparation equipment is directly connected to
another machine, such as a typewriter, bookkeeping, or accounting machine. Then as this machine is operated, the data are not only recorded
on a document but are also recorded on the input medium. This eliminates one entire keying operation.
Equipment, such as couplers, makes it possible to connect card
punches, and paper tape punches to standard office machines, such as
typewriters, bookkeeping machines, adding machines, and desk calculators. This office equipment uses either the typewriter keyboard or the
ten-key numeric keyboard. The speed with which these devices can be
operated is equivalent to the operating speed of the regular key-driven
devices. However, these by-product machines require more time for
set up.
Automatic. The objective of this equipment is to accomplish the
recording of input data in machine readable form as a by-product of
other necessary automatic functions. This reduces the time expended
and cost involved in preparing an input medium. Also, it increases the
accuracy of the input data.
In the process control field, special gages and meter readers can convert their sensings to digital data. These digital data can then be either
recorded on an input medium or transmitted from the sensors to a central
recording station. This eliminates one human operation of reading the
gages and meters and another human operation of recording these data
on an input medium.
In the manufacturing field, time clocks that punch time cards. are used
to record the working hours of employees automatically. Other devices

5-12

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

can count, measure, and weigh products coming off assembly lines. Then
this information is automatically recorded in machine readable form
for further processing.
Verifiers. When preparing an input medium, especially by a human
operation, there is an opportunity for errors to be made in the recordings. If these errors are not corrected, they will enter the processing and
thereby affect all succeeding operations. Therefore, it is a necessary
part of the input function to locate and correct errors that have been
made during the original recordings.
Several techniques are available for verifying input data: (1) systems
or logical techniques, such as proofreading or control totals, are frequently
used but do not require any special equipment; (2) machine verification.
Machine verifiers are used to check the accuracy of the original record:ings. After the input medium has been originally prepared, it is sent
to the verifier. Here a second operator keys in the same information
as the original operator. This is compared with the recorded data. If
there is a disagreement, an indication is given, and the proper steps can
be taken to correct the mistake. Machine verifiers can be operated at
a rate equivalent to that of the original key-driven equipment.
Directly Connected Manual Input. Equipment

There are several manual means of getting information directly into
electronic digital equipment, but all these methods depend upon human
operations. Since they are therefore relatively slow, they are not used
to introduce any large amount of data into the processing. They are
used primarily for: (1) control over the computer, (2) basic communications between the operator and the equipment, (3) the insertion of small
amounts of input data.
Consoles. A console is the primary means of communication between
the human operators and the electronic digital cquipment. It is a panel
with a series of switches, lights, and buttons that are used manually
(1) to control the machine, (2) to correct errors, (3) to determine the
status of machine circuits, registers, and counters, (4) to determine the
contents of storage locations and accumulator storage, and (5) to revise
the contents of a storage location.
Electric typewriters. Most electronic digital equipmcnt has an electric typewriter associated with it. In a great many cases, the electric
typewriter is a part of the console. It is used primarily for input and
output of very small amounts of data, correctional information, and
control data. Human operator speed is about 8 to 10 characters per
second.

EQUIPMENT DESCRIPTION

5-13

Inquiry Units. One of the primary drawbacks of electronic storage
units is that the information contained therein cannot be visually examined. The information has to be read, interpreted, or translated by the
electronic digital equipment, and then printed out. This can be accomplished by the main processor, but such use is inefficient. Because of
this, several electronic digital equipments have special input units associated with them that make it possible to search for and print out the
information contained in the electronic storage units. These special
input units are called inquiry units or interrogation units.
Special Keyboards. Special keyboards have been developed for use
with particular applications. Examples are the bank savings window
machine for use in the savings account application and the reservation
agent's set for use in the airline's reservation systems. These special
keyboards have been designed, for special applications and are not usable
for any other purposes.
Punched Card Equipment
Kinds of Punched Cards. The three types of punched cards used are
the 80-column card (International Business Machines), the 90-column
card (Remington Rand), and the punched price tags. The 80- and
90-column cards are used to feed data directly into electronic digital
equipment. The Kimball and Dennison punched price tags are used
primarily in the retail business and are not directly fed into electronic
digital equipment.
The International Business Machine card is 3~ inches high and 7%
inches wide. It is divided horizontally into 80 vertical columns, each
capable of storing one character of information. Each vertical column
is divided into 12 row positions, numbered from 0 to 9 and 11 and 12.
Decimal digits are represented by a single punch in the appropriate
row 0 to 9. Alphabetic characters are coded by two punches in the same
column; one in one of the rows 1 to 9 and another in either row 0, 11,
or 12. See Fig. 5a.
The Remington Rand card is 3~ inches high and 7% inches wide. It is
divided vertically into an upper half and a lower half. Each half is
divided horizontally into 45 vertical columns, each capable of storing one
, character of information. This gives a total capacity of 90 columns per
card. Information is represented within each column by a combination of
one, two, or three punched holes. See Fig. 5b.
The Kimball and Dennison punched price tags are used primarily in the
retail trade. The tag is detached from an article when it is sold (see
Fig. 5c, d). These tags are then read by a ticket converter and the
information contained in the tag is converted to punched cards or punched

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

5-14

o 1 2 3 45 6 7 8 9 ABC D E F G H I J,K L M N 0 P

Q R STU V W X Y Z

I I I I I I I, I I
11111111'.
1000000000000000000000000000000000000000000000000000 0 0 0 0 10 10 10 10 10 10 10 10 0 0 0 0 0000
I 2 J .. II I , I 11011 1213141511171"12011 UZlN 25 2627 Zl2IlO313211lC 35)fj 31383'1404142 4l444545UCl495Q 515213 54 555157 M591011 52 6l14SSAIJII

11

Q

7011

n 7J '4 7571717179 10

a111111'1.11111111111111111 t 11111111 t 11111111 ttl ttl t t t t t, t t t t t t t t t t t t t t t t ttl t t t t t

2222122222222222222222122222222222222222122222222222 2 22 2U22 2 2 222 2 2 2 2 22222222222
,333333133333333333333333133333333333333333133333333 3 3 3 3 3 3 313 3 3 3 3 33 f3 3 3 3 3 3 3 3 3 3 3 3 3
444 44 44 4144 4 44 444 444 44 44 4 4144 44 44 4 4 4 44 44 44 44144 4 44 44 44 4 44 44 414444 4 4 44 4 4 44 44 4 4444

5'55555555515555555555555555515555555555555555515555 5 5 5 5 5 5 5 5 555155555555555555' 555

6 6 6 6 6 6 6 6 6 6 6 61 6 6 6 6 6 6 6 6'6 6 6 6 6 6 6 6 616 6 6 6 6 6 6 6 6 G,6 6 66 6 6 616 6 6 6 6 6 6 6 6 6 6 6 6 6 6 16 6 6 6 6 6 6 6 6 6 6 6 6 6 6

777777717777771777777777777777771777777 i 7 7 77 7 77 7 7 717 77 7 7 7 77 7 7 7 n 7 717 7 7777777,7777
888888888888818818888888888888 a8 8 818 8 8 8 8 8 8 8 8 8 8 8 8 8 8 811S 8 8 8 8 8 8 818 8 8 8 8 81S 8 8 8 8 8 8 8888
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 919 9 99 9 9 9 9 9 9 9 9 9 9 9 9 919 9 9 9 9 9 9 9 99 9 9 9 9 9 9 919 9 9 9 9 9 9 9 9 9 99 9 9 9199 9 9 9 9 9 9 9
1 Z 3 41i "

I ,'01112131CI51SnttI9r.1212223242528272121303112lJ34lS3&l13U9404142434U54847C841505152S35H'565158591011126364ISIGIJIII97DlIn73741H6J171'UO

N.A.A. I040-K-1 SOOt

11 .. 4:01 ... 409

(a)
ABC

/

•

DEF

GHI

(Ie

YZ

PQR

1; ~li-ii -1; -1; .,,-1; -I, -I, -1; -.-li-12 -I, -I, -1, .. -I, -I, -I, -I, -1, .. -Ii. i i . -1;. -1; -1; -1; -Ii -;i -1; i i . Ii i; -1; Ii -I, Ii Ii'
4 4 4 4 4 4 4 4 4 • • 4 4 4 0 . 4 • • 444404084,44844 • • 4 4 . 4 4 4 4 4 4 4
~MMMM8.MM.MMM8M.M.8MM • • ~~~8~~0~.~~~~~M.~~~~~~

• • • ~ • • 8~~.8~~.~~~~~~

~~~~~~~.~~~O~.8~~~~~~,~~~~

; : : ; : .. ; : : ': 19' • ~J '9' '9' '9' ': '9'
.~

1

i 2- it- 12" i z• i z- i z• it'" i:" i:

·e-

~

3

12 - . - 12 -

~

Ii. 19' 2: •
6

7

5
:' :' :' 19' :' 19' '9° it S: ': " '9

i

~

8

'9' .;;. :0 ·9' ': :' :' :'

~

I: -1-2 - 12- i"'2 - 12 - i'2 -1-: - i2 -iz-lZ -i2-;2 -i 2- tz -l~-I-Z -1~ - i"2 - I: - lz- lZ - 12 -12 - lz - i2 -i2 -1-2 -1-2- ij-l-z -1-2-12

J"J4J4J"J.J4J4J4J43" 34 343,,034.J4 3434J4J4J.4 J4J434'34 34 34 3434 34 J4 3434 ]4141414343434]4 3434 3-4

~M~~~~~~~~~~~~~~~.~.~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~8~.~~~~~~~~~~~~~~~~~~~~~

••• 9 ••• 9.99 •• 9.8.998999898 •• 99.9.99.999.99999

,III .7111 •• '.0.111':.'. 5' 'III I? 'I '1.0,,1111 '1""" ",. "'0 '17.",."" ,,7'''''0.'.; ,J ••• S" .,. ••••• 0

v

•

(b)

I

Macy's
SIZE 12

Macy's
SI~ 12

• IB..J •

01
••• 1

~O S,zeB
for

222

.
37

"

165.

I

Size

for

1

$
~~

1.40 4. 1$

-~

14

~:-----'

4757 62

10 •

• ~~:;'6.E)7.~V:: 9A7

--- ---- --

222

8 1 0720
I

~

•

:::.:1:. ::
37 165

r-'

64 29530.

14

.. -

4757 62

5ST
--

70·

--',

• ~~:;'6.E)7.~V::9A7'
•
L-,

64 29530.

S8T

~

(d)

! ________J
______~A~

(c)
FIG. 5.

Punched cards: (a) IBM punched card (80 columns), (b) Remington Rand
punched card (90 columns), (c) Kimball punched tag, Cd) Dennison punched tag.

EQUIPMENT DESCRIPTION

5-15

paper tape. Then the punched cards or punched paper tape are used as
input media to the electronic digital equipment.
Preparation Equipment. Card punches are the basic machines used
to prepare punched cards. They operate from a keyboard, either typewriter or ten-key numeric, and permanently record information in cards
by means of punched holes. Reproducing punches are capable of producing a duplicate set of cards or many duplicates from a single master
card. Punched cards can also be produced as a by-product of another
machine operation such as a typewriter or bookkeeping machine. Punched
card verifiers are available to check the accuracy of the original punching. Punched price tickets are prepared by a dial set machine.
Reading Techniques. There are three basic techniques for reading
the information contained in punched cards, namely electric contact,
mechanical probes, and photoelectric cells.
In the electric contact lnethod the card passes over a contact roller
under a set of brushes. These brushes are kept from touching the contact roller by the card, which acts as an insulator. However, when a
punched hole is reached, the brush drops into the hole and touches the
contact roller. This completes an electric circuit and electric current
flows until the contact is broken by an unpunched portion of the card.
Information is recognized by the time spacing of the holes from the edge
of the card.
vVith mechanical probes, punched cards can be read by moving a set
of probes against the card. If there is a hole, then the probes protrude
through the hole. The movement of the probe may be used to control
other mechanical devices or to generate an electric impulse.
Photoelectric card reading is accomplished by moving the punched card
under a beam of light. The card acts as an opaque substance until a hole
is reached. Then the beam of light travels through the card, impinges
upon a photoelectric cell, and thereby generates an electric impulse.
Punched cards are generally read a row at a time. In this manner, all
card columns are read simultaneously. Reading speeds are 100 to 900
cards per minute. Punched cards can be read a column at a time by
a photoelectric reader. Speeds up to 2000 cards per minute have
been achieved with this technique by the National Cash Register Company.
Input Units. Punched card readers of various kinds are used as input
units for electronic digital equipment. Standard electrical accounting
machine equipment such as reproducing punches, summary punches, and
collators operate in the range from 100 to 240 cards per minute. Special
card readers have been developed for specific digital equipments that
operate in the range from 100 to 2000 cards per minute.

5-16

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

Paper Tape Equipment
Kinds of Paper Tape. There are two kinds of paper tape, namely
printed and punched.
Printed paper tape has the information represented by dot patterns or
bar patterns. Printed paper tape is not used as extensively as punched
paper tape; however, it does offer several advantages such as compactness and simple, inexpensive, mechanical recorders.
Punched paper tape can be either fully perforated or chadless. Fully
perforated paper tape has the hole punched completely through. 'Vith
chadless paper tape the holes are not punched all the way through so
that no chad or confetti is produced; this permits legible overprinting.
With electronic digital equipment fully perforated tape is most extensively used.
There are four types of fully perforated paper tape, namely the 5, 6,
7, and 8 channel. See Fig. 6. On all these tapes there is a sprocket hole
which, when meshed with a small gear in the reading equipment, provides
a means of advancing the tape.
Five-Channel Tape. The 5-channel punched paper tape has been used
since the last century with the telegraph. The 5-channel tape with holes
and no holes provides 32 combinations. These 32 combinations are sufficient to designate the 26 letters of the alphabet. Then by using one of
the remaining combinations as a line signal to shift, the 32 combinations
can be used over again to designate the ten decimal digits, punctuation
marks, and other special characters.
Disadvantages of the Five-Channel Tape.
1. It does not provide a self-checking channel.
2. In electronic digital equipment it is sometimes advantageous to
have the coding on the tape correspond to the coding used to represent
information within the electronic equipment.
As a result of these disadvantages, 6-, 7-, and 8-channel punched paper
tapes have been developed for use in local or private communications
networks and with electronic digital equipment. Punched paper tapes
range in width from 1 7iG inch to 1 inch, and the holes are usually spaced
ten to the inch along the length of the tape.
Preparation Equipment. Tape perforators are the basic machines
used to prepare punched paper tape. They operate from a typewriter
keyboard and record information in the paper tape by means of punched
holes. Punched paper tape can also be prepared as a by-product of
another machine operation. For example, it is possible to connect the
tape perforator to a typewriter, calculator, bookkeeping machine, or cash
register designed for such use. Then as these machines are being oper-

EQUIPMENT DESCRIPTION

5-17

ated, selected information can automatically be transferred to punched
paper tape. Punched paper tape verifiers are available to check the
accuracy of the original recording.

•• •••
•••
•••
•••
• ••
•••••
•
•
•••
• •••
••
••••
••
••••••
•••
•• •••
•••
••
•••
••
•••
• ••
• •
••••
o

•

••••••
••
•••
••
•
•••••••
••
•
•••• ••••
•
• ••
•••
•••••
• •
• ••••
••
••
•• •••• •
• •
•••
• ••

.........
•

·0

(a)

FIG. 6.

••••• ..G

v . . .~• •

• • •
••• ••·• •• •
•• • •••
• •••
• ••
• • ··• • •
•• ••· ••
•• • •••
• •••
••••
• ••
• • •• • •
.G ••·• ••
•• •••..
••••
••••• • ••
• • •
••• ••·• ••••
•••• •••
• • ··• • •
•• ••· o. •
•• ••••
• •••
•••• •••
• • ·• • •
•• o ·•• •• •
•• •eo
••••
.......
0

.....

0

ft

0

..A..a..a..

(b)

••~ .A.
e.·• ••
•• •
• ••••
•• •
•••••
•••
• •
• •• ·••
•••••••
••
••••
•
e • ••••
••
•
•
••••••
• ••••
•
•
•••
• ••••••
•
•••••••
•
••••
•
••••
• •••••
•
•
•••••••
•
••••
•••
•••••••••
•
•••••••
•
• •••
• ••••
•
• •••••
• •
••••
•
o •••
-y •

• Iit

4H).

0

... aL .1IiII . 8 ...

(c)

A

• • •
••••••
• •••
••
•
•• ••••••
• •••••
••••••
•• ••
• •
• ••
•
••••••
••••••• ••
•
•• •••
•••
• •••••
• •
••
•• •• ••
•• ••••
• •
••• •••
•• •o·•••
••
o •••
• •••
•• • •••
••••••
•••••
•••••••
I••••••

•

0

•

0

•

.A

0

..........

.a..a..~

(d)

Punched paper tape: (a) 5-channel, (b) 6-channel, (c) 7-channel, (d) 8-channel.

Reading Techniques. Punched paper tape can be read by mechanical
means. A set of probes, one for each channel, is moved against the tape.
If there is a hole in the tape, a probe protrudes through the hole and an
electric impulse is generated. If there is no hole in the paper tape, the
probe does not protrude and no electric impulse is generated. Since this
is a mechanical process, it operates at relatively slow speeds of about
60 to 100 characters per second.
A photoelectric system can also be used to read the holes in punched

5-18

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

paper tape. Light from a single source is projected through the holes
in the paper tape onto a series of photocells. If there is a hole, then light
is projected on that channel's photocell and an electric impulse is produced. If there is no hole, no electric impulse is produced. .Reading
speeds are in the range of 200 to 2000 characters per second. All
punched paper tapes are read a character (column) at a time, so that
reading speed is proportional to linear tape speed.
Brush contact readers such as those used for punched cards have not
been developed for paper tape.
Input Units. Several types of punched paper tape readers are used
as input units for electronic digital equipment. lYlost electric typewriter-perforators are also mechanical punched paper tape readers. They
operate at a maximum of 10 characters per second. There are several
types of photoelectric punched paper tape readers. They operate in the
range from 200 to 2000 characters per second.
Magnetic Tape Equipment
Kinds of Magnetic Tape. Magnetic tape is a strip of either plastic
or metal that is coated with a ferromagnetic substance. See Magnetic
Tape under Sect. 4 for equipment description.
Preparation Equipment. Magnetic tape used as an input is generally
prepared by a process of converting information from another medium
such as punched cards or punched paper tape to the magnetic tape. The
-punched cards and punched paper tape are verified before the data are
placed on magnetic tape.
A typewriter keyboard device has been developed that directly places
information onto magnetic tape as it is keyed onto the keyboard. A
magnetic tape verifier operates on the same principle as the punched
card verifier. The primary advantage of directly produced magnetic tape
is the elimination of the conversion operation. The disadvantages are
that the recording density is much less than on magnetic tape produced
by other methods, and there is no off-line method of producing batch
totals often used in checking the accuracy of input data.
Reading and Recording Techniques. Information is usually recorded on magnetic tape in a series of records or blocks as shown in Fig. 7.
The size of the records can be fixed or variable, depending upon the
specific electronic digital equipment. The records can have specific
addresses or the identifying labels of the information stored in each
record can serve as distinguishing marks. The gaps between the records
serve as a nonusable area to allow for starting and stopping of the tape.
When the tape is motionless, the reading and recording head rests over
the middle of the gap. One-half the length of the gap is required to

EQUIPMENT DESCRIPTION

5-19

accelerate the tape motion up to full reading or recording speed. Also,
one-half the length of the gap is required for the tape to decelerate to a
complete stop.

Record

5

Gap

Record

4

Gap

Record

---~~

FIG. 7.

3

Gap

Record
2

Gap

Record
1

Tape movement

Recording on magnetic tape.

Reading and recording are accomplished by moving the tape past
the stationary head (see Chap. 19). Binary digits are recorded in the
range 50-534 per linear inch. The magnetic tapes can be transported
up to several hundred inches per second.
Input Units. Magnetic tape units contain the magnetic tape reels,
one for feeding and another for takeup, the reading and recording heads,
and the motors required to move the tape. All magnetic tape units contain some system to prevent tension from being placed upon the magnetic
tape during its sudden starts and stops. Magnetic tape units operate
in the range from 6000 to 60,000 characters per second and can be accelerated to full speed in 2 to 50 milliseconds. A common size of tape reel
is 10 inches in diameter, and the reel holds 2400 feet of tape. For additional information on tape handling mechanisms, see Sect. 4.
Document Reading Equipment

Electronic digital equipment can also accept input data in the language
of the business world as it is recorded on the original documents. This
eliminates the battery of typists needed to translate the input information
from the source documents to the input medium. Automatic character
recognition techniques make this possible. These techniques make use
of either special codes to represent the characters, or they can read the
printed characters themselves. These special codes or printed characters
are recorded on the original documents themselves.
Character recognition techniques can be classified as:
1. Codes or patterns: (a) mark sensing, (b) electrically conductive
spots, (c) fluorescent ink spots, (d) magnetic bar codes.
2. Printed characters: (a) printer's ink, (b) magnetic ink.
Codes and Patt'erns. J1;1 ark sensing uses special electrical conducting
marks placed in various positions on punched cards. These marks are

5-20

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

made by hand with special marking pencils and are read by the reproducing punch. Depending upon where the mark is located on the card,
an appropriate digit will be punched into the card.
Electrically conductive spots use coding inks that have a special property that will upset a balanced electronic circuit when the spots are
sensed. These coding inks may be colored or clear. Electrically conductive spots can be placed on the source document by means of a special
ribbon containing the coding ink or special carbon paper.
Fluorescent ink spots use a special phosphorescent ink in a pattern of
dots to represent characters. The documents are irradiated with ultraviolet light as they pass under the reading head, and the phosphorescent
ink spots fluoresce and thereby generate a signal in the reading head.
NO.

0 ..,

1001

R"

•• T._

A....

LESLIE VAN & STORAGE COMPANY
455 Broadway

NO,

1001,

-

----19-

90-86

TIIT
19 ~

PAYTOTHEORDERO'

..... ....::::::-:

_

(SP~_~"I.~~)_

"0'"

_ ••• _

"""

•• _ , _ . __ ,

$ _ __

~----

: : ..:'::;::
(HESTER) BRANCH

DOLIARS

LESLIE VAN & STORAGE COMPANY

Bank of America
s;~~6~~.E:A~~~~~IA

15730094 - - - - - - - - -

II
I
II I
I I II
IIII I
II I

15730094

FIG. 8.

Magnetic bar codes. Account numbers printed on the customer's check, on
the back in code and on the front in arabic numbers, are printed in magnetic ink for
use by the check scanner.

Magnetic bar codes use bars printed with magnetic ink. As the documents pass under a reading head, the magnetic ink is sensed by the
reading head and a pattern of voltages is generated that represents the
information coded into the pattern of bars. Fluorescent ink spots and
magnetic bar codes can be placed on the source documents during the
document original printing process.
Special reading equipment has been developed to read these codes
and patterns automatically. Figure 8 shows some typical code patterns.

EQUIPMENT DESCRIPTION

5-21

Some of this reading equipment is directly connected to the electronic
digital equipment. Other reading equipment pro~luces other input media,
such as punched cards or punched paper tape, which are used to transfer
the information into the electronic digital equipment.
Printed Characters. It would be advantageous for a machine to
read not codes but conventional alphabetic characters and arabic numerals. Characters and numbers are easier to print, are visually
auditable, and do not require additional space (for codes and patterns)
on the document. The following techniques have been developed to
read and interpret printed characters.
5

4

5

4

3

2

5

4

3

2

5

4

(a)

FIG. 9.

3

2

3

2

(b)

Photoelectric reading of printed characters: (a) five scanning lines, (b) pulse
output of scanning circuits.

With printer's ink, information is recorded on the document in the
normal fashion. Photoelectric scanning techniques have been developed
to read and interpret the printed characters. As the characters move
past the reading station, they are continually scanned by a beam of
light. A photoelectric cell is used in the operation, and the output of
this cell is a pattern of pulses. Each character will produce its own
unique pattern of pulses. See Fig. 9.
Magnetic ink has an advantage over printer's ink whose primary disadvantage is obliteration and mutilation. Extraneous markings are

5-22

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

sensed and cause incorrect interpretations of the characters. Some of
this mutilation disadvantage can be overcome by using magnetic ink
because the printing can be performed when the document is originally
prepared or the magnetic ink characters can be recorded at a later time
by special ribbons or carbon paper. The characters printed with magnetic ink are read by passing the document beneath a magnetic reading
head which produces an electric signal that is unique for each different
character. See Fig. 10.

FIG. 10. Magnetic reading of printed characters. As the printed numbers pass horizontally beneath the read head, the head sums up the total magnetic ink covered in a
given time interval and produces a proportional electric signal. Signal forms for several
numbers are shown.

Special reading equipment is required to read either printer's ink
or magnetic ink. Either it can be connected directly to the electronic
digital equipment, or it can be used to prepare another input medium,
such as punched cards.
Auxiliary Input Equipment

In business data processing applications, large amounts of input data
generally have to be placed into the processing. Since the input operations are generally much slower than the internal operations of the electronic digital equipment, the machine will be tied up for long periods of
time while it performs the time-consuming operation of inserting the data.
This utilizes the electronic equipment's abilities inefficiently. Several
things have been done to speed up the input operations.

EQUIPMENT DESCRIPTION

5-23

Conversion Equipment. Conversion is the process of transcribing
information from one input medium to another. The primary purpose
for the transcription is to take advantage of the inherently higher speeds
of certain input media (see Table 2). This is the case where information
on punched cards, punched paper tape, or paper documents is converted
to information on magnetic tape. These transcription operations are
performed automatically by special machines, and they are performed
independently of the main electronic digital equipment.
Transcription of information from one medium to another is often
performed for other reasons, such as compatibility or ease of preparation.
For example, punched cards to punched paper tape conversion is required
for transmission over a telegraph system. In other cases, punched
paper tape to punched cards conversion is required for computer input.
Punched cards to magnetic tape and punched paper tape to magnetic
tape conversions are used because in a great many cases cards and paper
tapes are easier to prepare and verify than the magnetic tapes.
Buffering Equipment. Most input devices handle data at a much
slower rate than the electronic digital equipment does. Since, in the
normal chain of processing, each component normally must wait before
beginning its operations until the preceding operations performed by
other units have finished, the overall speed of the processing is considerably reduced by the input operations. To overcome this drawback,
buffer storage devices are used. They permit internal processing operations to be performed during input operations. Thus, by enabling all
the components to operate simultaneously, buffer storage devices reduce
waiting times and increase the overall speed of the data processing.
The buffer has some or all of the following features:
1. It is usually capable of operating at two speeds, slow, dealing with
input-output, and fast, dealing with computer.
2. It serves as a kind of synchronizer, by taking over from the control
unit the control functions associated with input.
3. It can assist in rearranging data. For example, a word can go into
the buffer most significant digit first and come out least significant digit
first.
4. Code conversion from language of input medium to language of
digital equipment can be performed. Additional equipment is required
in this case.
Many buffers have some computing capability.
lVIultiplexing Equipment. Another way of speeding up the input
of information into electronic digital equipment is to connect multiple
input units to the machine. Each one of these units has its own buffer
3ts~ociat~d with it, Then by having multiplexing equipment, it is pos-

5-24

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

sible to connect these various input units to the central computer in a
definite sequence. 'Vhile one input unit is connected to the computer,
the remaining units are free to be loading their input buffers. The multiplexing unit scans the various input devices, searching for one that is
ready to transmit to the central electronic equipment. When it finds
one, the computer is connected to that input device. As soon as the
necessary information has been transferred, the multiplexing unit searches
for another input unit that is ready to transmit to the central equipment.
Multiplexing equipment is very important with in-line equipment having
many manual input stations.
4. STORAGE EQUIPMENT
Types of Storage
Internal. Internal storage forms an integral physical part of the
equipment and is directly controlled by the equipment. It holds the
control instructions which direct the processing, the data to be processed,
the intermediate results of the processing, and the final results of the
processing. Internal storage usually consists of one or both of the following types of storage: (1) fast access, low capacity storage, such as
magnetic cores; (2) medium speed access, medium capacity storage,
such as magnetic drums.
External. External storage is divorced from the equipment itself but
holds the information in the form prescribed by the electronic digital
equipment. It is a bulk storage medium used for long-range filing of
reference data. External storage must be low in cost because of the relatively large volumes required. It is usually a long access, large capacity
type such as magnetic tape. Punched cards and punched paper tape can
also serve as external storage media, but their use in this capacity is
relatively restricted.
General Characteristics of Storage Devices

1. Capacity. The upper limit of information that can be stored within
the storage unit.
2. Access time. The time interval between the instant at which information is called for from the storage location and the instant at which
delivery is complete. There are three types of access to information,
namely random, sequential (or serial), and a combination of these two.
Random access implies an access time which is constant, regardless of
storage location. In equipment with this characteristic, it is possible to
move from one randomly selected storage location to another randomly
chosen storage location in the same amount of time as is required to go

EQUIPMENT DESCRIPTION

5-25

from one random storage location to its adjacent storage location.
Sequential access occurs when it is necessary to go sequentially through
all intervening storage locations to get from one storage location to
another. As a result of this, sequential access time is directly proportional
to the number of storage locations between the starting storage location
and the ending storage location. A combination of random and sequential
access is obtained when it is possible to have random access to a particular
group of information, but then it is necessary to proceed sequentially
through that group to locate the particular piece of information desired.
3. Volatility. Nonpermanence of the recording when the applied electric power is cut off.
4. Erasabil1:ty. Capable of being erased and reused.
5. Physical. Size, shape, heat generated, power required, sensitivity, etc.
6. Cost. Cost per unit of information stored.
Spectrum of Electronic Storage Devices

Table 3 indicates the characteristics of various types of storage devices
used in electronic digital equipment. Some general relations can be observed from this table:
1. Capacity and access time. As capacity increases the access time
also increases.
2. Capacity and cost. As capacity increases the cost per unit of information stored decreases.
3. Access time and cost. As access time increases the cost per unit
of information stored decreases.
Operation and Uses. Table 4 describes the various storage devices,
principles of operation, and their uses. See Chap. 19 for details of design
and operations of magnetic drums and cores. Magnetic tapes and random
access devices are discussed below.
Magnetic Tape
Recording. Magnetic tape is a thin, nonmagnetic base material
coated with a magnetic material on which information is recorded. See
Chap. 19 for details on magnetic coatings. The base material can be
either a metallic ribbon or a plastic (acetate or Mylar) ribbon. Magnetic tape is usually several thousandths of an inch thick, from ~ to 3
inches wide, up to 2400 or 2700 feet in length, and wound on la-inch
diameter reels.
Information is recorded on magnetic tape in a series of records or
blocks shown in Fig. 7. Tape records have the following features.

TABLE 3.
Storage Device
Vacuum tubes
and transistors
Magnetic cores

Electrostatic
tubes

01

Representative
Capacity
50-100 binary
digits

Representative
Access Time
Random
0.000001 sec

10,000-100,000
characters

Random
0.00001 sec

5,000-50,000
characters

N

SPECTRUM OF ELECTRONIC STORAGE DEVICES

Random
0.00001 sec

Volatile
Yes

Erasable
Yes

No

Yes

Yes

Yes

Physical
Characteristics
Electronic
circuits

0"

C

Cost per Unita
$60 per
character

a

Small cores,
large units,
complicated
circuits

$7 per
character

0
(j)

Very sensitive,
delicate, complicated
circuits

$7 per
character

til

m

"T1

=i

»r-

()

a

~
"'tJ

C

-I

m

Mercury
delay lines

5,000-12,000
characters

Combination
avo 0.001 sec

Yes

Yes

Sensitive,
bulky

$20 per
character

Magnetic drums

20,0002,000,000
characters

Combination
avo 0.01 sec

No

Yes

Large size,
very reliable

$0.1 per
character

z

5,000,00075,000,000
characters

Combination
avo 0.5 sec

No

Large size,
complicated
mechanical
features

$0.01 per
character

»-I
»

Compact,
lightweight
removable

$0.01 per
character
(attached)
$0.00001 per
character per reel

Random
access devices

Magnetic tapes

a

2,000,00024,000,000
characters per
reel

Based on 1958 costs.

;;:0
til

»
0
0

Serial 0.01 sec
Random 2 min

No

Yes

Yes

"'tJ
;;:0

a()
m

til
til

a

;;:0
til

EQUIPMENT DESCRIPTION
TABLE

4.

5-27

STORAGE DEVICES

Storage Device
Vacuum tubes and
transistors

Principle of Operation
Bistable circuits

Use
Registers, temporary
storage

Magnetic cores

Two opposite states of
magnetization of cores

High-speed internal
storage

Electrostatic tubes

Positively or negatively
charged spots of dielectric
tube face

Early high-speed internal
storage

Mercury delay lines

Ultrasonic sound pulses
traveling in a column of
mercury

Early high-speed internal
storage

Magnetic drums

Rotating cylinder, magnetic coating, areas of
magnetiza tion

Medium-speed internal
storage

Random access
devices

Jukebox-many magnetic
disks
Tape strips-open or
closed loops
Multiple magnetic drums

Large capacity storage
under computer contro]

Magnetic tapes

Magnetic coated tape

Usually external bulk
storage, computer input

1. The size of the records can be fixed or variable, depending upon the
electronic digital equipment.
2. The records can have specific addresses or the identifying labels of
the information stored in each record can serve as distinguishing marks.
3. The gaps between the words are unused areas that are required for
starting and stopping the tape.
4. 'Vhen the tape is motionless, the reading and recording head rests
over the middle of the gap.
5. One-half the length of the gap is required to accelerate the tape up
to full reading and recording speed. Also, one-half the length of the
gap is required for the tape to decelerate to a complete stop.
Operation details are as follows.
1. Information is recorded within the records by magnetizing smfill
areas. Each such area can represent a binary digit.
2. These small areas are magnetized by a reading and recording head,
which is a tiny electromagnet. See Chap. 19.
3. 'Vhen reading information stored on magnetic tape, this same reading and recording head is used to determine the magnetic state of these
small areas.

5-28

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

4. Reading and recording are accomplished by moving the tape past the
stationary reading and recording head.
5. Binary digits can be recorded with densities up to many hundred
per linear inch.
6. The magnetic tapes can be transported up to several hundred inches
per second.
7. The time required to accelerate the tape from standstill to full
speed ranges from several milliseconds to 50 milliseconds.
8. A number of channels are recorded across the tape. See li'ig. 11.
Tape travel

--~

~1[:==J
~1[:==J

E]Jo[:==J
E]Jo[:==J
E]Jo[:==J
~1[:==J

FIG. 11.

Recording channels on magnetic tape.

Capacity. The size of the interrecord gap has to be considered when
determining the capacity of one reel of magnetic tape.
EXAMPLE 1. Consider a magnetic tape, 2400 feet long, with recording
density of 200 characters per inch and a %-inch interrecord gap. Each
reel has a theoretical capacity of:

2400 feet = 28,800 inches,
(28,800 inch) (200 characters/inch) = 5,760,000 characters.

EQUIPMENT DESCRIPTION

5-29

However, it is necessary to take into consideration the size of the interrecord gap. If the information to be stored is a fixed record of 80 characters, the capacity of one reel of magnetic tape is developed as follows:
Record length

80 characters
_
. h
- - - - - - - .- - 0.40 mc
200 characters/mch

Interrecord gap

= 0.75

Record plus gap

=

1.15 inches

28,800 inches
. I /
d = 25,000 records,
1.15 mc les recor
(25,000 records) (80 characters/record) = 2,000,000 characters.
EXAMPLE 2. If the fixed record contained 600 characters, the capacity
of one reel of magnetic tape would be 4,620,000 characters contained in
7700 records. Record length = 3 inches, gap = 0.75 inch.
In general, the larger the size of the record, the greater amount of
information that can be stored per reel of tape because of the proportionally smaller space wasted with the interrecord gaps.
Speed. Start-stop time has to be considered when determining effective tape speed.
EXAMPLE 1. Consider a magnetic tape with start-stop time of 10 milliseconds and a transfer rate of 15,000 characters per second. For a fixed
record of 150 characters, then the effective tape speed is:

150 characters
= 0.01 second to read
15,000 characters/record
Start time

=

0.01

Time required per record = 0.02 second
150 characters
0.02 second

=

7500 characters/second

EXAMPLE 2. If the fixed record contained 600 characters, the effective
tape speed would be 12,000 characters per second. Time to read = 0.04
second, and start time = 0.01 second.
In general, the larger the size of the record, the greater the effective
tape speed because of the proportionally lel!ls time wasted in accelerating
the tape to full speed. The total time required to read the length of a
reel ranges from 3 minutes to 10 minutes.
Tape Handling Mechanism. The tape transport mechanisms must
on demand be able:

5-30

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

1. To start the tape motion rapidly,
2. To maintain a uniform speed over the heads,
3. To stop the tape,
4. To maintain continuously proper tape guidance and control.
Other requirements on the equipment are:
5. The tape bearing surfaces must be smooth and free of sharp edges
to reduce wear to a minimum and protect the tape from tears.
6. The read-write heads of all tape mechanisms must be aligned to a
standard so that tapes written on one tape mechanism may be mounted
and read by the other tape mechanisms.
Operation is as follows:
1. A typical tape mechanism consists of a feed reel and a takeup reel
which can hold the entire length of magnetic tape.
2. The tape is threaded from the feed reel through some kind of surge
tank containing a few feet of tape, over a reverse tape drive capstan,
over the read-write and erase heads, over a forward tape drive capstan,
through a second surge tank and onto the takeup reel. See Fig. 12.
3. The tape drive capstans rotate continuously in opposite directions,
always ready to drive the tape when a pressure roller forces the tape
against one of the capstans.
4. The surge tanks are used to isolate the relatively slow acting reel
drives from the capstan drives which must actuate tape motion as rapidly
as possible.
5. When the amount of tape in a surge tank becomes either longer or
shorter than the nominal amount, the associated reel servo is signaled
by vacuum or photoelectric sensing to adjust the tape in the surge tank
accordingly.
Use of Magnetic Tape for Storage. Practically all modern business
data processors have adopted the magnetic tape for large capacity storage.
Advantages
1. By using many reels of tape, it is possible to store almost any desired amount of information.
2. It has proved to be a very reliable storage medium.
3. It has made possible the solution of a great many business applications where random access to the file information is not an absolute
requirement.
Disadvantages
1. Access to items on the tape is sequential and hence extremely slow
compared with internal operating speeds. It is more efficient to run
through a file and update it in a sequential fashion rather than a random
fashion.
2. Updating the files also presents some problems. To modify an entry

EQUIPMENT DESCRIPTION

5-31

on magnetic tape without rewriting the entire tape, it is necessary to
read the information from the tape, and, while the entry is being modified, hack-space the tape so that the modified record can be recorded
back into the original space. This is a very time consuming operation.

Feed reel

Vacuum or
phbtoelectric
sensing

o

Surge tank loops with
reel servo sensing

FIG. 12.

I

Vacuum
suction

Typical magnetic tape handling mechanism.

To add a new entry to an ordered file it is necessary to provide empty
spaces between each original entry "in the file, or else rewrite the entire
file and put the new entry in its correct location. N either of these possibilities is attractive. Leaving blank spaces in the original file means
that storage space is wasted with no guarantee that the blank spaces
will be properly arranged for the additions that have to be made. Re-

5-32

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

writing the entire file to make additions and changes is costly and introduces the possibility of errors.
Random Access Devices

In most business applications, very large capacity storage units are
required to maintain the files of business records. The most economical method of storing this information is magnetic tape, which has
a very long average access time. To overcome this serious drawback,
random access devices have been developed. These devices have large
storage capacities and relatively short average access times. (See Chap.
4.)

These devices do not have full random access ability (see above). In
general, they have an average access time in the range of one-half to
several seconds. However, the term random access has been associated
with these devices and is commonly accepted.
Large Capacity Magnetic Drums. Several types of magnetic drums
have been developed with a storage capacity of up to several million
characters per drum. Many drums can be connected to the electronic
digital equipment to bring the total storage capacity up to the order of
100,000,000 characters. These drums operate on the same principles
as the regular magnetic drums. They have an average random access
time in the range from 0.01 to 0.05 second.
Magnetic Disks. Magnetic disks are fiat circular shaped records that
have a coating of magnetic material on both faces. These disks are
mounted on a shift. A movable reading and recording arm is used to
read and record information on both sides of the disk. These units look
and operate like a jukebox (see Chap. 19). It is possible to store
up to 5,000,000 characters of information in one magnetic disk unit.
The average random access to information is on the order of 0.5 second.
Magnetic Tape Devices. Several devices have been constructed to
use magnetic tape in a different manner so that the average random
access time to information stored in these devices is in the range from
1 to 20 seconds. One device makes use of strips (250 feet) of magnetic
tape. There is a series of bins with one strip of tape in each bin. A
movable reading and recording head can be moved from bin to bin. Then
the strip of magnetic tape within that particular bin is moved, in either
direction, to the particular storage 10'cation desired.
Another device makes use of short strips of magnetic tape mounted on
movable frames. These frames are stored within a bin. They are selected
from the bin and brought against a reading and recording head. After
reading or recording, the frames are returned to their bin.

EQUIPMENT DESCRIPTION

5-33

5. OUTPUT EQUIPMENT
The output unit connects the electronic digital equipment with the
external world. It delivers the results of the data processing in a form
that can be used outside of the equipment. It converts data from the
form of discrete electric signals used inside the equipment to a form
required by the output medium. Output devices are compared in Table 5.
TABLE

Output Media
Low speed
Punched cards
Punched paper tape

5.

OUTPUT DEVICES

Equipment

Speeds

Reproducing punches
Flexowriter, teletype
punch, etc.

100-200 cards/min
6-60 characters/min

Printed page
Visual display

Electric typewriter
Mechanical annunciators
Electric picture tube

6-12 characters/sec
Audio alarm
several words/sec

Plotters

Analog plotters

Depends on equipment
(see Chap. 23)

Typewriters

6-12 points/sec

Accounting machine,
wheel or bar printer

100-150 lines/min

Prin ted page

High-speed wheel

300-900 lines/min

Prin ted page

High-speed matrix

500-1000 lines/min

Magnetic tape

Tape units

6000-60,000
characters/sec

Electronic printers
Photographic COpy}
Xerography copy

Picture tube

Up to 20,000
characters/sec

Line printers
Prin ted page

Types of Output
Direct and Indirect. Output from electronic digital equipment is
either direct or indirect. The direct manner produces data in a form
that is directly usable, e.g., printed data from an electric typewriter or
line printer. The indirect manner produces data in a form that is not
directly usable, e.g., punched cards or magnetic tape. In this case, the
information on the output medium is usually reproduced into a usable
form independent of the main equipment. The information on paper
tape is usually reproduced into a report form by an electric typewriter
whereas the information on punched cards and magnetic tapes is reproduced by line printers.

5-34

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

Reports. The primary means of communicating the results of the
data processing with human beings is the printed report. These reports
contain results of the processing for use by management, employees,
operators, and users of electronic digital equipment. In business applications, these reports can be classified as legal records, management information reports, and operating results. In scientific and engineering
applications, these reports will generally be in the form of tables or
graphs.
Machine Readable Outputs. In many applications, the output of
one processing cycle is required as input to another. 'V-hen this occurs,
it is important to record the results of the first processing cycle in machine
readable form that can be used automatically in the next processing
cycles. This can be achieved by producing the results on machine readable media such as punched paper tape, punched cards, and magnetic
tape. Then the results can be used as automatic input to the next processing cycle and can be used to produce printed reports.
Low-Speed Outputs

Several slow-speed methods are available for output. These methods
have operating speeds in the range from 10 to 200 characters per second.
The equipment required with these methods operates at these low speeds
because it is primarily mechanical in its operation. Table 5 shows a
comparison of the various low-speed outputs. Punched card machines
are standard electric accounting machines. Punched paper tape data
can be printed out by an electric typewriter. Electric typewriters are
used primarily for low volume output and operating instructions. Volatile visual displays are useful where temporary and short-term indication
of limited amounts of data is required. Electrically actuated mechanical
annunciators are used on supervisory and monitor consoles, as well as
electronic picture tubes which can be used to display rapidly several
words such as the contents of a specific storage location. Graph plotters
eliminate human transcription of the results from digital to graphical
form. Digital-to-analog converters are required for analog plotters.
Line Printers

Line printers may be defined as those that print an entire line at one
time. The line may be composed of from 25 to 120 printed positions
spaced approximately 10 characters per inch and with approximately
six lines per inch vertically. These printers may also skip blank lines
(slew) at 3 to 5 times their line printing speed. Some printers have a
means for horizontal and vertical format control through plugboards
and paper tape control loops located on the printer. In other printers,

EQUIPMENT DESCRIPTION

5-35

the format may be controlled by the program in the electronic digital
equipment. Printing may be done on preprinted forms, card stock, multilith master, multipart forms, and plain paper. The paper stock is usually
fan-fold and edge-perforated for sprocketed paper advance.

(a)
8

Z

R

9

,/Comma
o 11 $

.~Decimal

•••••
•••••
•••••
•••••
•••••
•••••
•••••
Wire
matrix

•••••

• 0000
.0000
•••• 0
0000.
0000 •
•••• 0

L

T
(b)

FIG. 13.

Digit 5

(c)

Line printing mechanisms: (a) accounting, (b) print wheel, (c) matrix.

There are two types of line printers, namely the accounting machine
and the high-speed printers, as shown in Table 5.
Accounting Machine. Accounting machine line printers are standard
EAM accounting machines. They can be used as either main output
devices or auxiliary printing devices. These printers make use of writing
type bars or slow-speed print wheels. See Fig. 13.
High-Speed Printers. High-speed printers may be defined as those
that print from 300 to 1000 lines per minute.

5-.36

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

The wheel printer utilizes a continuously spinning printer wheel wit.h
the characters embossed on the periphery and a printing hammer which
is timed to strike the paper against the ribbon and the wheel as the
desired character passes. Each printing wheel must contain each character to be printed. Most wheel type printers utilize a rotating drum
containing a "wheel" of print for each print column, such as 120 wheels
for printing a line containing 120 character positions. See Fig. 13b.
In the wire matrix printer, the characters are formed by selectively
actuating appropriate wires in a rectangular matrix usually containing
five columns of seven wires each. The printed character then is an array
of dots which is readable but is not as plain as the characters printed from
a wheel type printer. See Fig. 13c.
Magnetic Tape

Magnetic tape also can be used as an output medium. The main advantage of using it arises from its much higher speed compared with
low-speed media or line printers. vVith these other media, the maximum
possible output speed is about 2000 characters per second, but with
magnetic tape output speed is in the range from 6000 to 60,000 characters
per second. See Table 5. This means that when magnetic tape output
is used, the ratio of output time to computing time is lower than when
other mediums are used.
Electronic Printers
Principles of Operation. Electronic printers are those in which the
character image is generated in the form of an electron beam with a
cross section in the shape of the desired character or is generated by line
scanning electron beams such as in television. These devices are capable
of translating binary coded information used within the electronic digital
equipment into characters and displaying them on the face of a cathode
ray tube. In the charactron tube, this is accomplished by directing an
electron beam through a miniature matrix which contains cutout letter
and decimal digit shapes. The electron beam is then deflected into the
proper position on the face of the picture tube and thus creates an image
in the shape of the desired character. See Fig. 14.
Producing Hard Copy. The picture tube may be directly viewed.
However, most applications require the results to be produced in report
or other printed form. One method of producing a printed report uses
a photographic process in which pictures of the face of the tube are taken.
In some cases, the film can be developed by darkroom techniques, while
in other cases the film is exposed, developed, and fixed automatically.
Another method of producing hard copy of the face of the tube utilizes

~....d8:;:::::;:j:

Viewing screen

f-

Plates~~~

Selection

Matrix

m

-0

Convergence coil
.
0 030 0.210 m.
7 spaces.

I'

i-

c

Reference plates

(

""C

~

Deflection yoke

m
Z

'I

o x

y

a H

-f

o

m

en

••

V
M W Z
N G S T u

o·

()
~

0.012 in.

""C

-f

(5

bD0246 B
d F 1 3 5
f

C H

Displayed character
(dotted line indicates path
of electron bcaf11)

r

+

h K 13 E

1:1

t

1

.t '.I.

()

to>

•

+ • ':;

~

•

...
L

9

P U f\ n

•

m •

Z

.J

FIG. 14.

Charactron shaped beam tube. (Courtesy of Stromberg-Carlson, a division of General Dynamics.)

f{1
w
.....,

5-38

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

an xerographic printing process. This process uses an electrostatic
method whereby tiny, dustlike particles are attracted and adhere to the
surface of a selenium-coated drum that has been exposed to the face of
the tube. A subsequent step, after these particles have been transferred
to paper, fuses the character shapes permanently to the paper by means
of heat and pressure.
These electronic printers operate much faster than electromechanical
printers. They can operate as high as 20,000 characters per second.
Auxiliary Output Equipment

In business data processing applications, extensive amounts of output
data are generated. Since the output operations are much slower than
the internal operations of electronic digital equipment, the ratio of output
time to computing time may be too high. This is inefficient utilization
of the electronic equipment. Several things have been done to speed
up the output operations.
Conversion Equipment. Conversion is the processing of transcribing
information from one output medium to another. (See Sect. 3.) Conversion equipment such as magnetic tape to card and tape to printer is
used to take advantage of the inherently higher speeds. Because of the
speeds at which information can be put out on magnetic tape, the electronic digital equipment is not tied up for as extensive period of time
during the output functions and thereby has more time available for
da ta processing.
Buffer Equipment. The advantages of buffering equipment in performing output operations are similar to the advantages of buffering in
input operations, as described above under Input (see Sect. 3).

a

6. ARITHMETIC AND LOGIC UNIT
Description. The arithmetic and logic unit performs the arithmetical
and logical operations necessary in the processing of data. It has a set
of basic operations that it can perform, such as addition, subtraction,
multiplication, division, shifting, comparison of two numbers, and the
transfer of data to and from the storage unit. Design of arithmetic and
logic units is covered in Chap. 18. This section considers equipment
aspects.
Arithmetic. Both serial and parallel adders are used. The advantage
of the parallel mode arises from its very fast speed. For example, to
add two pure binary numbers, each 36 binary digits in length, in the
serial mode would require about thirty-six times as long as it would to
add two one-digit binary numbers. In the parallel mode, it would require
only two to four times as long, depending upon the internal design of the

EQUIPMENT DESCRIPTION

5-39

equipment, thereby making a substantial savings in time. As a result
of this, most large-scale electronic computers of today operate in the
parallel mode.
Electronic digital equipment that codes its information in one of the
binary coded representations performs addition in a combination of the
serial and parallel modes. Consider the binary coded decimal number
representation. In a mode of operation known as the serial-parallel
mode, commonly called serial, there are four adders that operate in
parallel on the bits of each binary coded decimal digit. Then the binary
coded decimal digits are added successively in time by the same set of
four adders. In the parallel-serial mode, there is one adder for each
binary coded decimal digit, the four binary digits representing each
binary coded decimal digit being added successfully through time by
the one adder.
Subtraction is usually performed by adding the complement. Multiplication is usually performed by making repeated additions. Division
is performed in electronic data processing equipment by the combined
operations of subtracting, shifting, and counting the number of times
subtraction is possible before shifting is necessary.
Logical Operations. The comparison of two numbers, which is an
example of a logical operation, may be performed by subtracting one
number from the other, and determining whether the remainder is zero
or not. As a result of this determination, the equipment can choose between two alternative courses of action, and in effect can make a logical
decision. Operations of this type are often called logical operations.
Alphabetic Information. The handling of alphabetic and special
character information is accomplished in two ways.
1. In the large electronic data processors, alphabetic information
is handled by a six binary digit coded character representation similar to
the one presented earlier. 'Vhen this type of code is used and the equipment is to treat the character as a decimal digit, the first two binary digits
are ignored in arithmetic operations. The remaining four binary digits are
then treated as a binary coded decimal digit and are operated upon in a
manner entirely analogous to the operations upon a binary coded decimal
digit.
2. Another way of handling alphabetic information is to use two
decimal digits to designate one letter or special character. For example,
61 would represent A and 62 would represent B.
Special Operations. The requirements of a great many scientific
and engineering applications are such that special operations, such as
double precision, automatic floating point, and base counter or tally are
built into the equipment. These operations are used either to increase

5-40

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

the accuracy of computations or facilitate logical operations. They may
also be programmed.
7. CONTROL EQUIPMENT
Description. The control unit receives the instructions from the
storage unit, interprets them, and directs the components to perform the
appropriate operations. It can direct the arithmetic and logical unit to
manipulate the data and the input-output units to communicate with the
outside world. A control unit makes the electronic digital equipment
accomplish what the human programmer wishes the equipment to do,
within the limits designed into the equipment.
Instructions Classified by Functions Performed. There are three
basic functional groups of instructions required in the operations of electronic digital equipment, namely arithmetic, data movement, and decision. In each of these groups, there are several general instruction
requirements, shown in the Table 6.
Sequencing of Instructions. The sequencing of the control instructions can be accomplished in two ways, namely by an instruction counter
or by the previous control instruction.
Control Console

The control console is a panel composed of switches, lights, and buttons
that provides the human operators with the means of communication and
controlling the electronic digital equipment. The control console includes indicators and controls for power, maintenance, monitoring, and
operations.
Power. Controls are available for turning a-c power onto the power
supply and then turning the various d-c levels onto the computer circuits
in the proper order. There are meters for monitoring the voltages and
other controls for changing the applied voltages during checking procedures.
Maintenance. There are logical circuit indicators, alarm lights, and
specialized operating controls which are helpful in preventive maintenance as well as in trouble shooting when the machine stops on account
of some alarm condition or malfunction. Examples of such controls are
switches which can be set to stop the computer on specified instructions,
and others that permit the equipment to execute only one cycle of operation for each push of the starter button.
Monitoring. Indicators that show the contents of internal storage
locations, principal registers, and counters are provided. In addition,
there is a monitor printer (usually an electric typewriter) which can make
periodic reports on the progress of an operation.
Operations. Start, stop, and off buttons.

EQUIPMENT DESCRIPTION
TABLE

6.

Order Type
Arithmetic
Add, subtract,
multiply, divide
Shift

Data Movement
Read in

BASIC INSTRUCTION TYPES AND REQUIREMENTS

Functions

Storage location of
operands
Direction of shift and the
number of digit positions
to shift

Movement of data from
input media or external
storage to internal
storage

Identification of input unit
or external storage unit,
amount of data and internal storage location to
place data in
Storage location of data
to be transferred, amount
of data, final storage location of data
Storage location of data
to be cleared
Identification of external
storage or output unit,
amount of data, and internal storage location
from which to write out

Selective rearrangement
within internal storage

Clear

Internal destruction of
da ta no longer desired
Movement of data from
internal storage to
external storage 'or output media

Decision
Compare

Required Address
Information
(Explicit or Implicit)

To perform basic arithmetic operations
To move the digits of a
number right or left within a word

Transfer data

Write out

5-41

Two words for equality,
greater than or less than

Conditional transfer of control

Transfer of control based
upon predescribed conditions a

U ncondi tional
transfer of control
Stop

Transfer of control under
all conditions
Halt all machine operations

Storage locations of two
words and location of next
instructions for each of
three possible outcomes
Storage locations of next
instruction for each of the
possible prescribed conditions
Storage location of next
instruction
No address information
required

a Conditional transfer of control refers to choosing one of two or more logical paths
in a program based upon the condition of a machine calculated result or of a data word
supplied as input for processing. For example, when two identification numbers are subtracted for matching, one of three conditions will exist: (1) result zero if identifications
are equal, (2) result positive, (3) result negative. Conditional transfer orders either
jump to another sequence of instructions or permit normal program sequencing, depending upon the condition of the result.

TABLE

7.

Royal McBee
LGP-30

General Characteristics
Arithmetic and logic unit
N umber system
Binary
Word size
30 binary digits plus sign
Operating mode
Serial, fixed point
Arithmetic speeds

Add, 8.75 msec; mult.,
24.00 msec

Control unit
One address
Instruction type
Accumulator overflow
Checking features
Internal storage
Type
Magnetic drum
Capacity
4096 words
Access time
7.5 msec
Magnetic tape equipment
None
Number
Start time
Transfer rate
Input equipment
Type
Papertape IICeyboard
10 char/sec Manual
Speed
Output equipment
Type
Paper tape I Printed page
10 char/sec 10 char/sec
Speed
Printing equipment
Flexowriter
Type
10 char/sec
Speed
On-line or off-line
Use
Approximate costs a
$1100/month
Rental
$50,000
Purchase
a

Based on 1958 costs.

en

TYPICAL ELECTRONIC DIGITAL EQUIPMENTS

~

N

Electrodata Datatron
Binary coded decimal
10 decimal digits plus sign
Serial-parallel, fixed or floating point
Add, 1.1 msec; mult., 9.3
msec

IBM 705
Binary coded alphanumeric
Variable word length
Serial, fixed point

c(,I)
m

0

"T1

0

(i)
=i

One address
Overflow, read-write

Add, 0.119 msec (five-digit numbers);
mult., 0.799 msec (five-digit
numbers)
One address
Character check, overflow, read-write

Magnetic drum
4080 words
0.85 msec

Magnetic cores Magnetic drum
40,000 char
60,000 char
0.017 msec
8.0 msec

Up to 10
6 msec
6000 digits/sec

Up to 100
10 msec
15,000 char/sec

»
Z

Punched cards I Paper tape
240/min
540 digits/sec

Punched cards
250/min

»
-I
»

Punched cards Paper tape
100/min
60 digits/sec

Punched cards
100/min

."

-Wheel
150 lines/min
On-line

Wheel
I Matrix
150 lines/min 500 lines/min
On-line or off-line

m

$4,000-$10,000/month
$140,000-$350,000

$25,000-$60,000/ month
$1,250,000-$3,000,000

I

»
r()

0

~

."
-c

-I

m

;::c
(,I)

I

0
0

;::c

0

()
(,I)
(,I)

0

;::c
(,I)

EQUIPMENT DESCRIPTION

5-43

Checking Features

In order to ensure accurate and reliable results, electronic digital equipment has checking features built in as extra hardware. The checking
features commonly used are the parity check, duplication, and indicator
checks. See Chap. 13.
Parity Checking. In some parts of electronic digital equipment, a
redundant check bit is added to the code for each character so that each
character always has either an even number or an odd number of binary
one bits. The characters are checked for parity each time they are read,
transferred, or written. This type of check detects the most common
type of malfunction that occurs in electronic digital equipment, an error
in one binary digit of a code. See Chaps. 4 and 13.
Duplication. Duplicate electronic units or dual operations can be
used to ensure the accuracy of all calculations. Dual recording on magnetic tape is sometimes used to increase the reliability of magnetic tape
reading and writing.
Other Checks. Other built-in checks are used to indicate undesirable
conditions that can occur within the electronic digital equipment. Such
checks can indicate conditions like accumulator overflow, incorrect sign,
and invalid instruction codes and address.
8. TYPICAL ELECTRONIC DIGITAL EQUIPMENT
There are several commercially available data processing systems for
business data processing and scientific computation. Shown in Table 7
are comparative features, speeds, and capabilities of typical available
equipment. In general, the equipment described in this table represents
a basic system, which can usually be expanded in capacity.
REFERENCES
1. E. C. Berkeley, Giant Brains, or Machines That Thinlc, Wiley, New York,
1949.
2. A. D. Booth and K. H. V. Booth, Automatic Digital Computers, Butterworths,
London, 1953.
3. B. V. Bowden, Editor, Faster than Thought, Pitman, London, 1953.
4. W. J. Eckert and R. Jones, Faster, Faster, International Business Machines
Corporation, New York, 1955.
5. R. K. Richards, Arithmetic Operations in Digital Computers, Van Nostrand,
Princeton, N. J., 1955.
6. N. Chapin, An Introduction to Automatic Computers, Illinois Institute of
Technology, Chicago, 1955.
7. E. C. Berkeley and L. Wainwright, Computers, Their Operation and Applications, Reinhold, New York, 1956.

5-44

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

8. R. G. Canning, Electronic Data Processing for Business and Industry, Wiley,
New York, 1956.
9. G. Kozmetsky and P. Kircher, Electronic Computers and Management Control,
McGraw-Rill, New York, 1956.
to. M. V. Wilkes, Automatic Digital Computers, Wiley, New York, 1956.
11. G. Kozmetsky and P. Kircher, Electronic Computers and Management Control,
McGraw-Hill, New York, 1956.
12. J. W. Carr and A. J. Perlis, A comparison of large-scale calculators, Control
Eng., 3,84-92 (February 1956).
13. R. K. Richards, Digital Computer Components and Circuits, Van Nostrand,
Princeton, N. J., 1957.
14. W. D. Bell, A Management Guide to Electronic Computers, McGraw-Hill,
New York, 1957.
15. E. M. Grabbe, Editor, Automation in Business and Industry, Wiley, New York,
1957;
16. Haskins and Sells, Introduction to Electronic Data Processing, Haskins and
Sells, Los Angeles, Calif., 1957.
17. D. D. McCracken, Digital Computer Programming, Wiley, New York, 1957.
18. M. H. Weik, A Second Survey of Domestic Electronic Digital Computing
Systems, Office of Technical Services, U. S. Department of Commerce, Washington,
D. C., 1957.
19. M. Phister, Jr., Logical Design of Digital Computers, Wiley, New York, 1958.

c

THE USE OF DIGITAL COMPUTERS
AND DATA PROCESSORS

Chapter

6

Facility Requirements
Erwin Tomash

I. Physical Installation
2. Personnel Requirements
References

6·01
6-09
6·13

J. PHYSICAL INSTALLATION

Overall Planning

The installation of an electronic data processing system will pose
unique problems not encountered in the installation of other types of
equipment, and careful consideration must be given to these problems
if an efficient, effective operation is to result. Planning the actual physical installation, which can be a major item of expense, is an often
neglected phase of the overall make-ready program.
This chapter is concerned primarily with the installation of large-scale
equipment. The installation of smaller equipment will pose problems
similar in nature, but to a lesser degree. Often, these smaller installations may be treated as extensions of existing punch card installations.
General Engineering Services. Experience has shown that it is important to seek the advice and assistance of those experienced in installing
and operating data processing systems. Two approaches are:
1. Prospective users having available the services of a plant engineering department (or equivalent) will be wise to avail themselves of this
6·01

6-02

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

service, since careful supervision and coordination of the technical
details is mandatory.
2. Prospective users not having such services available will find it
advantageous to obtain the services of an industrial engineering consultant to work with the equipment supplier and the various subcontractors, and thus assure proper coordination of all aspects.
Equipment Manufacturers' Services. IV[ost suppliers make available an experienced installation department prepared to work with the
customer's staff. They also furnish installation and specification manuals,
which provide the technical information needed. However, the installation of a large-scale system poses many special problems requiring
individual customer review and decision.
The supplier's fundamental responsibility ends with his submission of
complete specifications and installation requirements. Usually these are
furnished together with particular recommendations for the installation
at hand. The supplier is primarily concerned that proper power and
refrigeration facilities be provided in such a manner as to make possible
the trouble-free operation of his equipment. He is much less concerned
about such matters as physical layout, operational convenience, minimization of installation expense, and standby facilities.
The user wishes to comply with the supplier's installation specifications
in order to have trouble-free operation of the equipment, and also to be
able to hold the supplier responsible for equipment malfunction. The
user must concern himself with certain installation details, particularly
physical layout, so as to obtain proper and efficient utilization of the
equipment. He should give careful study to work flow, traffic control,
personnel housing, appearance, etc. Most users have chosen to use the
equipment supplier's installation department on an informal consultant
basis. In this manner, the user avails himself of the supplier's service
and yet is able to retain control of planning to take into account his
own individual requirements.
Physical Layout

From the user's point of view the most important aspect of the installation planning is to provide adequate, properly laid out working space.
It is safe to assume that power, refrigeration, and structural problems
will be resolved and that these problems, however difficult of solution,
once handled may be forgotten (except for routine maintenance). On
the other hand, problems which arise during operation due to improper
area and equipment layout remain with the user as long as the equipment
is in use, or must be corrected at great expense.

FACILITY REQUIREMENTS

6-03

Main Equipment Room. Important factors to consider are:
1. Space. A main equipment room is required to house the central

data processing and computing equipment and any intimately associated
input-output devices. The space recommended by most suppliers is
around 3000 to 3500 square feet. This should be regarded as a minimum.
Several installations have used as much as 4500 square feet and have
found the additional space more than welcome.' The exact layout of the
operational area is dependent upon the individual operational requirements and type of equipment installed.
2. Control Console. All data processing systems have some sort of
monitoring and control desk, and this control station should be located
so that while seated at the console the operator in charge can view all
equipment directly connected to the machine, such as magnetic tape units,
card readers, printers, and typewriters. All elements of the system
which require starting or stopping, loading or reloading and which can
be controlled from the monitoring station should be located adj acent to
the control station and in clear view of it.
3. Accessibility. The various elements which compose the data processing system must be placed to permit accessibility for maintenance
and ease of operation. It should be possible to replace or change control
panels, operate all controls, load and unload units, etc., without having
to move these units. Generally, for commercial systems now in field
use, suppliers recommend that a service area extending 3 or 4 feet from
the unit in all directions be provided to permit ready access to the
front, sides, and rear. If space is severely limited, this figure can be
reduced somewhat by careful checking of control panel and access door
clearances. Prior to installation, this checking can be done against
manufacturer's specifications and drawings.
4. Viewing Area. Another important aspect of machine location
results from the interest in equipment appearance. Most installations
have provided viewing rooms for visitors. It has been found desirable
to place the more dramatic and impressive units of equipment, such as
the printing devices, monitoring panels, and magnetic tape units close
to and facing out toward the viewers.
5. Magnetic Tape Reels. As a by-product of a large-scale data processing operation, a large active file of magnetic tape reels will be established and maintained. Suitable shelves, racks, files, or carts will have to
be provided, generally adjacent to the magnetic tape units, for storage and
effective control of these tape reels. Both file drawers and open shelves
are in common use, with the latter somewhat more popular. Specially designed office style units to house these reels are available from the office

6-04

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

equipment manufacturers, as are tape dollies, etc. It will also be necessary to develop a very complete tape reel control and identification
system, so that the wrong tapes are not inadvertently used or an excessive
inventory of tapes is not developed.
Maintenance Room. In addition to the central equipment area, the
supplier usually requires that an adj acent maintenance area be provided. An area of 300 to 400 square feet is recommended. The maintenance crew for a large-scale system will be permanently assigned to the
user's installation, and will occupy this area. Suppliers generally request
that facilities such as desks, chairs, and coat racks be provided for these
personnel. If floor area immediately adjacent to the machine is at a
premium, it will also be necessary to provide a small bulk-storage area
for spare parts. This may be a separate room at some other convenient
location, or it may be adjacent to the maintenance area. Ordinarily, for
leased equipment, the manufacturer supplies all special equipment relating
to the maintenance work itself, such as work benches, test equipment,
tools, drawing racks, and spare parts drawers. For purchased machines
it is necessary for the customer to provide equivalent facilities. From
the appearance and control point of view it has been found preferable
to establish the maintenance room with its own separate entrance and
doorway,' rather than as an area simply adjacent to the computer
machine itself.
Central Supply Room. A small supply room approximately 100
square feet in area and suitably equipped' with shelves or cabinets should
be provided. This room is used to stock supplies associated with the
data processing center, such as forms and paper, punch cards, and magnetic tape. This room should be convenient to the central processing
room, if not adjacent to it. If the former, then a set of shelves or a
cabinet should be provided in the main equipment room for small
amounts of supplies.
Power Room. A wall area to mount controls for power and refrigeration equipment is usually all that is required in the central equipment
room. Special provisions are often made so that large switches, circuit
breakers, etc., are hidden behind panels or cover plates. Large transformers, motor generators, compressors, etc., to which limited accessibility. is required, are in some instances located near the central
installation in "power rooms," or they are distributed throughout the
building, as convenient.
Office Space. It has rarely been possible to provide offices adjacent
to the central equipment for all personnel associated with the operation.
Certain personnel should be housed adjacent to the area, if at all possible.

FACILITY REQUIREMENTS

6-05

The department manager or other administrative official who is in dayto-day charge of the operation should, by all means, have his office
adj acent to the computer area. In addition, ~he chief operator should
have his office adj acent to the central equipment area. Additional operating personnel usually share common office space near that of the chief
operator.
Systems analysts and programming staff will require housing accessible,
but not necessarily adjacent, to the central equipment room. Experience
has indicated that, for the bulk of the programming staff, it is not
efficient to use a common working room. The usual solution is to establish two-man offices, or use eye height partitions to create these. Systems
analysis and programming require close and continued concentration,
and the privacy and quiet resulting from the two-man office arrangement
seems to be conducive to greater work output.
Visitors' Area. Most users have found it advantageous to establish
and maintain a visitors' viewing room which permits ready view of all
ope~ations within the equipment room.
These generally have been
designed to accommodate ten to twelve people comfortably and to include
glass panels for viewing and a suitable display and poster area where
models and explanatory charts may be shown. It has been found necessary at most installations to supplement the operations being shown with
a brief explanatory talk, and also to furnish diagrams, charts, and
reprints of articles.
Staff Conference Area. During planning, initial cutover, and regular
operation, frequent staff conferences will be needed, and a conference
room seating at least six to eight people should be provided.
Power Requirements
General. The user has little latitude in the matter of power requirements. The manufacturer's specifications must be closely followed.
Local building codes and type of power available will effect installation
detail; power control apparatus of various manufacturers may be used;
however, any differences will be in detail rather than function, and the
switchgear supplier may be relied upon to provide complete and satisfactory details for its installation.
Regulation. The major problem encountered from the electrical
point of view is to provide adequate regulation of voltages entering the
machine. Local power companies are usually cooperative in providing
information as to regulation of power lines. If given sufficient advance
notice, they will monitor and record data on the very lines which will
be used. These regulation data provide the magnitude and frequency

6-06

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

of the variations likely to be encountered. A new installation represents
a major increase in load and any advance notice which can be provided
to the power company is. greatly appreciated.
Since it is not possible to use unregulated voltages, some sort of regulating apparatus is required. Two approaches have been used:
1. Provide a buffering motor-generator set. Some manufacturers
provide this motor-generator set as an integral part of the system.
Others specify that such a motor-generator set be provided to ensure
proper operation.
2. Other manufacturers recommend use of stabilizing voltage regulators, rather than the use of motor-generator sets.
In each case, manufacturers specifications should be followed carefully.
The power lines for the compressors, blowers, etc., required to provide
proper cooling of the system should be kept independent of those supplied
to the computer proper in order to minimize further regulation problems.
Experience has indicated that electrical contractors accustomed to
doing standard electrical work cannot be relied upon exclusively because
of the special nature of this work. It will be necessary for the user to
maintain close liaison between equipment manufacturer and electrical
contractor to assure that the system is properly and efficiently wired
and powered.
Load Requirements. The user should take precaution during planning to make certain that the primary source of power is greater than
'- that amount exactly required to operate the equipment presently being
installed. Future expansion of the system should be regarded as almost
inevitable and as new or more modern units are added, these may require
additional amounts of power. In addition, when estimating total power
requirements, it is essential to remember that a large amount of power
will be required for the refrigeration system. In fact, the power required
by the refrigeration system very nearly equals that required for the
data processing system itself.
Cabling and Wiring. Interconnecting cabling to connect the various
elements of the system with the main power supply and with each other
is provided by the manufacturer. The customer is expected to provide
wiring from the primary source of power to the switchgear and voltage
regulating system and to power supplies of the units. Usually interconnecting cables are run underneath the system. A false floor is often
used to handle these cables and conduits. An alternate approach is to
build or dig trenches in the floor between units. Both methods are in
common use and have proved satisfactory, the false floor providing somewhat more flexibility and being somewhat more expensive.

FACILITY REQUIREMENTS

6·07

A third alternative, which is the least attractive, the least expensive,
and the least satisfactory, has also been used. This is to build a ramp
over the cables and run the cables along the floor. The ramp acts as a
protective cover to the cables but it also impedes the use of dollies in
the machine area and provides a traffic obstacle.
Convenience Outlets and Maintenance Area Power. It will be
necessary to install a number of convenience outlets all along the central
equipment room walls for powering of maintenance test equipment and
for operation of mechanic's tools, etc. In addition to convenience outlets
at the work benches in the maintenance area, special power facilities are
often needed for specialized maintenance test equipment.
Complete information regarding these special facilities is furnished by
the manufacturer.
Refrigeration Requirements
General. Proper equipment cooling has been a cause of great concern
to both equipment manufacturers and equipment users. Equipment
manufacturers have attempted in various ways to handle this problem
in a convenient and economical manner. Simply stated, these large
systems dissipate large amounts of power (from 50 to 150 kilowatts),
and this heat must be remoycd from the equipment and the room
housing the equipment.
Equipment manufacturers state their cooling requirements in different
ways. Refrigeration equipment suppliers also provide specifications with
varying terminology. Therefore, the following table will be found useful:

1 kilovolt-ampere
1 ton
1 kilovolt-ampere
1 ton

= 3400 British thermal units per hour
=

12,000 British thermal units per hour

= 0.283 ton
= 3.6 kilovolt-amperes

A ton (of refrigeration) means the refrigeration required to remove an
amount of heat equal to the heat of fusion of one ton of ice per day.
System Requirements. The general type and amount of refrigeration
required is usually specified in fairly complete detail by the supplier.
The amount of refrigeration required is determined by the amount of
power dissipated by the system. The exact type of refrigeration required
depends in large part upon the design of the data processing equipment.
Essentially two types of systems are in common use today. These
may be referred to as the open-ended and closed-loop systems.
1. Open-Ended Systems. The heat dissipated by the equipment is
exhausted into the room, and the refrigerating system is required to

6-08

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

remove this hot air and provide incoming cool air to the machine. This
type of system is almost universally used in smaller machines. The room
air conditioning system is required to handle the machine heat load very
much as it would handle any other room heat load.
Open-ended systems have been used quite effectively for large systems
as well as smaller units. Quite obviously, when very large heat loads
are installed in a few thousand square feet of floor space, then large
capacity, carefully ducted air cooling systems are required.
2. Closed-Loop Systems. The closed-loop approach has also found
considerable acceptance and a number of variations have been used in
commercial data processing equipment. In this system, the cooling air
is circulated but kept within the confines of the room or kept within
the machine itself. The machine being cooled may be considered as a
sealed unit. A set of internal cooling coils at the bottom of the unit
cool the air; it is then blown past the heat dissipating elements; finally,
the warm air is returned to the cooling coils.
The internal cooling coils are usually fed from a chilled water source,
and these systems are often referred to as "chilled water" systems. The
heat is carried away from the machine by the warm water return.
The machine, therefore, contains within its own casework the blowers
and heat' exchangers which transfer the heat developed by the equipment
to the water system, which is connected in turn to a refrigeration system.
The user is required to furnish the necessary chilled water to such units.
This type of system has an important advantage in that it is independent
to a large extent of the heat ambient of the room in which the equipment
is installed. The heat load of other units in the room, humidity conditions, etc., and other conditions external to the machine have no affect
on the operation.
It should be pointed out, however, that during maintenance periods,
access doors must be open, and there is, of necessity, an interchange of
air between equipment and the room. Thus, depending on the humidity,
condensate may form on the heat exchangers, and drains must be provided to remove this condensate if it should occur.
An advantage of the closed-loop system is that the refrigeration load
is constant during summer or winter and, as stated before, is independent
of external influences. A disadvantage of this system is that in addition
to the chilled water system, it is generally necessary to provide a room
air conditioning system for personnel comfort and to accommodate the
heat load of small input-output units, such as magnetic tape units, card
units, and key punch machines, which are not connected to the central
sealed-air chilled-water system. Thus two air conditioning units may be
needed, the second, however, of much lesser capacity.

FACILITY REQUIREMENTS

6-09

Floor Loading

Specifications for sizes and weights of the various elements in the
system will be provided by the equipment supplier. It is important to
note that many units are on casters, legs, or wheels ; therefore, floor
loading and structural plans must be checked for capacity to withstand
concentrated loads. It is often desirable to insert metal floor plates at
the load points, and thus distribute the load over a greater area. This
also prevents damage to composition floors, such as linoleum, which
otherwise would be damaged by pressure over a period of time.
Soundproofing

The noise level associated with most commercial large-scale systems
is considerably lower than that found in large punch card installations,
but it is still somewhat higher than that encountered in most office
operations. This is due in part to the noise created by input-output
devices such as card readers, card punches, and printing units, and in
part to blower noise, air conditioning equipment, and electric motors.
Generally speaking, no special soundproofing is required beyond the use
of acoustic tiles, such as those now commonly used in modern office
construction, for ceiling and walls.
Lighting Control

For most commercial equipment available today, there are no particular special lighting requirements. Light levels used in normal office
operation are satisfactory.

2. PERSONNEL REQUIREMENTS
General. Unlike problems in physical installation, which may be
overlooked, a great deal of attention has been focused upon personnel
training and procurement. Although there is no unanimity of opinion
with regard to the number and type of people required, certain common
patterns seem to be emerging.
In general, it seems to be considerably easier to teach data processing
to company personnel experienced in the operation than it is to teach
operational and systems background to data processing experts. Based
upon this philosophy, most users have tried to train and use personnel
from within their own organization and to hire a minimum of specialized
experience. This is particularly true during the first phase of conversion
where attention is focused on mechanizing present procedures.
An important development has been the use of specialists trained in
the scientific disciplines who have been working with company systems

6-10

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

and procedures personnel to develop new approaches to the operational
problems. This is particularly true in the upper echelons of data processing work where operations research teams and systems analysis departments are quite common.
A number of users have also chosen to employ the services of consulting
firms to assist with the conversion problems. lVlanagement consulting
firms have on their staffs trained individuals capable of assisting users
in more effective utilization of the equipment.
Training. The primary source of education in the fundamentals of
data processing is found in training courses offered by equipment manufacturers. Colleges and universities are now starting to provide generalized data processing training and each year more and more courses
are being offered at universities throughout the country. The true source
of practical training in data processing has been at the user's installation.
Practical experience on an operating system remains the best source of
training available today. Most users have found it not only advantageous but necessary to maintain their own continuing training program.
This has been done on a more or less formal basis, often in cooperation
with the equipment supplier. This on-the-job training has provided,
of course, better control, emphasis, and format, and, not unimportantly,
it serves as an excellent training vehicle for those individuals conducting
the courses.
The training required by the various members of the data processing
center staff varies with their function. The amount and type of training
required are discussed below 'under the various staff classifications.
Staffing
Management Staff. In general, the data processing center reports to
a member of the middle management group who is responsible for results
obtained in relation to the established objectives. This individual should
be familiar with the general principles and concepts of electronic data
processing. He should, in all probability, attend one of the shorter
training courses of the equipment suppliers, as well as university seminars,
management conferences, etc. He should have sufficient time available
and sufficient interest in data processing to visit other installations, act
on industry-wide committees, and in general represent the using organization in the field of data processing. He should, of course, act as the
primary communication link to the top management of the user organization and to other using organizations with similar interests.
Reporting to the executive level position described above, most users
have designated a direct managing head of the data processing center.
This individual usually has had extensive experience with the using

FACILITY REQUIREMENTS

6-11

organization and has a detailed knowledge of the organization, its
systems and procedures, and its objectives. He should be able to devote
full time to the management of the data processing operation. In addition to training in principles and concepts, attendance at seminars and
meetings, he should attend programming and coding courses and be
completely familiar with the properties of the equipment to be installed.
Systems Planning Staff. This is by far the most important activity
in the operation of the data processing center, and success or failure of
the entire operation will hinge largely on the effectiveness of the systems
planning work. All too often no distinction has been made between
"systems planning" and "programming." The importance of the distinction should not be disguised by the fact that good systems analysts are
usually experienced programmers and as such often do some programming
or coding work themselves.
The systems analysis portion of the work load, especially during initial
conversion, is perhaps 80 per cent of the total effort to be expended.
The detailed programming and coding which follows may require a
greater man-hour expenditure, but they can be accomplished by lower
level, less highly trained individuals following careful rules of procedure
delineated by the systems design.
The typical systems analyst is a senior staff individual familiar with
the application to be mechanized and its objectives. In addition, he has
been thoroughly trained in the application and programming of the
particular equipment being used. Most users have found that a group
of six to eight systems analysts are required to accomplish a maj or
conversion. The primary source of personnel for this group is from
within the using organization. Experience has indicated, however, that
it is wise to add to this group one or two very experienced analysts from
other installations who will make up for their lack of knowledge of
systems detail by their superior knowledge of equipment utilization.
These experienced analysts very often may be used successfully as a
consulting group to the other systems analysts and to the programmers.
The equipment supplier is often able to furnish one or two analysts of
this calibre to assist the customer in a consulting capacity.
The systems analyst should take a complete programming, coding, and
applications course for a total of about three months formal training,
and should have several years of systems and procedures experience.
Programmers and Coders. The detail work of carrying out the
systems design and preparing it for running on the data processing
machine is accomplished by the programming group. Very often, a distinction is drawn between programmers and coders, the former sometimes
being considered more senior ~nd more experienced than the latter,

6-12

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

Programmers are considered capable of taking systems flow diagrams and
preparing these completely for use on the machine. Coders are considered capable of t2,king individual runs within an operation and preparing
these for use on the equipment. The number of programmers and coders
required is dependent upon the size of the application being converted
and the rate of progress desired. In general, a minimum size programming group consists of about fifteen individuals. Groups of thirty
programmers and coders are not uncommon.
The training provided for programmers and coders should include at
least three months of formal programming training. After this training
program, about nine months of experience will be necessary before their
skills may be considered adequately developed.
Instructional Staff. As mentioned heretofore, most users have found
it advantageous to establish their own training program and assign at
least one individual to work with new employees, conduct training
courses, etc. Experience has indicated that the user will require a continuing source of programmers and coders to take care of normal attrition, promotions, etc. Usually a member of the programming and coding
group, or a junior systems analyst, is selected for this training function.
Operators. One of the major advantages of an electronic data
processing system and its attendant centralization of processing is the
large reduction in number of machine operators required. However, a
small number of skilled individuals will be necessary.
A chief operator, preferably having extensive experience in another
installation, will be required. This individual can be considered a
member of the administrative staff and will be useful in training, program planning, machine scheduling, etc. In addition, he will supervise
the activity of his staff of from four to eight operators. Naturally, the
number of operators will depend upon the complement of equipment in
use and the number of shifts the equipment is operated. Two classes of
operators are found in most large installations. These are computer
operators and auxiliary machine operators, the former being more highly
trained and skilled than the latter.
Computer operators should have basic programming training, although
certainly not as completely as programmers. In addition, they will
require a rudimentary knowledge of the equipment logic and, of course,
a detailed knowledge of its operation. After this training period, which
generally requires about three months, time should be allowed for the
operating skills to be developed. The timing of computer operator
training is somewhat critical in that operators should continue to operate
equipment in order to keep their skills fully developed. Training more
than six months in advance of equipment installation has been found

FACILITY REQUIREMENTS

6-13

to be wasteful. Auxiliary machine operators, on the other hand, require
very little formal training beyond an understanding of the control of the
particular units they will operate. A training program consisting of a
one- or two-week course and a few weeks to acquire operating skill is
generally satisfactory for these individuals.
Maintenance. Maintenance services are provided by the manufacturers for users leasing equipment and poses no particular problem.
Many users of large electronic data processing programs have found it
advisable to hire a senior engineer trained and experienced in data
processing to act as a staff consultant on equipment procurement, installation, etc. This individual also serves in a liaison capacity, with the
maintenance engineers provided by the equipment supplier.
For those users purchasing equipment, it will be necessary to hire and
train a maintenance staff. Equipment suppliers provide their customers
with thorough and detailed training courses similar to those provided
for their own maintenance crews. A chief service engineer should be
employed as soon as possible after the decision to purchase equipment.
This person should have a formal education in electronic engineering
and should be experienced in the maintenance of the particular equipment being purchased.
At least one year before installation of the equipment, a group of
maintenance technicians should be hired and training started. It will not
be necessary for these maintenance technicians to have completed formal
education at the university level. The graduates of technical institutions, servicing schools, and armed forces training schools have been
found to be adequately prepared to take manufacturers' training courses.
A period of six months should be allQwed for the formal training on
the computer system and auxiliary units. In addition, six months will
be required for sufficient skill to be developed on the part of the maintenance crew to provide adequate maintenance services.

REFERENCES
1. R. G. Canning, Installing Electronic Data Processing Systems, Wiley, New
York, 1957.
2. W. C. Bell, Management Guide to Electronic Computers, McGraw-Hill, New
York, 1957.
3. G. Kozmetsky and P. Kircher, Electronic Computers and Management Control,
McGraw-Hill, New York, 1956.
4. American Management Association, Electronics in Action: The Current Practicality of Electronic Data Processing, New York, 1957.
5. American Management Association, Establishing an Integrated Data Processing
System: Blueprint for a Company Program, New York, 1956.

c

THE USE OF DIGITAL COMPUTERS

Chapter

AND DATA PROCESSORS

7

Design of Business Systems
Howard S. Levin

I. General System Requirements

7-01

2. Stages of System Evolution

7-02

3. Detailed Steps of System Design

7-03

4. Economic Impacts of System Changes

7-12

References

7-14

I. GENERAL SYSTEM REQUIREMENTS

Digital computers offer new opportunities to the systems planner.
Computers allow development of business information systems characterized by high-speed computation, rapid search, and procedural rigor.
These factors, when coupled with new input and output devices and with
scientific techniques for administrative control, enable design of a truly
effective, integrated information system attuned to the needs of the firm.
The information needs of a firm are not necessarily the output of
present procedures. Current methods are often a patchwork imposed by
machine limitations, supervisory -inflexibility, and reaction to business
emergencies. As a consequence, the information required for policy
guidance and day-to-day operation of the business may not be clearly
reflected by current office activity. Nevertheless, present procedures
provide a starting point for redesign of a business information system.
They picture the way in which the firm is currently operated, reveal the
emphasis presently placed on various aspects of the office work cycle, and
7-01

7.02

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

provide a basis for viewing office costs. With present procedures as a
starting point, the system analyst can work toward a statement of basic
information needs. Initially he will gain only an approximation of such
needs; but this approximation is valuable in judging the feasibility of
computers and choosing among competitive machines.
The impact of information handling on management effectiveness
provides ample justification for careful design of information systems.
An information system should be regarded as a growing thing in which
no final or optimum form is ever achieved. The information output of
the system, once established, should be used to reevaluate and reshape
the information system to serve management purposes better.
2. STAGES OF SYSTEM EVOLUTION

The effective use of computing equipment and management sciences
in meeting the information needs of business is brought about in several
distinct stages. These are (1) analysis of present information flow
patterns, (2) system definition and selection of equipment, and (3) system
implementation. These stages are discussed first in general terms and
then are detailed in outline form.
Analysis of Present Information Flow Patterns. The level of detail
reached in analysis of present procedures is a basic problem. A careful
balance must be sought between cursory survey of current procedures
and detailed recital of clerical operations which may obscure fundamentals. The emphasis should be on the major paths of information
flow rather than on the processing of paper.
Real effort is necessary at this stage to "see through" present procedures and gain insight into their basic structure. Preparation of charts
showing major paths of information flow and important exceptions can
provide insight to planners starting redesign of an information system.
Questions regarding current information flow are much in order. Why?
For whom? What does he do with it? vVhat would happen if he didn't
do it? ,Vhat other information outputs would be desirable if available
when needed at attractive prices? The answers are meaningful in determining the information requirements which underlie present systems.
System Definition and Selection of Equipment. Fundamentals of
present activities are distilled and used to structure an idealized information processing system in this stage. This idealized system serves as
a basis for equipment selection. To choose among competing data
processors, it is necessary to know the kinds and volumes of information
inputs and outputs, size of reference files, frequency of file use, sorting
requirements, and computational formulation. Totaling these elements
for many application areas builds a picture of requirements that data

DESIGN OF BUSINESS SYSTEMS

7-03

processing equipment must satisfy. These requirements can then be
weighed against equipment specifications and costs to choose among
available equipments and to select the most economic basis of acquisition.
System Implementation. Computer system implementation has the
prerequisite of careful problem definition. There must be an absolutely
complete statement of the job to be done. Each step of the procedure
must be explicitly stated with a precision not generally found in business
information handling.
Programming a complex data processing operation is a task for which
firm guides are not yet established. Automatic coding will shorten the
actual job of machine instruction, but automatic coding is no substitute
for the planning that must precede computer application. The system
planner through problem definition must establish the framework in
which automatic coding can be used.
The administrative problems of system implementation are not trivial.
This is particularly true of the transition from one system to another.
Careful advance planning is needed in such areas as file conversions, code
changes, operational cutover, and personnel relocation.
Management Review. The three stages of system evolution take
place consecutively and the completion of each affords an opportunity for
top management review and evaluation. At each stage, understanding
and support at the upper levels of company administration are required
since far-reaching changes in company procedure may prove desirable.
Positive attitudes toward change, particularly in the middle management
group, must be won through both top management support and the persuasiveness of the system planner.
Scope of Study. The number of people and the investment required
in design of an information system vary with the scope of the work
undertaken. For limited areas, system design can be a modest undertaking; but where the total information system of a large and complex
business is under study, the jobs of system design and implementation
rise sharply in magnitude. Yet the design of an information system on
the widest possible basis is important to satisfaction of management
needs and efficient utilization of computer potential.
3. DETAILED STEPS OF SYSTEM DESIGN

The detailed steps of system design are as follows:

1. Analysis of Present Information Flow Patterns
. A. Establish system design program
1. Objectives and scope of study
2. Reporting status of study group

7-04

II.

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

3 .. Group selection on basis of
a. Management perspective
b. Knowledge of company operations
c. Knowledge of information handling technology
B. Review present data processing activities placing emphasis
on:
1. Flow of information within the company
2. Isolation of exceptions to general routines
C. Develop information flow patterns as a basis for system
design. These patterns contain:
1. l\1ajor paths of information flow and important exceptions
2. System parameters for each information processing area
a. Input data
b. Search requirements
c. File maintenance
d. Computation
e. Output requirements
f. Data transmission requirements
D. Analyze information use within the company to discover:
1. Motivation for output of present systems
a. Management decisions
b. Operating practices
c. External requirements
1) Federal, state, and local governments for tax and regu~
latory purposes
2) Independent auditors
3) Equity and credit financing
4) Security exchanges
2. Needs not met by current procedures
3. Time factors bearing on usefulness of information
E. Measure present costs in data processing areas
F. Determine basic direction of further systems study
1. Basic technical and economic feasibility of electronic data
processing
2. Practical levels of automaticity in data processing
3. Potential for operations research tools
System Definition and Selection of Equipment
A. Develop specifications for a business information system in
which:
1. Information needs of management for policy guidance and
operational control are adequately met

DESIGN OF BUSINESS SYSTEMS

7-05

2. Computational and search abilities of electronic computers
arc employed where useful
3. Applicable operations research techniques are employed
4. Related data processing activities are integrated
B. Project system requirements against various general purpose
and special purpose computers. Determine the system implications of each data processor and its auxiliaries in terms of:
1. Equipment items necessary
a. Computing equipment
b. Input and output devices
c. Communications equipment
d. Data conversion equipment
2. Operating personnel required
a. Input transcription clerks
b. Machine operators
c. Clerical workers
d. Maintenance crews
3. Information output of the system
C. Select equipment on the basis of:
1. System implications stemming from use of equipment items
in various combinations
a. Information outputs
b. Automaticity of data handling operations
c. Capacity for growth in volume of data and system complexity
2. Machine characteristics
a. Computing equipment
1) Compatibility with various input and output equipments
2) Machine logic and speed
3) Status of programming development
4) Error detection and correction features
5) User experience
6) Availability of computer, auxiliaries, and spare parts
7) Manufacturer training facilities for programmers and
maintenance personnel
8) Manufacturer reputation and financial responsibility
b. Auxiliary storages
1) Sequential access: magnetic tapes
2) Random access: drums, disks, etc.
3) Extent of buffering

7-06

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

c. Input and output devices
1) Compatibility with computing equipment
2) Program features
3) Operation speed
4) Reliability
5) Extent of automatic input sensing
6) Input verification features
7) Extent of buffering
d. Communications equipment
1) Kind of data transmission (i.e., keyboard, page copy,
teletype tape, punched cards, magnetic tape)
2) Kind of data receipt
3) Program features
4) Transmission speed
5) Transmission reliability
6) Selection and switching features
e. Data conversion equipment
1) Speed of conversion
2) Program features
3) Reliability
3. Economic factors
a. Projected cost reductions, if any
b. Value of improved information output
c. Equipment, programming, and transition costs
d. Rate-of-return calculations to determine desirability of
equipment acquisition and whether purchase or rental is
most economical
D. Verify key system "design assumptions and capabilities of
selected equipment
1. Develop selected routines and computer test critical runs
2. Confirm estimated usefulness of library routines and autorna tic coding
3. Validate computer timing estimates on the basis of tests
III. System Implementation
A. Organize implementation effort
1. Select and train personnel for detailed system design and
operation
a. Supervisors
b. Analysts versed in business systems, statistics, or operations research
c. Programmers
d. Operating technicians

DESIGN OF BUSINESS SYSTEMS

7-07

e. Maintenance engineers and technicians (if required)
2. Establish implementation group
a. Resolve reporting status to senior management
b. Provide for coordinating decisions which cut across departmental lines
c. Announce system implementation effort to company employees
d. Set up group administration
1) Group leadership
2) Working level contacts throughout the company
3) Organization of balanced teams containing system
analysis skills, programming knowledge, statistical
know-how, and operations research experience in model
building and optimization
B. Plan equipment acquisition
1. Contract arrangements
a. Delivery of computer and other data processing equipment
b. Training arrangements
c. Maintenance contracts
d. Legal and tax implications of contract terms
e. Acceptance tests on customer site
f. Insurance on equipment
2. Site preparation
a. Space for computer, auxiliaries, and staff
b. Communications facilities
c. Power
d. Air conditioning as required
e. Special housings as required
3. Purchase of spare parts and test equipment if necessary
C. Set priorities for implementation of various application areas
D. Define input, output, data processing, and data transmission
requirements within each application area through:
1. Further development of system requirements and their adaptation to the specifics of the selected equipment
2. Formulation of policy and operating decisions which will
meet management objectives and contribute to effective
system design
3. Coordination of policy and operating decisions within the
company
4. Development of models reflecting company operation for
study of:
a. Interdependence of operating variables within the firm

7-08

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

E.

F.

G.

H.

b. Optimization of cost, service, or production objectives
c. Intra-firm communications
Design procedures for auxiliary equipment
1. Input engineering
a. Forms design
b. Explicit procedures for completing each input document
c. Equipment programming for keypunches, typewriter tape
punches, etc.
2. Communications engineering
3. Programming of conversion devices required by the system
4. Design of system outputs
Program computer operations
1. Broad computer planning: process charts projecting computer runs
2. Specification of computer logic through block diagrams
3. Detailing of exact procedural steps through computer flow
charts
a. Use of automatic coding techniques
b. Basic computation routines
1) Problem formulation routines
2) Error detection routines
c. Housekeeping routines
1) Input routines
2) Output routines
3) Rerun procedures
4. Preparation of machine instructions by computer coding
Debug computer routines
1. Prepare sample problem for each routine which tests flow
chart branches and uses subroutines
2. Hand compute answers to sample problem and contents of
selected storage locations
3. Run sample problem and compare with hand computations
4. Analyze computer routine if computer hangs up or if computer calculations are in error
a. Stop computer at preselected check points
b. Read out selected storage locations and compare with
expected contents
c. Correct routines where errors are discovered
Debug system operation by running individual routines successively as planned in actual use
1. Combinations of routines with test data
2. Parall~l operation with existing system

By employee
I------:)~

Labor
Distribution
Accounting

o

m

til

(j)

Totals

Z

o

"T1

nsurance funds
Stock purchase fund
Disbursements Bond accruals
Union dues
Federal withholding and FICA taxes
Prepare
Community service fund
Meal tickets
Transfer of funds

r+-

~

W-2 (yearly)
State tax withheld (yearly)
Earnings
subject to FICA
{
and UC taxes (quarterly)
Tax reports

tD

C

~

Z

m

til
til
til

-<
til

-t

m

~

til

Provides FICA cutoff

FIG.

1.

A payroll procedure chart which emphasizes information flow.

.....
b

..0

7-10

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

1. Plan transition to new system operation
1. Train personnel in new duties
2. Phase over to new procedures
a. Preparing records in the form required by the new system
b. Converting to new codes and designators where necessary
c. Adjusting to policy changes embodied in the new system
d. Labor scheduling to provide for expanding work load
during changeover
e. Scheduling of equipment operation
3. Relocation of personnel as older procedures are superseded
J. Evaluate system operation
1. Utilization of information outputs
2. Analysis of exceptions requiring manual handling
a. Input errors
b. Unplanned occurrences
3. Programming inefficiencies
4. Programming errors
5. Justification of various special handling routines through
analysis of their use
K. Research further into information needs and the means of satisfying them
EXAMPLE. Charting techniques are helpful in both setting down
present information flow patterns and defining system requirements as
a basis for machine selection. A payroll example will be used to illustrate the procedure.
Existing System. Figure 1 charts information flow in a public utility
payroll procedure. The figure represents an existing system before redesign in the light of computer potentials. It is intended to show major
paths of information flow and to deemphasize paper handling.
The operations and controls noted by the system analyst are shown.
Key-driven payroll accounting machines were used in the procedure and
the characteristics and limitations of this equipment are reflected in
Fig. 1. Consequently, a computer system would not necessarily duplicate the processing shown. Figure 1 should be considered as providing
raw material for redesign of the information system.
Redesigned System. Figure 2 suggests redesign for three related areas:
personnel records, payroll, and labor distribution. From the standpoint
of present information flow these areas are separate procedures, each
under different administrative control. These related areas have been
integrated as one stOep of system definition. Figure 2 should not, however,
be interpreted as specifying computer processing. The processing indi-

W-2(yearI Y)
State taxes withhetd (yearly)
Earnings
subject to FICA
{
and UC taxes (quarlerly)

~~:~~~:~Of:~ShistOry

!

}

Service pin and birthday notices
t-----:)~ Overtime and absentee records
(by employee and department)
Strength totals by organizational
element

PERSONNEL
RECORDS

o

m

til

Paychecks
Check register
Accounting control information
Accounts payable disbursements
Insurance
Stock purchase
Bonds
Union dues
Taxes
Community service fund
Meal tickets
Transfer of funds

(i)
Z

o

PAYROLL

"

OJ

C

~

Z

m

til
til
til

-<
til

-i

m

3:

til

LABOR
DISTRIBUTION

Labor Charges to Work
Authorizations and
Production orders

FIG.

2. A broad view of information processing in three related areas.

......
I

7-12

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

cated should be modified in the light of eventual equipment selections.
Rather, Fig. 2 provides an idealized system as a starting point for equipment evaluation.
4. ECONOMIC IMPACTS OF SYSTEM CHANGES
Economic Evaluation. The decision to acquire a computer and associated data processing equipment is very largely a dollar and cents matter.
Both reduction of clerical costs and the value of better information can
be used to estimate the net dollar effect of computer system utilization.
This net figure results from considering all cash costs incurred in computer system operation and all benefits which result. The flow of cash
over the useful life of the system allows the desirability of computer
acquisition to be measured in definitive terms.
Return on Investment. Computers and allied equipment represent
just one area in which management may have opportunity for investment.
Acquisition of data processing equipment must compete for funds with
other worth-while projects within the firm. This acquisition can be
judged in terms of rate of return on invested capital. Installing a computer system through either rental or purchase necessitates a considerable
investment. The return on this investment is calculated from the cash
flows generated through system use. This analysis requires an assumption of useful life for the computer, associated equipment, and computer
routines. An estimate of useful life for these elements plays an important role in economic analysis. While computer routines may undergo
substantial revision after operational experience is gained with the computer system, the computer itself should have relatively long life. It does
not matter if cheaper, more powerful, or otherwise more enticing machines
are developed; a given computer can provide productive service over an
extended period. Estimates of useful computer life range from five to
fifteen years with the writer tending to accept the higher figure as a
reasonable estimate.
Another important factor in economic analysis is the depreciation of
capitalized facilities taken for tax purposes. Such depreciation makes
possible an estimate of the net cash effect of the system over the useful
life of the system. This net cash after taxes allows computation of the
rate of return on the project. The rate of return on invested capital is
defined as the rate at which future earnings of a project must be discounted so that their present worth equals the investment. Such analysis
provides a sound basis for evaluating the economic desirability of computer acquisition. Choices among competitive machines and between
rental and purchase are facilitated through comparison of rates of
return on invested capita!.

TABLE

1.

RATE-OF-RETURN CALCULAT ONS FOR EQU PMENT PURCHASE AND RENTAL

Out-of-Pocket I nvestmenl
A.

B.

Equipment Purchase

Equipment cost
Programming and transition costs
Site preparation and additional capitalized costs
Income tax saving through expensing of programming and transition cost

$ 700,000
400,000
100,000
$1,200,000
~o,ooo

Equipment Rental

Programming and transition cost
Site preparation and additional capitalized costs

Income tax saving through expensing of programming and transition cost

$1,000,000

$400,000
100,000
$500,000
200,000
$300,000

-1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
a

Calculated by

P

m

(J')

(j)
Z

Rates of Return

I terns Determining Cash Flow
Out-of-pocket investment in data processing equipment, computer routines,
and other costs
Net annual cost reduction before cost of equipment maintt~ance
Less equipment rental (including maintenance)
Less depreciation on equipment, site, and other capitalized costs
Less cost of equipment maintenance
Net taxable savings
Income tax, 50% of item 6
Added annual cash generated (item 2 minus items 3, 5, 7)
Pay-back period (length of time needed to get the out-of-pocket investment
back-item 1 divided by item 8)
Return on investmenta

o

o

A. Equipment Purchase

B. Equipment Rental

"T1

Life of System
Five Years Ten Years

Life of System
Five Years Ten Years

C

$1,000,000
$ 325,000

81,000,000
$ 325,000

8300,000
$325,000
220,000
20,000

8300,000
$325,000
220,000
10,000

160,000
60,000
$ 105,000
52,500
$ 212,500

80,000
60,000
$ 185,000
92,500
$ 172,500

$ 85,000
42,500
$ 62,500

$ 95,000
47,500
$ 57,500

4i years

5i years

4i years

2%

12%

12%

51 years
15%

OJ

~

Z
m
(J')

(J')
(J')

-<
(J')
-t

m

~

(J')

=!r (1-~)
enr '

where P is the pay-back period, n the number of years of economic life, and r the per cent return on investment.

';'"
w

7-14

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

EXAMPLE. Table 1 contains sample rate-of-return calculations. These
have been determined for equipment rental and purchase under two
assumptions of system useful life. Several simplifying assumptions have
been made for illustrative purposes: level rather than accelerated depreciation, equal useful life for all system elements, income tax at 50 per
cent, equal annual savings over the useful life of the system.
These rates of return, when viewed with the amount invested in system
implementation, allow management to make knowledgable decisions
about the desirability of equipment acquisitions.

REFERENCES
1. W. D. Bell, A Management Guide to Electronic Computers, McGraw-Hill,
New York, 1957.
2. R. G. Canning, Electronic Data Processing in Business and Industry, Wiley,
New York, 1956.
3. R. G. Canning, Installing Electronic Data Processing Systems, Wiley, New
York, 1957.
4. C. W. Churchman, R. L. Ackoff, E. L. Arnoff, et al., Introduction to Operations
Research, Wiley, New York, 1957.
5. M. P. Doss, Editor, Information Processing Equipment, Reinhold, New York,
1955.
6. L. H. Hattery and G. P. Bush, Editors, Electronics in Management, The
University Press of Washington, D. C., 1956.
7. I. A. Herrmann, Office Methods, Systems and Procedures, Ronald, New York,
1950.
8. G. Kozmetsky and P. Kircher, Electronic Computers and Management Control,
McGraw-Hill, New York, 1956.
9. H. S. Levin, Office Work and Automation, Wiley, New York, 1956.
10. D. D. McCracken, Digital Computer Programming, Wiley, New York, 1957.
11. F. Wallace, Appraising the Economics of Electronic Computers, Controllership
Foundation, New York, 1956.
12. C. C. Gotlieb and J. N. P. Hume, High-Speed Data Processing, McGraw-Hill,
New York, 1958.

c

THE USE OF DIGITAL COMPUTERS
AND DATA PROCESSORS

Chapter

8

Accounting Applications

I. Life Insurance Accounting, by A. C. Vanselow and R. L. VanWinkle
2. Casualty Insurance Accounting, by L. L. van Oosten
3. Public Utility Customer Billing, by E. D. Cowles
4. Payroll and Salary Distribution, by H. Tellier

8-01
8·08
8-11
8-15

I. LIFE INSURANCE ACCOUNTING

A. C. Vanselow and R. L. VanWinkle
Overall System Description

A centralized life insurance accounting system requires speed in
processing large volumes of data for the preparation of all reports and
records generated for many policyowners and agency representatives.
These reports are a result of the combination of a brought-forward file
and new input data.
To handle such applications as premium billing, premium accounting,
dividend accounting, agents' commission accounting, and valuation of
policy reserves with maximum efficiency requires an integrated data
processing system.
Franklin Life's integrated system is built around a master tape file
of 240 digit items and a name and address tape file of a variable item
size with basic items of 120 digits. These two files replace five major
punched card files, an Addressograph system of 650,000 plates, and seven
ledger and index card files.
Equipment. The equipment employed for the integrated data
processing consists of: 1 large data processor (Univac I), 18 typewriter
8-01

8-02

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

inputs for magnetic tapes (Unitypers) , 12 magnetic tape units (includes
2 for high-speed printers), 2 high-speed printers (600 lines/minute).
Installation and Operation. The planning and preparation of the
programs necessary to convert our entire system to E.D.P. required 504
man-months. This was accomplished by 14 men. Five persons attended
computer manufacturer's programming courses. The data processing
system is used 580 hours per month for production and debugging.
Scheduled and unscheduled downtime are 13 per cent and 3 per cent,
respectively.
The operating staff required for the integrated system consists of 4
analysts, 10 programmers, 4 operators, and 12 maintenance personnel.
Master Tape File

The master file contains 20 Univac words for each policy item. This
includes all the policy data necessary for the five major accounting systems except the policyowner's name and address, which is maintained
on a separate tape file. The sequence of the master file is policy number
within each premium billing due day (1-31 inclusive).
There are many policy changes, including premium payments, terminations, data changes, policy loans, partial surrender of dividends or
coupons, and new business, each reflecting a change in the status of the
policy. Daily application of all such changes to the entire tape file,
approximately one hundred twenty reels of 6000 items each, is not justified economically. As a result, accumulated changes are applied for
a particular due day on a monthly cycle basis when the due day is
scheduled to be processed for the selection of premiums due for billing,
dividends, policy loan interest, etc.
All policy changes are unityped daily and verified. The verified tape
is purified for legitimate coding and merged with the previous accumulated change file simultaneously selecting off all changes for the due day
to be processed. These changes are then applied and the master file is
now current. Updating the master file for one particular due day takes
about 30 minutes to process external changes. Total time spent each
month in updating the entire file is approximately 20 hours.
Dividend Accounting

The following is a description of the dividend accounting procedure.
Objectives. The dividend accounting system is designed to calculate
the amount of current dividends and coupons, calculate interest on the
savings fund, prepare dividend checks, and record which of the five
dividend options a policy owner has chosen each year. The options

ACCOUNTING APPLICATIONS

8-03

are: (1) part payment of premium due, (2) purchase of additional
paid-up insurance payable at maturity or death, (3) deposit with the
company as an interest-bearing savings account, (4) shorten the premium
paying period, (5) cash.
In contrast to most life companies, Franklin allows the policyowner
to make this selection with each dividend payment. Our system is unique
in that we prepare in excess of 1200 checks daily for the majority of the
current dividends which are mailed to our agency representatives for
delivery to the policy owner. All checks are returned directly to the
home office for processing with the selected option indicated except those
which are cashed. Certain plans of insurance contain coupons which
are guaranteed endowments and are credited to the policyowner's account
automatically at the rate of 600 items daily as an interest-bearing fund
subject to the clipping of the coupons in the policy if the cash is desired
when earned.
Input and Output.

1. Input.
a. Master file magnetic tape.
b. Data on dividend options on magnetic tape (prepared by. Unityper, electric typewriter to magnetic tape).
c. Supervisory control panel type-in: check numbers.
2. Outputs.
a. Magnetic tape, new master file dividend, coupon result tape.
b. Printed reports.
Major Processing Steps.

1.
2.
3.
4.
5.
6.
7.
8.

Determine if dividend and/or coupon is due.
Calculate dividend and/or coupon.
Prepare dividend, coupon item.
Determine if dividend and/or coupon interest earned.
Calculate dividend and/or coupon interest earned.
Prepare output tapes using name and address file.
Accumulate control totals.
Print out reports.

Quantity of Data Processing Performed.

A. Input and output.
1. Input.
a. 181,440,000 digits of information stored in master file.
b. 103,680,000 digits of information stored in name and address
file.
2. Output.
a. 5,685,000 digits printed.
b. 6,500,000 digits recorded on magnetic tape.

8-04

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

B. Each day's portion of the master file is processed as a self-contained
group; daily result tapes are processed when eight days' tapes have
been accumulated.
C. File storage requirements.
1. Magnetic tape master file contains 120 reels, 6000 items per reel,
and twenty words per item.
2. High-speed storage.
a. 300 words temporary Btorage.
b. 700 words of program storage.
Processing Steps Performed in Dividend Accounting
Selection of Dividends and/or Coupons Due.

1. Check for presence of dividendi coupon code. Absence of dividend
coupon code will cause computer to proceed to next policy.
2. If code present, examine policy issue year to determine if policy
is old enough to earn a dividend or a coupon.
3. If policy is old enough, is dividend or coupon due the current
working month?
4. If dividend due, determine if policyowner has returned previous
dividend for deposit as an interest bearing savings fund.
5. If deposit field is negative, an error has occurred and the master
item key is written out for manual checking.
6. If deposit field is zero, no interest is due.
7. If deposit field is positive, calculate interest earned.
a. Store interest amount for future notification to policyowner.
b. Add interest to amount of deposit and return to storage to be
inserted into new master item.
8. Write new master item on new master tape (also, retain in storage).
9. Calculate the dividend or coupon duration year.
10. Prepare from the new master item a dividendi coupon item.
a. Indicative information.
b. Dividend interest earned.
c. Amount of insurance.
d. Coupons and interest on deposit.
e. Paid-up additions on deposit.
11. Write dividendlcoupon item on a result tape.
12. This procedure is repeated for each policy on each tape for the
selected due day.
13. The result tapes are retained for a period of eight days as an arbitrary procedure to save computer time.
14. The eight tapes are then sorted by the key (fund, mortality table,
duration year, kind of policy, and age at issue).

ACCOUNTING APPLICATIONS

8-05

15. The key of the sorted dividend/coupon items is matched for equality against the dividend rate index.
16. If equality is not found, the item is written out for manual coding
of an index item so that the dividend/coupon can be run through
the next eight-day cycle.
17. When equality is found, is a dividend, a coupon, or both earned?
18. If a dividend is earned, calculate the current dividend earned and
the amount of additional paid up insurance this dividend would
purchase.
19. If a coupon is earned, calculate the current coupon earned.
20. If previous coupon and interest on deposit, add to current coupon
and calculate one year's interest.
21. If no previous coupon on deposit, calculate one year's interest on
the current coupon.
22. Prepare and write out' an item on the qividend/ coupon result
tape.
23. The result tape of dividends and coupons are now sorted by their
new key which is due day and policy number.
24. Match this sorted result tape with the policyowner's name and
address file for a selected due day.
25. When equality is found with the name and address file prepare
output tapes with items:
a. Outstanding dividends.
b. Dividends, coupons, and interest due.
c. Dividends, coupons, and interest not due (d~e days other than
selected, controlled by name and address tapes).
d. Dividends.
26. If equality is not found, follow same procedure with no name and
address on the dividend check (manually typed).
27. Accumulate totals for dividend amount, coupon amount, interest
on coupons, and interest on dividends.
28. Assign a check number to each dividend check (controlled by supervisory control panel type-in).
29. The accumulated totals are entered at the end of the dividend,
coupon, and interest due tape.
30. The tape of dividends, coupons, and interest due is listed on the
high-speed printer for the check register.
31. The dividend total on check register represents the amount of the
checks written and is used as the basis to prepare manually a check
requisition.
32. Coupons, interest on coupons, and interest on dividends are automatically placed on deposit for the policyowners by manually

8-06

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

preparing a journal voucher from totals printed on the check
\
33. List the dividend checks on the high-speed printer.
34. Manually select all dividend checks with a permanent option
indicated.
35. All other dividend checks are mailed to the agency representatives
for delivery to the policyowners.
Permanent options are dividends which are automatically placed on
deposit at the request of the policyowner. Checks are prepared with
"Void" in the amount so they may be processed in the same manner as
returned checks.
Specific conditions require that certain options are not available, therefore, a series of X's is printed on the check form in this option field. For
example, the premiums paid by bank draft, salary deduction, government
allotment, or any automatic premium payment plan, special authorizations are necessary each time the amount is changed; therefore, the
option of applying the current dividend to reduce the next premium payment is deleted.
The calculation of the dividend and coupon interest is different because
the dividend is credited at the beginning of the policy year whereas the
coupon, the coupon interest, and dividend interest are credited at the
end of the policy year.
Processing Returned Dividend Checks and Automatic Option
Voided Checks. This procedure is for the voided permanent option
checks, the checks returned from the policyowner with a selected option,
and the cashed checks returned from the bank.
1. Tally checks by selected option code with an adding machine.
2. Attach adding machine tape to each group of returned checks.
3. Unitype 20 digits of information for each check.
a = check number
b = policy number
c = selected option code
d = amount of dividend
4. U nitype selected option code control totals from attached adding
machine tape into the first sentinel item.
5. Tally unityped tapes on Univac by selected option code and balance with control totals in sentinel block.
6. If there is no balance, a manual determination must be made as to
whether the checks must be re-unityped or the error is of a nature
which will later be detected by Univac and ejected.
7. If the checks balance or it is decided to continue the processing
reg~~~

ACCOUNTING APPLICATIONS

8.
9.
10.
11.

12.

13.
14.

15.

16.

17.

18.
19.

20.

8-07

of the checks which are out of balance, they are now sorted by
check number and policy number.
J.YIatch the sorted returned checks against the outstanding check
file by check number and policy number.
If no equality is found with the returned check items, they are
rejected for manual consideration due to a unityping error.
If no equality is found with the outstanding items, they are tested
for determination as to whether six months outstanding.
If the checks have been outstanding six months, they are removed
from the outstanding check file and classified as an "automatic
transfer."
These automatic transfers are credited by Univac to be left on
deposit as an interest-bearing savings or to purchase additional
paid up insurance contingent upon the provisions of the policy
contract, whether Franklin or of a company acquired by Franklin.
The automatic transfers are tallied by option code and written on
the same result tape as the returned checks.
If the checks have not been outstanding six months, but are 90
days outstanding, they are written on a follow-up tape and the
new outstanding file. Follow up notices are run on all checks
outstanding over 90 days reminding the policyowner to return
the check to the home office with a selected option indicated or
to cash it.
If the outstanding checks are not 90 days out5tanding, they are
written on the new outstanding check file.
If equality is found with returned check and the outstanding check
items, the outstanding is selected for further processing and written
on the dividend result tape.
When the match and select run is completed, the dividend result
tape is tallied by trial balance account (determined by the dividend option) within state, county, and fund and added to the
previous dividend liability summary tape for the year to date.
The dividend result tape is listed for a detailed listing of transactions.
The next program contains four input tapes:
a. Monthly coupon liability brought forward.
b. Unityped dividends and coupons surrendered.
c. Current day dividend and coupon interest and coupons.
d. Returned dividend checks and automatic transfers.
The current coupons and surrenders of dividends and coupons are
tallied by trial balance accounts within state, county, and fund.

8-08

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

21. These tallies are added to the coupon liability summary file tape
preparing a new summary tape.
22. At the same time mast~r file change items are prepared:
a. Dividends and coupons surrendered.
b. Coupon interest and coupons.
c. Returned dividend checks and automatic transfers.
These changes will be merged into the accumulated master change file
to be applied to next billing cycle by due day.
23. The dividend liability and coupon liability tapes are merged and
summarized monthly producing figures to be used in the annual
statement.
2. CASUALTY INSURANCE ACCOUNTING

L. L.

van Oosfen

Introduction

Casualty insurance accounting requires the rapid generation of many
reports. These reports are generated by combining brought-forward data
with those on source documents representing premiums, losses, and
expense. In the past, cards representing the source documents were
punched and balanced at each of Allstate's 28 branch offices. These cards
were sent to the zone office (there are five zones) for summarizing and
balancing and these summary cards were then sent to the home office.
These summary cards were used then as inputs to punched card machines
to develop the necessary reports.
To provide the smallest changeover transient and retain the desirable
features of the punched card system and yet take advantage of electronic
data processing machines it was decided to. keep the above method of
providing inputs and do the final processing with a stored program electronic data processor. Thus orice the summary card information has
been fed into the data processor, one pass produces the desired report~,
comparisons, and ratios. This one pass does the job formerly requiring
many passes through different types of punched card equipment.
Remarks on Overall System

The data processor used in this installation is a Datatron. It has a
4080 word storage, an IBM 528 reproducer for punched card input, an
optical tape reader (540 decimal digits/second) for punched paper tape
input, an IBM 407 line printer for output, and three magnetic tape drives
for auxiliary storage. Each tape drive holds a 2500-foot reel of magnetic
tape on which can be stored 4,000,000 decimal digits grouped in 20,000
blocks of 200 digits each.
The planning and preparation of the first ten programs was accom-

ACCOUNTING APPLICATIONS

8-09

plished by five men, four of whom attended a two-week. programming
course provided by ElectroData. This group then trained four men in
programming and these men do any programming required now. The
computer system is currently used approximately 230 hours per month
and is operated by a staff of three operators and two service engineers.
During 1955 there was 1.7 per cent unscheduled down time and about
7 per cent scheduled down time. The figures for 1956 are 3 per cent and
3 per cent respectively.
The accuracy of the Datatron system is greater than any other method
ever used by Allstate to accomplish the same results. This does not mean
that other equipment is necessarily inaccurate. However, by obtaining
required results from one system capable of doing all the work. involved
in reporting instead of using many machines, plus several manual operations, the vulnerability to transpositions, sorting errors, lost cards, etc.,
is greatly reduced.
Application Example

1. The System. The following is a description of how one of Allstate's reports is prepared with the Datatron. The name of the
report is "Analysis of Claims Closed by Duration."
A. This report is an analysis by branch of the claims closed during
a given accounting month by claim report month, that is, the
months in which the claims were originally reported. The
past history of the claims closed for these report months is
combined with the current closed claims to provide management with experience for the report months on a to-date basis,
a 12-month moving average basis, and a 12-month-to-date
moving average basis. Only claim cards are used in this
particular report with no comparison to policies written.
B. Input and output.
1. Input.
a. Magnetic tape. Brought forward information from previous report. Stored by branch.
b. Punched cards. Claims closed for current accounting
month and closures for the accounting month one year
prior to current month.
2. Output.
a. Magnetic tape. Carry forward information for next
period report.
b. Printed report on IBM 407 line printer.
C. Maj or processing steps.
1. Punched cards are sorted together by branch code only.

8-10

USE OF DIGITAL COMPUTERS AND DATA PROCESSORS

2. Punched cards are read into the computer by an IBM 528.
3. Brought forward information is read from magnetic tape
and adjusted by the information in the punched cards.
4. Calculated report is printed out directly on the IBM 407.
5. New carry forward information is created and stored on
magnetic tape. Each block of data is summed, stored on
tape, and checked for control purposes on future reports.
II. Quantity of Data Processing Performed.
A. Input and output.
1. Input.
a. 4000 cards (as noted, sorted by branch only).
b. 21,840 digits of information stored on magnetic tape in
order by branch.
2. Output.
a. 174,720 digits printed.
b. 218,400 digits recorded on tape.
B. Each of 26 branches is processed as a self-contained group.
Within each branch there are five possible coverages (A, B,
C, D, H). Coverages A and C are further broken down by
24 report months, coverages B, D and H by 12 report months.
C. File storage requirements (one word equals ten digits and sign).
1. Tape. 840 computer words for each of 26 branches for the
brought forward and also for the carry forward, or a total
of 1680 words for each branch.
2. Computer proper, for each branch.
a. 840 words to store brought forward.
b. 840 words to store information taken from the cards.
c. 672 words to store the computations.
III. Processing Steps Performed.
A. The program deck in the form of punched cards is read into
the computer and a check sum or total of the program codes
is created.
B. "Digit add" the current accounting month, used to check if
correct decks are being used.
C. Punched cards are automatically read into computer in groups
'
of 60 by the IBM 528.
D. Control totals are read onto the drum from the beginning of
the brought forward magnetic tape and checked. Later they
are used to check the brought forward for each branch.
E. After reading in the 60 cards on the drum, each card is tested.
1. If there is a change in branch in the group of cards just

ACCOUNTING APPLICATIONS

8-11

read, the magnetic tape is searched for brought forward
information.
2. If all cards are for the same branch as previously read in,
the coverage and report date determine where the information is accumulated on the drum (pseudo sorting).
3. \Vhen the last card of a branch being processed is sensed,
the brought forward information is read onto the drum from
magnetic tape and checked against the control total stored
on the drum at the beginning of the job (III, D). The
carry forward tape is in position for storage of the new
carry forward. Calculations are performed, report is printed
out, new carry forward information is rearranged for use
next month, and then stored on magnetic tape. The carry
forward information is then read back onto the drum and
checked against the control total.
F. At end of each run the control totals are recorded on the new
carry forward tape with a check sum. The information thus
stored on magnetic tape then becomes next month's brought
forward.
Within the computer, sorting as explained in III, E, 2 is done. Eleven
averages are also computed for each line of the report (924 for each
branch). Tapes are searched, read from, and written on.
Total time is 4 hours of which 4.3 minutes are used in reading and
writing from tape.
Data on tape are stored so that for anyone branch one read order
brings in all the information needed and in the form needed. The calculations are stored so that only five output instructions will cause all
the calculations to be printed in the proper form.

3. PUBLIC UTILITY CUSTOMER BILLING

E. D. Cowles

Note. This section describes the billing operations at The Detroit
Edison Company in effect from 1955-1957. Conversion to IBM 705 was
started in March 1957, and was completed in l\1ay 1958. This description is still valid for systems requiring only a medium speed machine.
1. Task Performed.
A. General Description of Task. Every public utility has the
job of preparing customer billing. This description of customer
billing at the Detroit Edison Company is an example of data
processing in a public utility. The meters are read, a calculation is performed to determine each customer's use, then com-

"'