The value of a parameter passed through the BY CONTENT phrase is evaluated
when the CALL statement runs. This value is assigned to the corresponding
parameter of the called program.
For each ILE COBOL item passed BY CONTENT, a copy of the item is made in the
calling program, and a pointer to this copy passes to the called program.
Changes made to the parameter in the called program do not affect the data
item of the calling program. The number of characters in each parameter must
be equal; however, the data descriptions need not be the same.
- identifier-2
- Must be defined as a level-01, level-77, or elementary
data item in the File, Working-Storage, Local-Storage or Linkage Sections. It must not be a function-identifier.
IBM Extension
It can be
a:
- Data item of any level in the Data Division
- Pointer data item (an item defined implicitly or explicitly as USAGE IS
POINTER)
- Procedure-pointer data item
- DBCS data item
- National data item
- Floating-point data item
- Date-time data item.
End of IBM Extension
IBM Extension
- ADDRESS OF special register
- For information about this special register, see page ADDRESS OF Special Register.
- ADDRESS OF a data item
- For information about this, see page ADDRESS OF.
- LENGTH OF special register
- The LENGTH OF special register contains the number of bytes used by
a data item referenced by an identifier. For more information, see LENGTH OF Special Register.
- literal-2
- Can be:
- A nonnumeric literal
- A figurative constant
- A Boolean literal
- A DBCS literal
National literal. 
- file-name-1
- Must appear in an FD entry. It passes a pointer data item.
- OMITTED
- For standard parameters when a parameter is passed BY CONTENT, a pointer
to a copy of the data item is passed to the called program. When OMITTED is
specified, a NULL pointer is passed to the called program. In this case,
the called program will use its default value.
OMITTED can only be specified
on calls to programs with a LINKAGE TYPE of procedure.
End of IBM Extension