psychoslave
psychoslave

Reputation: 3041

Is it possible to add inline comments in Cobol

Most modern programming languages give a way to add inline comments, generally those that use a newline character to indicate the end of a comment, and an arbitrary delimiter or sequence of tokens to indicate the beginning of a comment, while letting the beginning of the line being an interpreted instruction.

In COBOL, while commenting a whole line is well documented (it can be done by putting an asterisk symbol (*) in column 7), finding documentation on whether or not you can comment the rest of the line beginning at an arbitrary position is harder.

The question is: can you comment the rest of a line beginning at an arbitrary position in COBOL?

Imagining that # is the special character for this kind of comment, here is a fictive example of what is seeked:

   *--- This structure is a dummy example
    01 MY-STRUCTURE.
        05 MY-VARIABLE PIC X VALUE '-'. # Valid values are in {-, a, b}

Upvotes: 9

Views: 20479

Answers (5)

cschneid
cschneid

Reputation: 10765

More than ten years later, we can build on the answer of @BrianTiffin and note the compiler directive...

>>SOURCE [FORMAT IS] FREE | FIXED

...which may be useful for those (online) compilers which presume one format when you want to try out the other. Code...

>>SOURCE FORMAT IS FIXED

...as the first line of your program when you want to try out or test fixed format code in an online compiler that defaults to free format, such as jdoodle or tutorialspoint.

Where...

       IDENTIFICATION DIVISION.
       PROGRAM-ID. HELLO-WORLD.
       PROCEDURE DIVISION.
      * comment
           DISPLAY 'Hello, world'.
           STOP RUN.

...generates an error at the * in column 7 in free format, adding the compiler directive makes the compiler happy.

>>source format is fixed
       IDENTIFICATION DIVISION.
       PROGRAM-ID. HELLO-WORLD.
       PROCEDURE DIVISION.
      * comment
           DISPLAY 'Hello, world'.
           STOP RUN.

And, if you really want to start a format war...

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
>>source format is fixed
      * comment
       >>source format is free
DISPLAY 'Hello, world'.
STOP RUN.

Upvotes: 3

Bruce Martin
Bruce Martin

Reputation: 10543

Pre Cobol 2002 No

In Cobol 2002 *> was introduced. see Cobol 2002 and search in-line comment, which give this example:

05 Field-X Pic XX *> Used in calculating the current THINGY
...
MOVE ABC to XYZ  *> Current-XYZ
             LMN *> Saved XYZ

There are other some exceptions

  • In Exec Sql - End-Exec. you are able to use in-line comments (/* */) for some SQL venders (e.g. Oracle). This is not true Cobol though but an embeded language, generally implemented via a pre-compiler. Othere Exec End-exec statement may also allow in-line comments.
  • There may be other Cobols implementations that allow in line comments
  • By default many pre Cobol 20002 compiler's only look at columns 7 to 72. So columns 1 to 6 and anything after column 71 can hold comments.

Upvotes: 13

Brian Tiffin
Brian Tiffin

Reputation: 4116

COBOL documentation. Open, free.

And for a limited time, while it remains Draft and open for comment

That last link is almost guaranteed to expire when the COBOL 20xx Draft becomes a ratified ISO Standard, and is not really for redistribution, other than from the ISO PL22 WG4 source.

COBOL supports FIXED and FREE source code formats. FIXED is older, based on 80 column cards, with columns one to six for sequence numbers, 7 for directives and columns 8 thru 72 for program text.

Asterisk in column 7 is a FIXED form COBOL comment line.

OCOBOL* Sequence number field "OCOBOL" in this case, it can be anything
      * and comment line indicator

      *> inline comment, can be used for FREE format COBOL, as well as FIXED.

There is a trick; place the asterisk in column 7 with the greater than symbol in column 8 and you have a comment line that works in both fixed and free format COBOL.

For compilers that will follow draft 20xx and

>>

directives, there is another trick to assist in FIXED/FREE source compile support.

123456
    >>D free format debug line directives

if the D is in column 7, with the two greater thans in 5 and 6, you have mixed FIXED and FREE source text support for debug lines as well.

Upvotes: 5

Baruch Atta
Baruch Atta

Reputation: 431

No, but you can write a program to "WRAP" your code when you submit it to the compiler. We did this 20 years ago.

for example.

   SOME COBOL CODE  -- DOUBLE DASH INDICATES COMMENT TO END OF LINE

THEN write a program that looks for the double dashes and have it delete the -- and the text. Then in your compile jcl, input your source code to the program, and the output to the compiler. Simple. Use the INSPECT statement.

 INSPECT LINE, TALLYING CHARACTERS BEFORE INITIAL "--".
 MOVE SPACES TO LINE(TALLY:),

And that is it. Removes the comments and sends to compiler.

Upvotes: 6

sahhhm
sahhhm

Reputation: 5365

Enterprise COBOL V5.1 will support inline comments

From the Release Highlights

Introduces the floating comment indicator to create a comment anywhere in the program-text area Enterprise COBOL for z/OS, V5.1 introduces the floating comment indicator ('*>').

You can specify it anywhere in the program-text area to indicate that the ensuing text on a line is a comment line or an inline comment.

A floating comment indicator indicates a comment line if it is the first character string in the program-text area (Area A plus Area B, columns 8 - 72), or indicates an inline comment if it is after one or more character strings in the program-text area.

Upvotes: 6

Related Questions