Micro Mainframe
MVS and OS/390

COBOL is far from a dead language, as evidenced by the massive amount of work that was required to correct the "Year 2000" date problem in billions of lines of active COBOL code around the world. 

I started writing COBOL programs in 1973.  Even though I can now write relatively elegant and structured programs in several additional languages, I still prefer coding in COBOL.  In 1999 I wrote a database query application for a volunteer organization and I chose COBOL as the language.  Several people asked me why I didn't use Visual BASIC or C++ since the application was running on a microcomputer platform.  I replied that the requirements were adequately and best suited to a COBOL solution.  And that is really the only true test of why a particular language should be chosen ... if that language fits the application better than any other language available.

Here are some books that I have in my library that I consider "must have" titles for a COBOL programmer.  I have included a "Teach Yourself" book that is frequently recommended in the comp.language.cobol newsgroup and is a good book for the beginning programmer.  

I have included a couple of CICS books and a JCL book here, since this is more or less the "applications programming" area of my site.  Technical books come and go rapidly, so some of the books that I consider the real "gems" on my bookshelf are no longer available.  If you are building a programming reference library, I recommend you visit the web site of Mike Murach.  I started buying books from Murach publishing when their books were slightly more than bound photocopies.  I have always found books from Murach to be foundation blocks for my learning, and many of my co-workers in years past have coveted my selections enough to order copies of their own.

Murach's Structured COBOL is a brand new (2000) addition to the excellent books published by Mike Murach and Associates.  If you are programming on the IBM mainframe platform, or intend to be, this is a title you should have on your desk.  Although beginning programmers are included in the target audience, the real value of this material will be as the reference for on-the-job programmers.  At more than 760 pages, it covers everything you would need to research and is packed with syntax, how-to-use guidelines, and coding examples.  If you are a beginning programmer, the coverage of structured design, coding, and testing methodology is the best I have ever seen.  Used as a text to learn COBOL, the language syntax is designed to be generic enough to work under any COBOL compiler.  In fact, Murach also sells Merant's Personal COBOL if you do not currently have access to a COBOL compiler and are learning COBOL on your own.  The text also includes brief introduction to using ISPF and SDSF on the IBM mainframe to edit, compile, and debug a program.  There is also a good overview of creating CICS and DB2 programs, as well as a section on Object Oriented programming with COBOL, which will be included in the next COBOL standard.  View the table of contents, order directly from Murach, or order from Amazon.COM.


COBOL for OS/390 Power Programming is in fact much more than "just" a COBOL reference book.  This is the 3rd edition of the material.  It has an extensive section comparing the different versions of COBOL that have appeared on IBM mainframes.  Because of this material, it is the reference for anyone who is converting between, or working on multiple, versions of IBM COBOL compilers.  The text is loaded with coding examples, plus JCL examples, and detailed analyses of the underlying machine code that particular COBOL syntax will generate.  It is not a beginner level text, but covers the most advanced modern facilities of the current COBOL compilers.  In particular, the intricacies of the IBM Language Environment and techniques for writing efficient programs is stressed. Order at Amazon.COM


