Adding Features to the Report Program ������������������������������������������������������������������������������������������������������������ 488
Adding More Features to the Report Program ��������������������������������������������������������������������������������������������������� 493
Report Writer Declaratives ��������������������������������������������������������������������������������������������������������������������������������� 499
Report Writer Syntax and Semantics ����������������������������������������������������������������������������������������������������������������� 499
Special Report Writer Registers ������������������������������������������������������������������������������������������������������������������������� 507
PROCEDURE DIVISION Report Writer Verbs �������������������������������������������������������������������������������������������������������� 507
Declaratives�������������������������������������������������������������������������������������������������������������������������������509
Using Declaratives with the Report Writer ��������������������������������������������������������������������������������������������������������� 509
Using Declaratives with Files ���������������������������������������������������������������������������������������������������������������������������� 511
Summary �����������������������������������������������������������������������������������������������������������������������������������512
Introduction �������������������������������������������������������������������������������������������������������������������������������512
File Descriptions ������������������������������������������������������������������������������������������������������������������������513
Print Specification ���������������������������������������������������������������������������������������������������������������������513
Chapter 19: OO-COBOL
■
���������������������������������������������������������������������������������������������������519
Module Strength and Module Coupling �������������������������������������������������������������������������������������519
Informational-Strength Modules in COBOL �������������������������������������������������������������������������������521
OO-COBOL ���������������������������������������������������������������������������������������������������������������������������������523
The UseDictionary Program ������������������������������������������������������������������������������������������������������������������������������� 523
The Dictionary Class ������������������������������������������������������������������������������������������������������������������������������������������ 525
xix
■ Contents
A Formal Introduction to OO-COBOL ������������������������������������������������������������������������������������������528
Objects, Classes, and Methods �������������������������������������������������������������������������������������������������������������������������� 528
Programming with Objects �������������������������������������������������������������������������������������������������������������������������������� 529
Registering a Class ������������������������������������������������������������
�������������������������������������������������������������������������������� 529
Declaring Object References ����������������������������������������������������������������������������������������������������������������������������� 529
Sending Messages to Instance Objects ������������������������������������������������������������������������������������������������������������� 530
Creating a New Object Instance ������������������������������������������������������������������������������������������������������������������������ 530
Destroying Objects �������������������������������������������������������������������������������������������������������������������������������������������� 531
Predefined Object Identifiers ����������������������������������������������������������������������������������������������������������������������������� 531
Writing Your Own Classes ���������������������������������������������������������������������������������������������������������������������������������� 532
The Issue of Scope �������������������������������������������������������������������������������������������������������������������������������������������� 534
Summary �����������������������������������������������������������������������������������������������������������������������������������539
Index ���������������������������������������������������������������������������������������������������������������������������������547
xx
About the Author
Michael Coughlan is a lecturer in the Department of Computer Science and
Information Systems at the University of Limerick, Ireland where he teaches
e-business, legacy systems, and business oriented programming languages. He has
been responsible for teaching COBOL to University of Limerick students since 1980.
Michael wrote the COBOL quick reference for the book Year 2000 in a Nutshell
by Norman Shakespeare (O’Reilly, 1998), and he created the free online learning
resource for COBOL at www.csis.ul.ie/COBOL. This resource is used by students and instructors all over the world, and notes from the website have been translated
into a number of languages.
Taught by Cistercian monks in the Knockmealdown mountains of County
Waterford, Michael received a B.A. (Mod) in History from Trinity College Dublin, a
Graduate Diploma in Computing from the University of Limerick, and an M.Sc. in
Information Technology from the University of Ulster.
xxi
About the Technical Reviewer
Massimo Nardone holds a Master of Science degree in Computer Science from the
University of Salerno, Italy. He worked as a PCI QSA and senior lead IT security/
cloud architect for many years, and currently he leads the Security Consulting
Team for Hewlett Packard Finland. With more than 19 years of work experience in
SCADA, cloud computing, IT infrastructure, mobile, security, and web technology
for both national and international projects, Massimo has worked as a project
manager, software engineer, research engineer, chief security architect, and
software specialist. He worked as visiting lecturer and supervisor for exercises
at the Networking Laboratory of the Helsinki University of Technology (Helsinki
University of Technology TKK became a part of Aalto University) for the course
“Security of Communication Protocols.” He holds four international patents
(PKI, SIP, SAML, and Proxy areas). This book is dedicated to Pia, Luna, Leo, and
Neve, who are my reasons for living.
xxiii
Acknowledgments
Special thanks go to Steve Anglin, who started the whole process of my writing this book, and to Matthew Moodie, Anamika Panchoo, Melissa Maldonado, and Massimo Nardone, the team of editors at Apress whose work was so
invaluable in shaping the text. I would especially like to thank Tiffany Taylor for her excellent suggestions and for all her work in eliminating my errors. Any errors that remain are my responsibility, but without her help, there would be many more of them.
I thank my family for all their support. I thank Redmond O’Brien, who acted as a patient sounding board for ideas, and Dermot Shinners-Kennedy, for our discussions about COBOL. The results of those discussions find many a reflection in this book. Finally, I thank Annette McElligott (HOD) for her support and encouragement in this endeavor.
Thanks also are due to Bill Qualls and Caliber Data Training for granting permission to use their BigDecimal Java example program.
The following acknowledgment is from American National Standard Programming Language COBOL, X3.23-1985: Any organization interested in reproducing the COBOL report and specifications in whole or
in part, using ideas taken from this report as the basis for an instruction manual or for any
other purpose is free to do so. However, all such organizations are requested to reproduce this
section as part of the introduction to the document. Those using a short passage, as in a book
review, are requested to mention ‘COBOL’ in acknowledgment of the source, but need not
quote this entire section.
COBOL is an industry language and is not the property of any company or group of
companies, or of any organization or group of organizations.
NO warranty, expressed or implied, is made by any contributor or by the COBOL Committee
as to the accuracy and functioning of the programming system and language. Moreover, no
responsibility is assumed by any contributor, or by the committee, in connection therewith.
Procedures have been establi
shed for the maintenance of COBOL. Inquiries concerning
the procedures for proposing changes should be directed to the Executive Committee of the
Conference on Data Systems Languages.
The authors and copyright holders of the copyrighted material used herein
FLOW-MATIC (Trademark of Sperry Rand Corporation), Programming far the UNIVAC (R)
I and II, Data Automation Systems copyrighted 1958, 1959, by Sperry Rand Corporation:
IBM Commercial Translator, Form No. F28-80l3, copyrighted 1959 by IBM: FACT, DSI
27A5260-2760, copyrighted 1960 by Min~eapolis- Honeywell
have specifically authorized the use of this material in whole or in part, in the COBOL
specifications. such authorization extends to the reproduction and use of COBOL
specifications in programming manuals or similar publications.”
xxv
Preface
It seems strange to be writing a book on COBOL so many years after its death was first predicted. Indeed, COBOL
has had such a low profile in recent years that you might be forgiven for thinking that it had all but disappeared.
The nature of our industry is such that the new and exciting always gets more airplay than the secure, the accurate, and the reliable. But while Java, C#, Ruby, Python, and Objective C have dominated our consciousness in recent times, in the background billions of lines of COBOL code have quietly gone about supporting the mission-critical applications that make the world work.
Now, after many years, awareness is increasing about COBOL and the huge body of legacy COBOL code. COBOL
is mentioned more and more in magazines, in trade journals, and in newspapers. Indeed, you may be reading this book because you have noticed this activity and have become curious about COBOL. You may have wondered why this supposedly dying language is attracting attention recently. The reason is simple. There is a legacy crisis just around the corner, and stakeholders are trying to do something about it.
Michael Coughlan Page 77