|
Figure 1 shows a language definition for
compiling C source members on the workstation. A description of the
items in the language definition follows.
Figure 1. Workstation C Language Definition
(Part 1 of 2)***********************************************************************
* *
* SCLM LANGUAGE DEFINITION FOR IBM CSET/2 OR CSET++ FOR OS/2 *
* COMPILE SOURCE TO OBJECT *
* *
***********************************************************************
*
*
CPPOS2 FLMLANGL LANG=CPPOS2, C
VERSION=2, C
CHKSYSLB=IGNORE
*
FLMINCLS TYPES=(H,HPP,@@FLMTYP,@@FLMETP)
H FLMINCLS TYPES=(H)
HPP FLMINCLS TYPES=(HPP)
*
* PARSER
*
FLMTRNSL CALLNAM='C/C++ PARSE', C
FUNCTN=PARSE, C
CALLMETH=TSOLNK, C
COMPILE=FLMLRC2, C
PORDER=1, C
OPTIONS=(STATINFO=@@FLMSTP, C
LISTINFO=@@FLMLIS, C
LISTSIZE=@@FLMSIZ)
*
* (* SOURCE *)
FLMALLOC IOTYPE=A,DDNAME=SOURCE
FLMCPYLB @@FLMDSN(@@FLMMBR)
*
* BUILD
*
FLMTRNSL CALLNAM='C/C++', C
FUNCTN=BUILD, C
CALLMETH=ISPLNK, C
COMPILE=SELECT, C
VERSION=1, C
GOODRC=0, C
PORDER=1, C
OPTIONS='CMD(FLMLTWST ACTION=COMPILE,BMAPINFO=@@FLM$MP,SC
CLMINFO=@@FLMINF,BLDINFO=@@FLMBIO,PARMS='
*
* (* OBJ *)
FLMALLOC IOTYPE=P,RECFM=VB,LRECL=1024, C
RECNUM=4000,DDNAME=OBJ,CATLG=Y,KEYREF=OBJ, C
DFLTTYP=OBJBIN,DFLTMEM=*,LANG=EXE
* (* LIST *)
FLMALLOC IOTYPE=O,RECFM=VB,LRECL=256, C
RECNUM=4000,DDNAME=LIST,CATLG=Y,PRINT=I, C
KEYREF=LIST,DFLTTYP=LST
Figure 2. Workstation C Language Definition
(Part 2 of 2)* (* USERINFO *)
FLMALLOC IOTYPE=A,DDNAME=USERINFO
FLMCPYLB @@FLMUID.SCLM.USERINFO
* (* ACTINFO *)
FLMALLOC IOTYPE=A,DDNAME=ACTINFO
FLMCPYLB @@FLMPRJ.PROJDEFS.ACTINFO
* (* MESSAGE *)
FLMALLOC IOTYPE=W,RECFM=VB,LRECL=256,DISP=MOD, C
RECNUM=4000,DDNAME=MESSAGE,PRINT=I
* (* MSGXFER *)
FLMALLOC IOTYPE=W,RECFM=VB,LRECL=256,CATLG=Y, C
RECNUM=4000,DDNAME=MSGXFER
* (* BMAP *)
FLMALLOC IOTYPE=W,RECFM=VB,LRECL=256, C
RECNUM=4000,DDNAME=BMAP,PRINT=I
* (* FILES *)
FLMALLOC IOTYPE=W,RECFM=VB,LRECL=256,CATLG=Y, C
RECNUM=4000,DDNAME=FILES,PRINT=I
* (* RESPONSE *)
FLMALLOC IOTYPE=W,RECFM=VB,LRECL=256, C
RECNUM=4000,DDNAME=RESPONSE,PRINT=I,CATLG=Y
*
- FLMLANGL macro
- This
macro specifies the language name, CPPOS2, the language version, "1",
and that SCLM is to ignore any includes that are not in the project
hierarchy.
- FLMINCLS macro
- This
macro indicates the types searched when looking for includes. Includes
with the workstation file extension 'h' are found in the H type. Other
includes are found in the type of the source member or its extended
type.
- FLMTRNSL macro (functn=parse)
- This
macro identifies the parser to use when the members of this language
are updated. The parser scans the member for include dependencies
and counts statistics. For a description of the FLMLRC2 sample parser,
see FLMLRC2 C, C++, and Resource file parser for workstation source.
- FLMTRNSL macro (functn=build)
- This is the definition of the build translator. It calls FLMLTWST
to perform the compile on the workstation. The ACTION parameter is
set to compile to indicate that the compiler is to be called. The
PARMS parameter at the end of the parameter string allows for PARM
keywords in the language definition to specify additional parameters.
The other parameters are used to pass information between SCLM build
and the translators that FLMLTWST calls.
- FLMALLOC macro (ddname=obj)
- This
macro allocates the ddname that will hold the .obj file generated
on the workstation. The RECFM and LRECL values must match the allocation
of the data set in the hierarchy where the .obj file will be stored.
- IOTYPE=O
- Indicates that a sequential data set will be allocated to hold
the output.
- IOTYPE=P
- Indicates that a partitioned data set will be allocated to hold
the output. Using IOTYPE=P can improve build performance for builds
with more than one step by copying the date and time of the workstation
file to the host member. If the file is needed for subsequent build
steps, the copy on the workstation will be used rather than downloading
the file that was just uploaded.
- DFLTMEM=*
- Indicates that the output member in the PDS will have the same
name as the member being built.
- RECNUM
- Indicates the maximum number of records that can be stored in
the data set
- CATLG=Y
- Allows the file to be transferred from the workstation to the
data set allocated to this ddname.
- KEYREF=OBJ
- Indicates that this is an object module. This references the architecture
OBJ statement. See Architecture statements for more
information on architecture statements.
- DFLTTYP
- Indicates the type in the hierarchy where the member is stored.
- LANG
- Gives the language to associate with the output member. This can
be used later if the member is the input to another translator.
Because the KEYREF parameter
is OBJ, the FLMLTWST translator requires the ddname to be OBJ also
or the OBJ parameter must be specified giving the ddname. For example,
to use the ddname OBJBIN for outputs with a KEYREF of OBJ, you must
specify "OBJ=OBJBIN" in the options string of the FLMLTWST translator.
- FLMALLOC macro (ddname=list)
- This is the allocation for the ddname to hold the .lst (listing)
file that was generated on the workstation. This FLMALLOC has IOTYPE=O
to allocate a sequential data set to hold the listing that will be
stored back in the hierarchy. The PRINT parameter is also specified
to initialize the data set and then copy it to the user's BUILD.LISTnn
data set if needed. The IOTYPE=O or IOTYPE=P is needed because of
the PRINT parameter.
- FLMALLOC macro (ddname=userinfo)
- This macro allocates the USERINFO data set. The FLMCPYLB macro
that follows it allocates an existing data set to the ddname. The
data set has the userid as the high-level qualifier, followed by SCLM.USERINFO.
See USERINFODD statements for information
about the contents of this data set.
- FLMALLOC macro (ddname=actinfo)
- This is the allocation for the ACTINFO data set. The FLMCPYLB
macro that follows it allocates an existing data set to the ddname.
The data set has the project as the high-level qualifier, followed
by "PROJDEFS.ACTINFO".
- FLMALLOC macro (ddname=message)
- This ddname stores messages from the translators that FLMLTWST
calls. If the FLMTXFER translator fails, this is the first place to
look.
- FLMALLOC macro (ddname=msgxfer)
- This ddname is used to transfer message files from the workstation
to the host. After the messages are transferred to the host, they
are appended to the messages ddname.
- FLMALLOC macro (ddname=bmap)
- This is the ddname where the FLMTBMAP translator writes the build
information.
- FLMALLOC macro (ddname=files)
- This is the ddname to which FLMLTWST writes the list of files
for FLMTXFER to transfer.
- FLMALLOC macro (ddname=response)
- This is the ddname where FLMLTWST generates the response file
that is sent to the workstation. ACTION=COMPILE uses a response file;
but if no response file is needed for the action, this ddname can
be omitted.
|