Teach Yourself COBOL in 24 Hours is one of the Sams structured lesson books with a complete COBOL compiler included on a CD-ROM.  I finally got a copy of this book (I don't fall into the beginning COBOL programmer category, but I collect books, which is not a hobby I recommend to anyone who moves a lot).  There are several "teach yourself" type COBOL books available, but I am familiar with Thane Hubbell's writing and programming style from segments he contributed to COBOL Unleashed as well as his contributions to several newsgroups I regularly read.  If you are a beginning COBOL student and need a recommendation to a good book, this would be mine. 
Order at Amazon.COM

CICS for the COBOL Programmer is an update to Murach’s two volume CICS set.  The intended audience is experienced COBOL programmers who need to learn Command Level CICS programming, from basic concepts to writing moderately complex applications quickly.  The first four sections introduce basic concepts and command syntax in a graduated style, so that at the conclusion the reader has been presented with all of the knowledge required to analyze the requirements, plan a structured design, and implement a moderately complex application consisting of several programs.  Techniques for debugging abends are also presented.

Chapters covering advanced file and database handling techniques follow the introductory sections.  Advanced VSAM file handling presented includes browsing files and accessing VSAM files utilizing alternate indexes.  An overview of working with DB2 databases is included, although developing proficiency in CICS/DB2 applications will most likely require acquisition of an advanced text concentrating on this specialized topic.

  The final section presents advanced CICS features and commands, such as concurrent task management, inter-region communication, distributed processing, and modular application development, including development of Web enabled CICS applications.  Information is also included which may be necessary to maintain older CICS code, which may use now obsolete coding techniques.

Available directly from Mike Murach or Order at Amazon.COM

Raul Menendez has updated Murach's 1980 edition of their MVS JCL text.  The result is a JCL training and reference book that should be the first book anyone aspiring to work on the OS/390 or z/OS platforms should acquire.

The first two chapters give a very condensed, but extremely thorough introduction and overview of IBM’s mainframe environment from a hardware and operating system perspective.  Since we continue to see forecasts that there will be a growing shortage of programmers for this environment, this is exactly the type of “quick start” introduction that will help bring new programmers up to speed.  Chapter three gives a very quick overview of ISPF, enough to get started using ISPF to accomplish basic editing, submit jobs, and review job output. 

Following the introductory section, Job Control Language is covered from the basics of statement format to how to accomplish more complex tasks – managing program execution, allocating disk and tape datasets, handling special circumstances of SYSOUT datasets, and using procedures.  More advanced JCL skills, including conditional processing, job restart/recovery, creating and using generation data groups, and using the Storage Management Subsystem to allocate datasets is covered in the next section.

But this is much more than a simple text on Job Control Language.  It includes a section on the basics of Virtual Storage Access Method (VSAM), along with JCL required to create and use VSAM datasets.  The chapter covering Access Method Services (IDCAMS) includes just about everything an application programmer will need to know to create and manage VSAM objects.  The most commonly used IBM utility programs, such as IEHMOVE, IEBCOPY, and IEBDG are explained with examples for their use.  And the chapter devoted to the Sort/Merge utility covers both stand alone and internal sorts along with the most common sort control statements.

The book concludes with a couple of chapters that will provide the reader with a working knowledge of CLISTS, REXX, and UNIX System Services.  With the inclusion of the information about SMS and UNIX System Services, the text is desk ready for programmers working in a z/OS environment, IBM’s current version of their flagship operating system.  But this book will be equally usable by programmers working on earlier versions of OS/390 and MVS.  Murach’s “paired page” format is easy to read for those using the text in training mode and also makes this a great choice for use as a reference tool. 

Available directly from Mike Murach or Order at Amazon.COM

The CICS Programmer's Desk Reference is another book from my library that you really should have if you are writing CICS programs.  In addition to containing a tremendous amount of CICS reference information, it includes numerous complete coding examples, JCL examples, and Access Methods Service commands you will need to define and manage VSAM files.  When I researched the availability of this title at Amazon, I was pleased to see other owner's of the title also give it praise.  Available directly from Mike Murach or Order at Amazon.COM

Programming Proverbs

If you have written a term paper for a college course, you probably had to write the paper using a published set of rules specified by the instructor.  Elements of Style, APA, Turabian, and Harbrace College Handbook are a few that I am familiar with.  If you approach writing a computer program with a similar set of guidelines, you will find that your programs are easier to write, understand, and maintain.

Early in my career I obtained a copy of Programming Proverbs by Henry F. Ledgard.  Some of the "proverbs" seem a bit dated when I read through them today, but taken as a whole they offer good guidance for sound programming principles.  I am not surprised to find that this title is now out of print, since the copyright on my copy is 1975.  Here are the 26 Proverbs Mr. Ledgard mandated:

  1. Define the Problem Completely
  2. Think First, Program Later
  3. Use the Top-Down Approach
  4. Beware of Other Approaches
  5. Construct the Program in Logical Units
  6. Use Procedures
  7. Avoid Unnecessary GOTO's
  8. Avoid Side Effects
  9. Get the Syntax Correct Now, Not Later
  10. Use Good Mnemonic Names
  11. Use Intermediate Variables Properly
  12. Leave Loop Variables Alone
  13. Do Not Recompute Constants within a Loop
  14. Avoid Implementation-Dependent Features
  15. Avoid Tricks
  16. Build in Debugging Techniques
  17. Never Assume the Computer Assumes Anything
  18. Use Comments
  19. Prettyprint
  20. Provide Good Documentation
  21. Hand-Check the Program Before Running It
  22. Get the Program Correct Before Trying to Produce Good Output
  23. When the Program Is Correct, Produce Good Output
  24. Reread the Manual
  25. Consider Another Language
  26. Don't Be Afraid to Start Over

COBOL Resources on the Web


This site, sponsored and hosted by IBM, provides a space where COBOL programmers can network, blog, ask and answer questions on forums - even get answers directly from  the IBM COBOL compiler, CICS, and IMS teams, learn about new releases of the language, read white-papers, technical tips, and much more.

COBOL Programming - tutorials, lectures, exercises, and examples.

This site contains COBOL lecture notes, COBOL Programming Exercises with sample solutions, a large number of example COBOL programs, tutorials on the COBOL Report Writer and a comprehensive set of COBOL tutorials making a full COBOL course.

COBOL Frequently Asked Questions (FAQ)

This document, maintained by William M. Klein, is a good place to start if you have COBOL questions.

IBM COBOL Newsletter

Somewhat irregularly published newsletter, but contains some really good articles and is worth the time to peruse.  The newsletters are available in Adobe PDF format for download and issues are available going back several years.


This is a good site to download evaluation copies of some great screen design add-on tools for COBOL.  They also have additional links relevant to COBOL.

Tal Systems' COBOL FD Analyzer v 1.50 (August, 1999)

This freeware tool runs in PC/MS-DOS (or DOS window under Windows 9?/NT or OS/2) and parses COBOL source or copylibs.  It reports the size and offset within each '01' level for all data names (group and elementary).  COBFD supports any level OCCURS/REDEFINES and most specialty compiler directives.  The zip archive Includes the executable, documentation, and a demo file.  Interactive and command-line modes allow operation with prompts or in MS/PC-DOS batch files.

The COBOL Center

This site is another collection of links related to COBOL, including tutorials, book sources, and job databases.

COBUG (COBOL User Groups)

This is the COBOL User Groups (COBUG) portal website.  It is a central location for many COBOL programming resources.

C.I.C.S. Discussion List

To subscribe, send mail to LISTSERV@vm.marist.edu with the command:  SUBSCRIBE CICS-L your name.

IBM Manuals on the Web

COBOL manual list
C.I.C.S manual list

IBM manuals are also available in BookManager format, which can be viewed with reader software that is available for DOS, Windows, and OS/2 (the DOS version may be used on UNIX systems under DOS emulation software).  To download the free IBM Library Reader, use the link: http://booksrv2.raleigh.ibm.com/homepage/ilrserv.html.

In order to download a publication's BookManager file, first use your browser to navigate to the desired document's title page.  Near the top of the page you will find this entry:  Book Path: /u/ftp/books/...  Utilizing this path information, construct a URL of the form:  http://www.s390.ibm.com/ftp/books/...  The resulting URL will utilize anonymous FTP to retrieve the BookManager file to your hard drive.

This page was last updated on November 15, 2010 .