Chapter 15: Fanout

1. Introduction

The fanout record uses several forward processing links to force multiple passive records to scan. When more than one record needs to be scanned as the result of a record being processed, the forward link of that record can specify a fanout record. The fanout record can specify up to six other records to process. When more than six are needed, one of the links in the fanout record can point to another fanout record.

NOTE: Fanout records only propagate processing, not data. The dfanout or data fanout record can, on the other hand, send data to up to eight other records.

The fanout record's fields fall into the following categories:

scan parameters

operator display parameters

run-time parameters.

2. Scan Parameters

The forward link fields of the fanout record (LINK1-LINK6) specify records to be scanned. The records to be processed must specify Passive in their SCAN fields; otherwise the forward link to it will not cause it to process. Also when specifying database links for the fanout record, the user needs only to specify the record name. As no value is being sent or retrieved, the field name is optional.

The SELM, SELN, and SELL fields specify the order of processing for the forward links. The select mechanism field (SELM) has three choices--All, Specified, or Mask. How these affect which links to process and in which order is as follows:

All

Links are processed in numerical order--LNK1, LNK2, etc.

Specified

SELN is used as the specifier of which link to process. For instance, if SELN=1, then LNK1 will be processed.

Mask

The number in SELN is used as follows: if SELN=1, LNK1 is processed. If SELN=2, LNK1 and LNK2 are processed. If SELN=3, then LNK1, LNK2, and LNK3 are processed, etc.

SELN reads its value from SELL. SELL can be a constant, a database link, or a channel access link. If a constant, SELN is initialized with the constant value and can be changed via dbPuts. For database/channel access links, SELN is retrieved from SELL each time the record is processed and can also be changed via dbPuts.