You can add a 3211-format FCB image to those that reside in SYS1.IMAGELIB,
using the assembler and linkage editor. No executable code is generated;
the assembler prepares DCs, and the linkage editor links them into
SYS1.IMAGELIB. The new FCB image must be structured according to the
following rules:
- The member name cannot exceed 8 bytes and must begin with the
prefix FCB2. The characters that follow identify the FCB image and
are referred to as the image identifier (ID). Any combination of valid
assembler language characters can be used, with the exception of a
single 'C' or 'U', because these are used by the system to recognize
special conditions. To load the image into the FCB buffer, the image
identifier must be specified in the FCB keyword of a DD statement
or in the SETPRT macro.
- The first byte of the FCB load module specifies whether the image
is the default. (Default images are used by the system for jobs that
do not request a specific image.) Specify the following in the first
byte:
Value |
Meaning |
---|
X'80' |
Indicates a default image |
X'00' |
Indicates a nondefault image |
- The second byte of the load module indicates the number of bytes
to be transferred to the control unit to load the FCB image. This
count includes the byte, if used, for the print position indexing
feature.
- The third byte of the load module (the first byte of the FCB image)
is either the print position indexing byte, or the lines-per-inch
byte. The print position indexing byte is optional and, when used,
precedes the lines-per-inch byte. The 3203 Model 5, 3262 Model 5,
4245, 4248, and 6262 Model 14 printers accept and discard the index
byte if it is present, because they do not support the indexing feature.
A description of the print position indexing feature and its use can
be found in the publication IBM 3211 Printer, 3216 Interchangeable Train
Cartridge, and 3811 Printer Control Unit Component Description and
Operator's Guide.
The
special index flag in the third byte contains X'80' plus
a binary index value, from 1 to 32 (the default is 1). This index
value sets the left margin: 1 indicates flush-left; any other value
indicates a line indented the specified number of spaces.
The
form image begins with the lines-per-inch (LPI) byte. The LPI byte
defines the number of lines per inch (6 or 8) and also represents
the first line of the page.
Requirement: Printers controlled by JES2 require a channel 1 identifier
here.
Typically, the length of an FCB image is consistent
with the length of the form it represents. For example, an 8½ inch
form to be printed at 6 LPI has an FCB image that is 51 bytes long
(8½ inches times 6 LPI).
The LPI byte appears as follows:
Value |
Meaning |
---|
X'1n' |
Sets 8 LPI |
X'0n' |
Sets 6 LPI |
- All remaining bytes (lines) must contain X'0n', except
the last byte, which must be X'1n'. The letter n can be a
hexadecimal value from 1 to C, representing a channel (one to 12),
or it can be 0, which means no channel is indicated.
In Figure 1, an FCB load module is assembled
and added to SYS1.IMAGELIB. The image defines a print density of 8
lines per inch on an 11-inch form, with a right shift of 15 line character
positions (1½ inches).
Figure 1. Sample Code
to Assemble and Add an FCB Load Module to SYS1.IMAGELIB//ADDFCB JOB MSGLEVEL=1
//STEP EXEC PROC=ASMHCL,PARM.ASM='NODECK,LOAD',
// PARM.LKED='LIST,OL,REFR,RENT,XREF'
//ASM.SYSIN DD *
FCB2ID1 CSECT
*THIS EXAMPLE IS FOR A FORM LENGTH OF 11 INCHES WITH 8 LPI (88 LINES)
DC X'80' THIS IS A DEFAULT IMAGE
DC AL1(89) LENGTH OF FCB IMAGE AND INDEXING BYTE
DC X'8F' OFFSET 15 CHARACTERS TO THE RIGHT
DC X'10' 8 LINES PER INCH-NO CHANNEL FOR LINE 1
DC XL4'0' 4 LINES NO CHANNEL
DC X'01' CHANNEL 1 IN LINE 6
DC XL6'0' 6 LINES NO CHANNEL
DC X'02' CHANNEL 2 IN LINE 13
DC XL6'0' 6 LINES NO CHANNEL
DC X'03' CHANNEL 3 IN LINE 20
DC XL6'0' 6 LINES NO CHANNEL
DC X'04' CHANNEL 4 IN LINE 27
DC XL6'0' 6 LINES NO CHANNEL
DC X'05' CHANNEL 5 IN LINE 34
DC XL6'0' 6 LINES NO CHANNEL
DC X'06' CHANNEL 6 IN LINE 41
DC XL6'0' 6 LINES NO CHANNEL
DC X'07' CHANNEL 7 IN LINE 48
DC XL6'0' 6 LINES NO CHANNEL
DC X'08' CHANNEL 8 IN LINE 55
DC XL6'0' 6 LINES NO CHANNEL
DC X'09' CHANNEL 9 IN LINE 62
DC XL6'0' 6 LINES NO CHANNEL
DC X'0A' CHANNEL 10 IN LINE 69
DC XL6'0' 6 LINES NO CHANNEL
DC X'0B' CHANNEL 11 IN LINE 76
DC XL6'0' 6 LINES NO CHANNEL
DC X'0C' CHANNEL 12 IN LINE 83
DC XL4'0' 4 LINES NO CHANNEL
DC X'10' POSITION 88 LAST LINE IN IMAGE
END
/*
//LKED.SYSLMOD DD DSNAME=SYS1.IMAGELIB(FCB2ID1),DISP=OLD,
// SPACE= (OVERRIDE SECONDARY ALLOCATION)
For Figure 1, be aware of the following: - The RENT linkage editor attribute is required.
- Executing the ASMHCL procedure does not generate executable code.
The assembler/linkage editor is used to place the FCB image into SYS1.IMAGELIB.
- The SPACE parameter is overridden here because the ASMHCL cataloged
procedure has a secondary allocation specified. Eliminating the override
causes the original secondary allocation amount to be used.