Use this macro to define a set of
system macro or include data sets for an include set in a language.
The data sets defined by FLMSYSLB contain members that are referenced
by SCLM members. Whether or not these include dependencies are tracked
is determined by the CHKSYSLB parameter of the language. These data
sets also can be allocated for the build translator(s) by using the
ALCSYSLB parameter of the language.
Different sequences of
data sets may be specified by using the INCLS parameter. FLMSYSLB
macros with the INCLS parameter will be used in conjunction with FLMALLOC
macros that have IOTYPE=I and an INCLS parameter with the same value.
The value of the INCLS parameter is the name of an FLMINCLS macro
in the language definition.
Macro format
>>-+----------+--FLMSYSLB--dataset_name------------------------->
'-language-'
>--+--------------------------+--+-------------+---------------><
'-,INCLS=include--set_name-' '-,VOL=volser-'
Parameters
- language
- An 8-character language name. The language must be the same name
as the language specified in the LANG field on the FLMLANGL macro.
To specify multiple data sets for a language, omit the language on
all but the first data set.
- dataset_name
- The partitioned data set or member of a fully qualified partitioned
data set containing macros or includes from outside the project. The
data set name must meet all of the requirements specified by the MVS™ data set naming conventions.
The project definition allows up to 54 characters, including periods
and parentheses, to support the specification of a member name. If
the data set name is too long (for example, more than 44 characters
for a data set name without a member specified), or it does not meet
the MVS data set naming conventions,
then errors occur during SCLM functions (for example, Parse or Build).
The data sets are searched and allocated in the order that they occur
in the project definition.
- ,INCLS=include_set_name
- This refers to the include-set name on an FLMINCLS macro. When
searching for includes, SCLM first checks the types specified on the
FLMINCLS macro, followed by the data set on this and other FLMSYSLB
macros with the same include-set name. If no INCLS parameter is specified,
this FLMSYSLB macro is used for the default include set. All of the
FLMSYSLB statements for an include set must be specified together.
- ,VOL=volser
- Specifies the serial number of an eligible direct access volume
on which the data set is located. This allows reference to a data
set that is either uncataloged or that is located on a different volume
than the catalog specifies. The default action, if not specified,
is to use the volume in the data set's catalog entry.
Note: If an
SMS-managed volume is specified, the system will override this specification
with the volume in the catalog entry.
Example
This example shows the FLMSYSLB
macros that might be included in the project definition for a language
that has includes in 3 different include sets.
DBAPPL FLMSYSLB SYS1.COMPILER.INCLUDES
FLMSYSLB SYS1.DATABASE.INCLUDES,INCLS=DATABASE
FLMSYSLB SYS1.TRANSACT.INCLUDES,INCLS=DATABASE
FLMSYSLB APPL.REUSE.INCLUDES,INCLS=REUSE
In this example the includes for members of language
DBAPPL will first find their members in the project hierarchy. If
the includes are not found in the project hierarchy the FLMSYSLB data
sets will be searched. Only the FLMSYSLB data sets that are associated
with the same include set as the include will be searched for the
include.
For example, in the DBAPPL language definition:
- FLMALLOC with IOTYPE=I and no INCLS parameter will be associated
with SYS1.COMPILER.INCLUDES
- FLMALLOC with IOTYPE=I and INCLS=DATABASE will be associated with
SYS1.DATABASE.INCLUDES concatenated with SYS1.TRANSACT.INCLUDES
- FLMALLOC with IOTYPE=I and INCLS=REUSE will be associated with
APPL.REUSE.INCLUDES
- FLMALLOC with IOTYPE=I and INCLS=XXXXX will not have an associated
FLMSYSLB since there are no FLMSYSLB macros associated with language
DBAPPL that have an INCLS parameter with the value XXXXX
Includes in data sets outside
of the project definition can either be tracked in the accounting
record of the member that includes them or not tracked at all.
To
track external includes in the accounting record:
- Specify CHKSYSLB=BUILD or IGNORE in the language definition.
- Specify an FLMSYSLB for each data set containing included members.
- Either specify ALCSYSLB=Y in the language definition, or specify
each of the data sets from FLMSYSLB macros on FLMCPYLB macros for
the appropriate ddnames.
When CHKSYSLB is BUILD, SCLM checks
the FLMSYSLB data sets at build time. When CHKSYSLB is IGNORE, the
build translator determines if includes are missing. In either case,
any includes not found in the hierarchy are recorded in the accounting
record when the member is parsed.
To not track external includes
at all:
- Specify CHKSYSLB=PARSE in the language definition (the default)
- Specify an FLMSYSLB for each data set containing included members
- Either specify ALCSYSLB=Y in the language definition, or specify
each of the data sets from FLMSYSLB macros on FLMCPYLB macros for
the appropriate ddnames.
When CHKSYSLB is PARSE, SCLM verifies
at parse time that any includes that are not found in the project
hierarchy can be found in the FLMSYSLB data sets. The includes found
in the FLMSYSLB data sets are not recorded as includes in the accounting
record.