Is it possible to add inline comments in Cobol

2019-01-26 15:33发布

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}

4条回答
女痞
2楼-- · 2019-01-26 16:17

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.

查看更多
疯言疯语
3楼-- · 2019-01-26 16:17

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.

查看更多
放我归山
4楼-- · 2019-01-26 16:19

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.

查看更多
ら.Afraid
5楼-- · 2019-01-26 16:24

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.
查看更多
登录 后发表回答