The Minimum You Need to Know
Overview Tableof Contents Excerpt

application book cover
Special Features: chapter assignments, exercises with answers, comprehensive index, and tons of useful code

On Dr. Dobb's list of recommended reading for developers

Download CD Contents

Pages: 795 pp
ISBN: 0-97708660-7
ISBN-13: 978-0-9770866-0-3
Format: Softcover, Perfect binding, 7 in. x 9 in.
Retail price: $90.00
EPUB price: $80.00

About the Book

For years now the question has been surfacing in the OpenVMS community "Where are the pimply faced kids?" The other situation which seems to continually occur is a developer of one language suddenly finding themselves having to modify or maintain an application written in a language completely foreign to them.

This book was a year long effort to answer both of those questions. It also should help those to work on a good platform. Once the rudimentaries of logging in, symbols, logicals and the various editors are handled this book takes the reader on a journey of development using the most common tools encountered on the OpenVMS platform and one new tool making headway.

A single sample application (a lottery tracking system) is developed using FMS and RMS indexed files in each of the covered languages. (BASIC, FORTRAN, COBOL and C/C++). The reader is exposed on how to use CDD, CMS and MMS with these languages as well.

A CD-ROM is included which contains the source, MMS and command files developed through the course of the book. Once RMS has been covered with all of the languages the same application using MySQL with C and FMS is covered. This breaks readers into the use of relational databases if they are not currently familiar with the concept. Rounding out the technical portion of the book is the same application using RDB with FMS. While source code is provided for all of the language implementations only FORTRAN and COBOL are actually covered in the text.

It is the hope of the author that this book will prove a useful reference on the desk of every OpenVMS developer. The inclusion of MySQL should benefit both those unfamiliar with relational technology and those platform veterans interested in playing with MySQL for the first time.

There are two main intents of this book...

  1. Allow developers who know at least one of the covered languages on another platform to quickly come up to speed on the OpenVMS platform.
  2. Assist current OpenVMS developers finding themselves having to work with a differentlanguage on this platform.

Tips from the Book

  • The /SPECIFICATION qualifier of the SORT command lets you identify a text file which contains a plethora of power. You can define named fields, named keys, named test conditions, inclusion criteria, omission criteria. In a batch job stream, you typically have a lead program which creates the sort specification file (if you need to do record selection that varies from run to run), execute the sort command, then write your follow-up program to process the sorted data. This is a much more acceptable approach than writing one massive executable which will run for hours without creating many entries in the log file. Most developers I run into don’t know a lot about the sort specification file, so we are going to cover it in the COBOL chapter.
  • A reference is a “special” object. There is a reason we covered COBOL prior to covering C, and references are it. You better have read that chapter. When we discussed the linkage section in COBOL, we discussed how COBOL doesn’t really pass parameters unless it is forced to pass them. The linkage section creates reference points back into the caller’s working-storage section. These references allow your called module to use those values just like they were your very own, but they aren’t. The reason most COBOL programmers don’t even know there is a GIVING clause on the procedure division is because they know the linkage section operates via references (unless you tell it not to). When you alter the values of items passed by reference you are actually altering the values in the caller.


"DO NOT begin any new database projects without first reading chapter 13 (MySQL) and chapter 14 (Oracle-RDB) of this book. Hint: while you can acquire MySQL for free, and it may have a place for some small applications, it may cost you more in the long run."

Neil Rieck, OpenVMS Application Developer

"Hands-on programming throughout the book provides a highly effective learning tool, and the best practices, advice, and knowledge transfer from the author gives the reader the unique feeling that they are sitting down next to a mentor, being coached through the tricks of the trade!"

Regan Windsor, Reader Views

"I had it shipped to the Netherlands for the price of $96. It arrived within a week of the order date. Worth every dollar (euro). "

Wilm Boerhout

"Highly recommended for OpenVMS programmers (especially those new to OpenVMS who need a good bootstrap). At the very minimum, a copy of this book should be purchased as an "office resource" in every location where OpenVMS developers work."

Neil Rieck, OpenVMS Application Developer

"Amazing. This is a truly astonishing work and a MUST for everybody who is starting with application developing, be it on VMS or not (I can not tell for others as I am starting myself). It is not a book where you will find many theories about abstract topics but one displaying everything you need to know by means of examples, explaining each example's important parts in-depth. You really feel the experience of the author throughout the text! This is a book I'd try to take with me if my house was burning down."

Thierry Dussuet, OpenVMS Student

Ian Miller, OpenVMS.Org

Reprinted from OpenVMS News and Information

After I got over the surprise of seeing a new book on OpenVMS Software Development I wondered at the title - this is an 800 page book with a CD! The book is intended for people who are familiar with programming on another platform and are faced with maintaining an application on VMS written using classic OpenVMS software tools. Perhaps a better title would be “What a person unfamiliar with OpenVMS should know to maintain an OpenVMS application.“

Hughes describes uses of: the MMS and CMS tools from the widely used DECSET OpenVMS software development toolkit; CDD; FMS; the RDB and MySQL databases. He also mentions other tools often found in the OpenVMS application development environment such as VMSMAIL, PHONE etc. Parts of OpenVMS which will be unfamiliar to a person transferring from another platform, such as logical names and DCL symbols, are introduced as they will often be encountered when maintaining an application on OpenVMS.

The book is based around a single application which is developed in each of DEC BASIC, FORTRAN, COBOL, C and C++ using a variety of tools. Full source code is provided on the CD. By repeatedly implementing the same thing in different languages the programmer familiar with one language can learn about another. The presented code is not suitable for a production environment but is intended to illustrate something being described in the text. For example the error handling is not always fully implemented except when Hughes wishes to describe dealing with errors.

Hughes describes building the application and typical ways of organizing the development environment and highlights common pitfalls for programmers coming from other platforms. The book is written in American English and in a casual style. Although it is easy to read some people who are not native English speakers may not recognise some of the colloquial terms used. I don’t think this will significantly hinder understanding.

Hughes has opinions about how things should be done and is not afraid to state them! Personally I find an opinionated book easier to engage with because there is something to argue or agree with. The final chapter is Hughes opinion on the state of the IT Industry.

The key to appreciating this book its specific focus. I think the target audience will find this a useful resource to sit alongside the OpenVMS Documentation. However the material is also useful for an OpenVMS developer faced with an application in a different programming language to the one they usually use.