The syntax diagram for a program parameter is as follows:

- dataItemName
- Name of a primitive field. For the rules of naming, see Naming conventions.
- primitiveType
- The type of a primitive field. Depending on the type, the following information
may be required:
- The parameter's length, which is an integer that represents the number
of characters or digits in the memory area.
- For some numeric types, you may specify an integer that represents the
number of places after the decimal point. The decimal point is not stored
with the data.
- For an item of type INTERVAL or TIMESTAMP, you may specify a datetime
mask, which assigns a meaning (such as "year digit") to a given position in
the item value.
- dataItemPartName
- The name of a dataItem part that is visible to the program. For details
on visibility, see References to parts.
The part acts as a model
of format, as described in Typedef.
- formPartName
- Name of a form.
The form must be accessible through a formGroup that
is identified in one of the program's use declarations. A form accessed as
a parameter cannot be displayed to the user, but can provide access to field
values that are passed from another program.
For the rules of naming, see Naming conventions.
- recordName
- Name of a record or fixed record. For the rules of naming, see Naming
conventions.
- recordPartName
- Name of a record part (or fixed-record part) that is visible to the program.
For details on visibility, see References to parts.
The part acts
as a model of format, as described in Typedef.
The following statements apply to input or output (I/O) against record
parameters:
- A record passed from another program does not include record state such
as the I/O error value endOfFile. Similarly, any
change in the record state is not returned to the caller, so if you perform
I/O against a record parameter, any tests on that record must occur before
the program ends.
- Any I/O operation performed against the record uses the record properties
specified for the parameter, not the record properties specified for the argument.
- For records of type indexedRecord, mqRecord, relativeRecord, or serialRecord,
the file or message queue associated with the record declaration is treated
as a run-unit resource rather than a program resource. Local record declarations
share the same file (or queue) whenever the record property fileName (or queueName)
has the same value. Only one physical file at a time can be associated with
a file or queue name no matter how many records are associated with the file
or queue in the run unit, and EGL enforces this rule by closing and reopening
files as appropriate.
An arguments sent from another EGL program must be reference-compatible
with the related parameter. For details, see Reference compatibility in
EGL.