HOME
| OPENMP API Specification: "Version 5.2 -- GIT rev 95b2e3a44"

3.2.1  OpenMP Argument Lists

The OpenMP API defines several kinds of lists, each of which can be used as syntactic instances of clause arguments. A list of any OpenMP type consists of a comma-separated collection of expressions of that OpenMP type. A variable list consists of a comma-separated collection of one or more variable list items. An extended list consists of a comma-separated collection of one or more extended list items. A locator list consists of a comma-separated collection of one or more locator list items. A parameter list consists of a comma-separated collection of one or more parameter list items. A type-name list consists of a comma-separated collection of one or more type-name list items. A directive-name list consists of a comma-separated collection of one or more directive-name list items, each of which is the directive-name of some OpenMP directive. A foreign runtime preference list consists of a comma-separated collection of one or more foreign-runtime list items each of which is an OpenMP foreign-runtime identifier; the order of list items on a foreign runtime preference list is significant. An OpenMP operation list consists of a comma-separated collection of one or more OpenMP operation list items, each of which is an OpenMP operation defined in Section 3.2.3; the order of the list items in an OpenMP operation list is significant.

A variable list item is a variable or an array section. An extended list item is a variable list item or a function name. A locator list item is any lvalue expression including variables, array sections, and reserved locators. A parameter list item is the name of a function parameter. A type-name list item is a type name.
A variable list item is one of the following:

An extended list item is a variable list item or a procedure name. A locator list item is a variable list item, or a reserved locator. A parameter list item is a dummy argument of a subroutine or function. A type-name list item is a type specifier that must not be CLASS(*) or an abstract type.

A named constant as a list item can appear only in clauses where it is explicitly allowed.

When a named common block appears in an OpenMP argument list, it has the same meaning and restrictions as if every explicit member of the common block appeared in the list. An explicit member of a common block is a variable that is named in a COMMON statement that specifies the common block name and is declared in the same scoping unit in which the clause appears. Named common blocks do not include the blank common block.

Although variables in common blocks can be accessed by use association or host association, common block names cannot. As a result, a common block name specified in a clause must be declared to be a common block in the same scoping unit in which the clause appears.

If a list item that appears in a directive or clause is an optional dummy argument that is not present, the directive or clause for that list item is ignored.

If the variable referenced inside a construct is an optional dummy argument that is not present, any explicitly determined, implicitly determined, or predetermined data-sharing and data-mapping attribute rules for that variable are ignored. Otherwise, if the variable is an optional dummy argument that is present, it is present inside the construct.

Restrictions

The restrictions to OpenMP lists are as follows: