Although you will probably use cataloged procedures rather than supply all the job control statements required for a jeb ste~
that invokes the compiler, you should be familiar with these staterrents so that you
r---·---,
I I I I I I I I
Standard
I
Contents ofI
Possiblel RecordI
RecordI
Buffersddname
I
data setI
deviceI
formatI
size1---I I
classesI
(RECFM)I
(LRECL)I
BUFNOI
BLKSIZE SYSIN (or Input to theI
SYSSQ F,FB,UVB,y
<101(100)
<105 (104)
2 200
SYSCIN) SYSLIN SYSPUNCH
SYSUT1
SYSPRINT
SYSLIB
Notes:
compiler Object module Preprocessor output,
compiler output Temporary
workfile
Listing, including messages Source
statements for preprocessor
I I
I
SYSSQI I
SYSSQI
SYSCP SYSDASYSSQ
SYSDA
FB FB
F
f,FB
80 80
1091,1691,3491 or 4051
according to available space
125
<101
2 80
2 80
2 129
1. The possible device classes are:
SYSSQ Magnetic-tape or direct-access device.
SYSDA Direct-access device.
SYSCP Card-punch device.
2. Any block size can be specified except for SYSLIB and SYSUT1. Block size for SYSLIB depends on the options specified. If the INCLUDE option is specified, the maxi~um block size is 4260 bytes. If MACRO is specified, for SIZE values below 60K bytes, the maximum is 400 bytes: atove 60K bytes, the block size maximum is the value of LRECL for SYSUT1. The block size for SYSUT1 is always provided
by
the compiler.3.
4.
5.
If the record format is not specified in a DD statement, the default value (underlined) is provided by the compiler.
The compiler will atterept to obtain source input from SYSCI~ if a DD statement for this data set is provided. Otherwise it will obtain its input from SYSI N.
The numbers in parentheses in the wRecord sizew column are the defaults which can be overridden by the user. Where no parentheses are present,
I
the value is fixed and cannot be altered.l---J
Figure 4-2. Compiler standard data sets
18 as PL/I Optimizing Compiler: Programmer's Guide
can make the best use of the compiler, and if necessary, override the staterrents of the cataloged procedures.
The IBM-supplied cataloged procedures that include a compilation procedure step are as follows:
PLIXC Compile only.
PLIXCL Compile and link-edit.
PLIXCLG Compile, link-edit, and execute.
PLIXCG Compile, load, and execute.
The follOWing paragraphs describe the essential job control statements for compilation. The IBM-supplied cataloged procedures are described in Chapter 11 and include examples of these statements.
EXEC STATEMENT
The basic EXEC state~ent is:
//stepname EXE~ P~=IELOAA
The PARM parameter of the EXEC staterrent can be used 'to specify one or more of the optional facilities provided by the
compiler. These faciiities are described under "Optional Facilities," later in this chapter.
DD STATEMENTS FOR THE STANDARD DATA SETS
The compiler requires several standard data sets, the number'depending on the optional tacilities specified. You must define these data sets in DD statements with the standard ddnames which are shown, together with other characteristics of the data sets, in Figure 4-2. 'Ihe DD statements SYSIN, SYSUT1, and SYSPRINT are always required.
You can.store any of the standard data sets on a direct-access device, in which case, you must include the SPACE parameter in the DD statement that defines the data set to specify the amount of auxiliary storage required. The amount of auxiliary storage allocated in the IBM-supplied cataloged procedures should suffice for most applications.
Input (SYSIN, or SYSCIN)
Input to the compiler must be a data set defined by a DD staten,ent with the name SYSIN or SYSCIN: this data set must have CONSECUTIVE organizaticn. 'Ihe input must be one or more external FL/I procedures; if you want to compile nore thar. cne external
proc~dure in a single jot or job step, precede each procedure, exce~t possitly the first, with a PROCESS statement (described under "Batched Compilaticn," later in this chapter) •
Eighty-column punched cards are commonly used as the input mediurr for PL/I scurce programs. However, the input data set may be on a direct-access device, rragnetic tape, or paper tape. The input data set may contain either fixed-length reccrds, blocked or untlockedr, variatle-Iength records, or undefined-length records; the maximum record size is 100 bytes. The compiler always reserves 200 bytes cf main storage (100 tytes each) for two buffers for this data set; however, you rray specify a bl0ck size of more than laC bytes"
provided that sufficient rrain storage is available to the compiler. (See the discussion of the SIZE opticn under
"Optional Facilities," later in this chapter. )
Output (SYSLIN, SYSPUNCH)
Output (that .is, one or more object
modules) from the conpiler can be stcred in either,the data set defined ty the DD
statement with the nan,e SYSLIN (if ycu specify the OBJECT compile~ option) .or in the data set defined by the I:D statenent with the name SYSPUNCH (if you specify the DECK compiler option). You nay specify both options in one program, when tihe output will be stored in both data sets.
The object module is always in the forn:
of 80-byte fixed-length records, blocked or unblocked. The compiler always resierves two buffers of 80 bytes each; however, you may specify a block size of more than 80 bytes, provided.that sufficient nail')
storage is available to the compiler. (see the discussion of the SIZE cption under
·Optional Facilities," later in this chapter.) The data set defined by the DD statement with the name SYSPUNCH is also used to store the output frcn the
preprocessor if you specify the MDECK compiler option.
Temperary Workfile (SYSUT1)
The compiler requires a data set for use as a temporary workfile. It is defined by a :CD statement with the name SYSU'Il, and is known as the spill file. It must be on a w.rect-access device. The spill file is used as a logical extension to rrain storage and is used by the compiler and by the preprocessor to contain text and dictionary information.
Four record sizes are given in Figure 4-2 for SYSUT1. For storage devices other than the 3330, the first three sizes
correspond to the amount of storage available to the compiler, as sho~n in Figure 4-3.
storage Record Size 50-55K 1091
56-69K 1691 over 69K 3491
Figure 4-3. Record sizes for SYSUTl A record size of 4051 is used en the 3330.
Note that the DD statements given in this publication and in the cataloged procedures for SYSUTl request a sFace
allocation in blocks of 1024 bytes; this is to ensure adequate secondary allocations ef direct-access storage space are acquired.
Dedicated Data Sets: If a job being run under MVT has several job steps, and each job step requires a data set for use as a terr.porary workfile, the result is a
considerable overhead in time and space.
To reduce this as far as possible, you can use dedicated .data sets. These are data sets. that are created by the operating system when the job is selected for
processing. They can be used by each jeb step that requires a temporary workfile.
Dedicated data sets are normally allocated by the initiator and deleted when it terminates. More information on using dedicated data sets is given in Chapter 11.
Listing (SYSPRINT)
The compiler generates a listing that includes all the source statements that i t processed, inforrration relating to the object module, and, when necessary,
messages. Most of the information included in the listing is optional, and yeu can
specify those parts that yeu require by including the appropriate ccnpiler cFtions.
The infermation that may appear, and the associated compiler oFtiens, are described under "Compiler Listing," later in this chapter.
You must define the data set in ~hich
you wish the corrpiler to stcre its listing in a :CD statement with the name SYSPRINT.
This da ta set rr:ust have CONSECUTIVE organization. Although the listing is usually printed, i t can be stcred cn any magnetic-tape or direct-access device. For printed output, the fcllcwing statenent will suffice if your installation follows the convention that output class A refers te a printer:
//SYSPRINT DD SYSCUT=A
The cempiler always reserves 258 bytes of main storage (129 bytes each) fer two buffers for this data set; hcwever, you may specify a block size of more than 129 bytes, provided that sufficient rrain
storage is available to the compiler. (see the discussion of the SIZE e~tien under
"Optienal Facilities," later in this chapter. )
Source Statement Library (SYSLIE) If you use the preprocessor %INCLU:CE statement to introduce seurce statenents into the Pl/I program from a library, you can either define the library in a DD statenent with the narre SYSIIE, or ycu can cheose your own ddname (or ddnames) and specify a ddname in each %INCLUDE
statement. (See "Cerrpile-tine precessing,"
later in this chapter.)
EXAMPLE CF CCMFILER JCl
A typical sequence of jeb ccr.trel
staterr·ents for compiling a Fl/I program is shown in Figure 4-4. 'Ihe DECK and NCOBJECT corr-piler options, described below, have been specified to obtain an cbject ncdule as a card deck only. Jeb ccr.trel
staterrents for link editing an object module in the form ef a card deck are shown in Chapter 5.