|
Use the following macros to modify language definitions for specific
project requirements.
Table 1. SCLM Macros for
Language DefinitionMacro |
Purpose |
---|
FLMSYSLB |
Use this macro to define data sets that contain
system, project, or language dependencies that are referenced by SCLM
members but are not in the SCLM hierarchy themselves. Examples are
system macros for Assembler programs and compiler-supplied include
files for C programs. |
FLMLANGL |
Use this macro to define the language to SCLM. |
FLMINCLS |
Use this macro to associate sets of includes
found during the parse of a member with the types in the project definition
that contain those includes. FLMALLOC macros then reference this macro
to allocate the include libraries for build translators. The FLMINCLS
macro can be used multiple times for each language, but each FLMINCLS
macro must have a unique name within the language and be associated
with at least one FLMALLOC macro. This helps ensure that the includes
that are found by build are the same ones found by the translators. |
FLMLRBLD |
Use this macro to tell SCLM to automatically
rebuild members with this language after they are promoted into the
listed groups. |
FLMTRNSL |
Use this macro to define a translator for a language.
It can be used multiple times for a language. |
FLMTOPTS |
Use this macro to vary the options passed to a
build translator based on the group where the build is taking place.
Options can be appended to the existing options or replace the options
completely. FLMTOPTS macros must follow an FLMTRNSL macro with
FUNCTN=BUILD.
|
FLMTCOND |
Use this macro to specify conditional execution
of a BUILD translator. Part of the specification can include examination
of return codes from previous BUILD translators in the language definition. |
FLMALLOC |
Use this macro for each data set allocation required
by a translator. If you are using a ddname substitution
list, specify an FLMALLOC macro for each ddname in the correct order.
If not, determine the ddnames that are needed by the translator and
specify an FLMALLOC macro for each ddname. |
FLMCPYLB |
Use this macro to identify data sets to be concatenated
to a ddname. The data sets must be preallocated. The FLMCPYLB data
sets are used as input to the Parse and other translators. |
For each language, take the following actions as necessary:
- Specify data sets containing dependencies that are not to be tracked,
such as assembler system macros (macro FLMSYSLB).
- Specify the maximum number of includes, change codes, user data
records, compilation units, and external dependencies expected in
a source member (macro FLMLANGL; keyword BUFSIZE).
- Determine if ddname substitution is needed for the translator.
This information can be found in the translator documentation. Adjust
the PORDER parameter on the FLMTRNSL macro as needed.
- Verify translator load module names and load data sets for accuracy
(macro FLMTRNSL; keywords COMPILE, DSNAME, and TASKLIB).
- Adjust translator return codes to project requirements if nonzero
return codes are acceptable (macro FLMTRNSL; keyword GOODRC).
- Update default translator options (macro FLMTRNSL; keyword OPTIONS).
- Verify translator version information (macro FLMTRNSL; keyword
VERSION).
- Specify output listings (macro FLMALLOC; keyword PRINT).
- Specify output default types (macro FLMALLOC; keyword DFLTTYP)
to match the FLMTYPE type specified in the project definition.
- Verify that system libraries are being allocated for build translators.
Either specify ALCSYSLB=Y on the FLMLANGL macro or ensure that the
data sets from FLMSYSLB macros are specified on FLMCPYLB macros following
IOTYPE=I allocations.
- Specify the include sets for the language to use. You must specify
all the include-sets returned by the parser for the language. If you
add a new FLMINCLS macro, ensure that it is referenced by at least
one FLMALLOC of a build translator. If you remove an FLMINCLS macro,
update any FLMALLOC macros that reference it, ensuring that no member's
accounting data contains references to that include set.
Figure 1 shows an example of an Enterprise
COBOL language definition.
Figure 1. Enterprise COBOL
Language Definition Example (Part 1 of 2)********************************************************************
* *
* Enterprise COBOL LANGUAGE DEFINITION FOR SCLM *
********************************************************************
*
FLMLANGL LANG=COBE C
LANGDESC='ENTERPRISE COBOL', C
********************************************************************
* --PARSER TRANSLATOR-- *
********************************************************************
*
FLMTRNSL CALLNAM='SCLM COBOL PARSE', C
FUNCTN=PARSE, C
COMPILE=FLMLPCBL, C
PORDER=1, C
CALLMETH=LINK, C
OPTIONS=(@@FLMLIS,@@FLMSTP,@@FLMSIZ,)
* (* SOURCE *)
FLMALLOC IOTYPE=A,DDNAME=SOURCE
FLMCPYLB @@FLMDSN(@@FLMMBR)
*
*********************************************************************
* --ENTERPRISE COBOL INTERFACE-- *
*********************************************************************
*
FLMTRNSL CALLNAM='ENTERPRISE COBOL COMPILER', C
FUNCTN=BUILD, C
COMPILE=IGYCRCTL, C
DSNAME=IGY,SIGYCOMP, C
VERSION=3.1, C
GOODRC=0, C
PORDER=1, C
OPTIONS=(XREF,LIB,APOST,NODYNAM,LIST,NONUMBER,NOSEQ)
*
*********************************************************************
* --DDNAME ALLOCATION-- *
*********************************************************************
*
FLMALLOC IOTYPE=O,DDNAME=SYSLIN,KEYREF=OBJ, C
RECNUM=5000,DFLTTYP=OBJ
*
FLMALLOC IOTYPE=I,DDNAME=SYSLIB,KEYREF=SINC
*
FLMALLOC IOTYPE=S,DDNAME=SYSIN,KEYREF=SINC,RECNUM=2000
*
FLMALLOC IOTYPE=W,DDNAME=SYSUT1,RECNUM=5000
*
FLMALLOC IOTYPE=W,DDNAME=SYSUT2,RECNUM=5000
*
FLMALLOC IOTYPE=W,DDNAME=SYSUT3,RECNUM=5000
*
FLMALLOC IOTYPE=W,DDNAME=SYSUT4,RECNUM=5000
*
FLMALLOC IOTYPE=A,DDNAME=SYSUT5,RECNUM=5000
*
FLMALLOC IOTYPE=A,DDNAME=SYSUT6,RECNUM=5000
*
FLMALLOC IOTYPE=A,DDNAME=SYSUT7,RECNUM=5000
Figure 2. Enterprise COBOL Language
Definition Example (Part 2 of 2)*
FLMALLOC IOTYPE=A,DDNAME=SYSTERM
FLMCPYLB NULLFILE
*
FLMALLOC IOTYPE=A,DDNAME=SYSPUNCH
FLMCPYLB NULLFILE
*
FLMALLOC IOTYPE=O,DDNAME=SYSPRINT,KEYREF=LIST, C
RECFM=FBA,LREC=133, C
RECNUM=50000,PRINT=Y,DFLTTYP=LIST
In the example in Figure 1, the COBOL language
is defined to SCLM by the FLMLANGL macro. The FLMTRNSL parameters
specify particular information about the compiler:
- The name of the compiler: ENTERPRISE COBOL.
- The name of the compiler load module: IGYCRCTL.
- The version of the compiler: 3.3.1.
- The compiler options: XREF, LIB, APOST, NODYNAM, LIST, NONUMBER,
NOSEQ.
The FLMALLOC macros following the build
FLMTRNSL macro specify each ddname needed by the COBOL compiler. SCLM
allocates the ddnames specified on the FLMALLOC macro before invoking
the translator (in this example, the COBOL IKFCBL00 load module).
The FLMALLOC parameters allow specification of the record format (RECFM),
the logical record length (LRECL), the number of records (RECNUM),
and other options. An FLMCPYLB macro specifies that a ddname be associated
with a null data set.
The language definitions
must be defined to the project definition, either
by placing the language definitions
directly into the project definition or
having the language definitions
copied into the project definition when
the project definition is
assembled. It is easier to maintain the project definition if
each language definition is
kept in a separate member and copied into the project definition when
the project definition is
assembled. The example project definition Figure 1 uses this method of including
the language definitions.
|