How COBClean Reformats COBOL
What We Change:
COBClean reformats your input (source) file and produces an output
The cleaned program is functionally and syntactically equivalent to the
The original program is saved as a .BAK file; COBClean will not destroy
it. If you don't like what COBClean does, you can always go back to
your original mess.
Following is a partial list of the changes we make along the way:
- Precede each DIVISION with a separator comment for easier location.
We do the same for each SECTION. The comment is an eye catching solid
line of percent symbols:
- Comment out most of your IDENTIFICATION DIVISION, which is what the
compiler does with most of it anyway. This frees you from syntax or
keyword worries which have been known to fool some compilers.
- We indent your INPUT-OUTPUT SECTION entries.
- In the DATA DIVISION we separate each FD, SD or RD with a standard
comment line for ease of location. This comment line looks like:
- We separate each significant 01 level with a similar comment line.
By significant we mean one that has a data structure subordinate to
- Each subordinate data division level is assigned a level number that
increments by 5, e.g., 05, 10, 15, etc.
- Each subordinate level is indented by an amount you specify.
- Data names and PIC clauses are aligned at standard positions.
- You can specify the column number for PIC clause alignment.
- Value clauses that won't fit on the same line as the PICTURE clause
are right justified on the following line and continuation lines are
- We get rid of 77 level items. We turn them into 01 levels. This is
in keeping with future standards which classify 77 levels as an
obsolete feature. In byte machines such as the PC they are
functionally identical to 01 levels anyway. In mainframes, they are
sometimes hard to find in a memory dump, as some compilers placed them
in weird nooks and crannies of memory.
- We throw away "noise" such as commas, except in literals
and PICTURE clauses.
- In the PROCEDURE DIVISION we start numbering paragraphs with a four
digit number which increments by one. This number is prefaced to the
descriptive paragraph name, 0001-START-UP for example. All references
to this paragraph are changed. You can suppress paragraph re-numbering
- We number SECTIONS with a number that increments by 100. This means
that the first paragraph in the second section will be numbered
- If you didn't precede the paragraph with a comment, we will insert a
- We will indent your IF clauses by the same increment that we used in
the DATA DIVISION. The ELSE will be aligned under the
- We indent sentence continuations. One indent for verbs, two indents
for continuations of any given verb.
- We align multiple targets (destinations) of COBOL verbs under the
- You can force all targets to be aligned on a specific column if
- We split sentences up so that there is only one verb per line.
- Verbs never follow a paragraph name on the same line. Nothing
follows a period on the same line in the PROCEDURE DIVISION.
- We remove consecutive identical comment lines. Other than this bold
step we do not mess with your comments, either by content or position.
- We allow you to choose the starting number and increment for
"Line Numbers", or allow you to forego them all together.
- We allow you to uniformly translate various portions of the source
code to (or from) upper case. We handle either case.
- You can standardize which type of quotation mark you will be using,
or use both the single quote and double quote.
- COBClean offers a means of converting from or to the proposed new
format of COBOL lines which have no sequence numbers in column 1-6.
- You may also clear or preserve the ID area (columns 73-80) as you
wish. (Some programmers code the date of changes and other stuff in
We will never join a line to a preceding line, even if it would fit,
and not violate any of our other rules. We figure that if the programmer
split the line, it was for readability, and we should not change it.
MOVE ZERO TO FIXED-COST
Many programmers find the above easier to read than a long list of
names strung together on the same line.
We offer a means of handling the upper and lower case code that the
ANSI 85 standard allows. You can convert selective portions of your
program to lower case, or, if you're a traditionalist, you can force code
back to the familiar upper case format.