You must next make one change to the macros that define how to
invoke the Finnoga 4 compiler. The source to be compiled no longer
comes directly from the SCLM-controlled source libraries. Instead,
you want SCLM to take the preprocessed source that PUPP writes to
ddname SYSOUT and pass it to the Finnoga 4 compiler. This requires
a change to the FLMALLOC macro that defines the ddname that gets put
into the SYSIN position in the ddname substitution list for the Finnoga
4 compiler. The new macro is illustrated as follows:
*
* -- (5) SOURCE
*
FLMALLOC IOTYPE=U,DDNAME=SYSOUT
You use a different IOTYPE value (IOTYPE=U) to indicate that the
ddname to be placed in the ddname substitution list has already been
allocated in a previous build step. In this case, DDNAME=SYSOUT tells
SCLM to place the name SYSOUT in position 5 of the ddname substitution
list and go on to the next ddname. When the Finnoga 4 compiler runs,
it reads the source from ddname SYSOUT.
The new language definition is shown in Figure 1. Note that the new language has
been specified on the FLMLANGL macro.
Figure 1. Finnoga/PUPP Language Definition
(Part 1 of 2)**********************************************************
* FINNOGA 4 LANGUAGE DEFINITION
**********************************************************
*
FLMLANGL LANG=FINPUPP,VERSION=FINN4
*
**********************************************************
TYPES TO SEARCH FOR INCLUDES
**********************************************************
*
FLMINCLS TYPES=(INCLUDE,@@FLMTYP)
*
**********************************************************
* PARSE TRANSLATOR DEFINITION
**********************************************************
*
FLMTRNSL CALLNAM='FINNOGA PARSER', C
FUNCTN=PARSE, C
COMPILE=FINPARSE, C
DSNAME=SCLM.PROJDEFS.LOAD, C
PORDER=1, C
OPTIONS=(@@FLMSIZ,@@FLMSTP,@@FLMLIS)
*
* -- SOURCE --
*
FLMALLOC IOTYPE=A,DDNAME=SOURCE
FLMCPYLB @@FLMDSN(@@FLMMBR)
*
**********************************************************
* BUILD TRANSLATOR DEFINITION
**********************************************************
*
* PREPROCESSOR STEP
*
FLMTRNSL CALLNAM='PANDA U PREP', C
FUNCTN=BUILD, C
COMPILE=PANDA01, C
GOODRC=0, C
PORDER=1, C
OPTIONS='NOTRACE'
*
* -- SOURCE
*
FLMALLOC IOTYPE=S,KEYREF=SINC,DDNAME=SYSIN
*
* -- PREPROCESSED SOURCE
*
FLMALLOC IOTYPE=W,RECFM=FB,LRECL=80,RECNUM=5000, C
DDNAME=SYSOUT
*
* -- LISTING
*
FLMALLOC IOTYPE=O,KEYREF=OUT1,RECFM=VBA,LRECL=125, C
RECNUM=5000,PRINT=Y,DFLTTYP=PUPLIST,DDNAME=SYSPRINT
*
* COMPILE STEP
*
FLMTRNSL CALLNAM='FINNOGA 4', C
FUNCTN=BUILD, C
COMPILE=FNGAA40, C
GOODRC=0, C
PORDER=3, C
OPTIONS='SOURCE,NOMACRO,OBJ(@FLMMBR)', C
PARMKWD=PARM1
Figure 2. Finnoga/PUPP Language Definition
(Part 2 of 2)*
* -- (1) OBJECT
*
FLMALLOC IOTYPE=P,KEYREF=OBJ,DFLTTYP=OBJ,RECFM=FB, C
LRECL=80,RECNUM=5000
*
* -- (2) NOT USED
*
FLMALLOC IOTYPE=N
*
* -- (3) NOT USED
*
FLMALLOC IOTYPE=N
*
* -- (4) INCLUDE LIBRARIES
*
FLMALLOC IOTYPE=I,KEYREF=SINC
*
* -- (5) SOURCE
*
FLMALLOC IOTYPE=U,DDNAME=SYSOUT
*
* -- (6) LISTING
*
FLMALLOC IOTYPE=O,KEYREF=LIST,RECFM=VBA,LRECL=125, C
RECNUM=5000,PRINT=Y,DFLTTYP=FINLIST
*
* -- (7) NOT USED
*
FLMALLOC IOTYPE=N
*
* -- (8) FINNOGA COMPILER LIBRARIES
*
FLMALLOC IOTYPE=A
FLMCPYLB SYS1.FINNOGA.LIB
*
* -- (9) NOT USED
*
FLMALLOC IOTYPE=N
*
* -- (10) WORK FILE
*
FLMALLOC IOTYPE=W,LRECL=4000,RECFM=F,RECNUM=4000
*
* -- (11) WORK FILE
*
FLMALLOC IOTYPE=W,LRECL=4000,RECFM=F,RECNUM=4000
*
*5665-402 (C) COPYRIGHT IBM CORP 1980, 1989
The following example illustrates an architecture definition to
build a program using two translators:
Figure 3. Architecture Definition
ExampleSINC PROG7 SOURCE
OBJ PROG7 OBJ
LIST PROG7 FINLIST
OUT1 PROG7 PUPLIST
PARM1 NOOPTIMIZE
The only difference between this architecture definition and the
Finnoga 4 CC architecture definition is the presence of the OUT1 keyword.
This keyword specifies the type and member into which the PUPP listing
is saved. In addition to specifying the OUT1 keyword in their architecture
definitions, users who use this language definition to build their
Finnoga 4 source must also remember to specify the language name FINPUPP
for that Finnoga 4 source in the FLMLANGL macro statement.