GRP_GRPEX

Append a list of names contained within a supplied group expression to a previously created group

Description:

The supplied group expression is expanded to produce a list of names which are appended to the end of the group identified by IGRP2.

If the group expression contains any modification elements, then the list of names added to the output group is based on the group identified by IGRP1. If IGRP1 is invalid (equal to the symbolic constant GRP__NOID for instance), then any elements with the syntax of a modification element are stored in the output group as a single literal name.

If the last character read from the group expression (or from a text file if the last element of the group expression is an indirection element) is equal to the current "flag" character for the group IGRP2 (see routine GRP_SETCC), then argument FLAG is returned set to true. Otherwise, it is returned set to false. The calling application can use this flag for any purpose (eg it may use it to indicate that the user wants to give more names). Note, the flag character itself is not included in the returned group.

Invocation

CALL GRP_GRPEX( GRPEXP, IGRP1, IGRP2, SIZE, ADDED, FLAG, STATUS )

Arguments

GRPEXP = CHARACTER ( ) (Given)
A group expression. This should not be longer than GRP__SZGEX. If it is, the surplus characters will be ignored.
IGRP1 = INTEGER (Given)
A GRP identifier for the group to be used as the basis for any modification elements which may be contained within the supplied group expression. This can be set to the symbolic constant GRP__NOID if modification elements are to be treated as literal names.
IGRP2 = INTEGER (Given)
A GRP identifier for the group to which the new names are to be appended.
SIZE = INTEGER (Returned)
The number of names in the returned group. It is returned equal to 1 if an error status exists on entry. If an error occurs during execution of this routine, then SIZE is returned equal to the size of the group on entry (unless the group has zero size on entry, in which case it is returned equal to 1).
ADDED = INTEGER (Returned)
The number of names added to the group by this routine.
FLAG = LOGICAL (Returned)
.TRUE. if the last character in the group expression is equal to the current flag character for group IGRP2. Note, if this is the case, then the flag character itself is not included in the returned group. FLAG is returned .FALSE. if the last character is not a flag character. Returned .FALSE. if an error occurs.
STATUS = INTEGER (Given and Returned)
The global status.