In this section: |
Fixed-format sequential, VSAM, and ISAM data sources can contain more than one type of record. When they do, they can be structured in one of two ways:
If a positional relationship exists between the various record types, with a parent record of one type followed by one or more child records containing detail information about the parent, you describe the structure by defining the parent as the root, and the detail segments as descendants.
Some VSAM and ISAM data sources are structured so that descendant records relate to each other through concatenating key fields. That is, the key fields of a parent record serve as the first part of the key of a child record. In such cases, the segment key fields must be described using a GROUP declaration. Each segment GROUP key fields consist of the renamed key fields from the parent segment plus the unique key field from the child record.
If the records have no meaningful positional relationship, you have to provide some means for interpreting the type of record that has been read. Do this by creating a dummy root segment for the records.
In order to describe sequential data sources with several types of records, regardless of whether they are logically related, use the PARENT segment attribute and the RECTYPE field attribute. Any complex sequential data source is described as a multi-segment structure.
Key-sequenced VSAM and complex ISAM data sources also use the RECTYPE attribute to distinguish various record types within the data source.
A parent does not always share its RECTYPE with its descendants. It may share some other identifying piece of information, such as the PUBNO in the example. This is the field that should be included in the parent key, as well as the keys of all of its descendants, to relate them.
When using the RECTYPE attribute in VSAM or ISAM data sources with group keys, the RECTYPE field can be part of the segment group key only when it belongs to a segment that has no descendants, or to a segment whose descendants are described with an OCCURS attribute. In Describing VSAM Positionally Related Records, the RECTYPE field is added to the group key in the SERIANO segment, the lowest descendant segment in the chain.
It is always assumed that at least one record for each SEGTYPE will exist in positionally related types. The SEGTYPE is usually S0.
In the case where there is a unique relationship between the parent RECTYPE and a child RECTYPE, and only one record of the child is expected for a given parent, a SEGTYPE of U may be used. This will have the effect of making the second segment be a logical extension of the parent. An example is when a given bookcode has only one book name but might have multiple editions. Then, edition information can be sorted by BOOKCODE or BOOKNAME.
Note: When specifying SEGTYPE U for this type of file, the rule is that there must be an instance of the child for each parent instance. If the child instance is missing, the results are unpredictable and will not be defaulted to blanks.
How to: |
When a data source contains multiple record types, there must be a field in the records themselves that can be used to differentiate between the record types. You can find information on this field in your existing description of the data source (for example, a COBOL FD statement). This field must appear in the same physical location of each record. For example, columns 79 and 80 can contain a different two-digit code for each unique record type. Describe this identifying field with the field name RECTYPE.
Another technique for redefining the parts of records is to use the MAPFIELD and MAPVALUE attributes described in Describing a Repeating Group Using MAPFIELD.
The RECTYPE field must fall in the same physical location of each record in the data source, or the record is ignored. The syntax to describe the RECTYPE field is
FIELDNAME = RECTYPE, ALIAS = value, USAGE = format, ACTUAL = format, ACCEPT = {list|range} ,$
where:
Is the record type in alphanumeric format, if an ACCEPT list is not specified. If there is an ACCEPT list, this can be any value.
Is the data type of the field. In addition to RECTYPE fields in alphanumeric format, RECTYPE fields in packed and integer formats (formats P and I) are supported. Possible values are:
An (where n is 1-4095) indicates character data, including letters, digits, and other characters.
In indicates ACTUAL (internal) format binary integers:
The USAGE format can be I1 through I9, depending on the magnitude of the ACTUAL format.
Pn (where n is 1-16) indicates packed decimal ACTUAL (internal) format. n is the number of bytes, each of which contains two digits, except for the last byte which contains a digit and the sign. For example, P6 means 11 digits plus a sign.
If the field contains an assumed decimal point, represent the field with a USAGE format of Pm.n, where m is the total number of digits, and n is the number of decimal places. Thus, P11.1 means an eleven-digit number with one decimal place.
Is a list of one or more lines of specific RECTYPE values for records that have the same segment layout. The maximum number of characters allowed in the list is 255. Separate each item in the list with either a blank or the keyword OR. If the list contains embedded blanks or commas, it must be enclosed within single quotation marks. The list may contain a single RECTYPE value. For example:
FIELDNAME = RECTYPE, ALIAS = TYPEABC, USAGE = A1,ACTUAL = A1, ACCEPT = A OR B OR C, $
Is a range of one or more lines of RECTYPE values for records that have the same segment layout. The maximum number of characters allowed in the range is 255. If the range contains embedded blanks or commas, it must be enclosed within single quotation marks.
To specify a range of values, include the lowest value, the keyword TO, and the highest value, in that order. For example:
FIELDNAME = RECTYPE, ALIAS = ACCTREC, USAGE = P3,ACTUAL = P2, ACCEPT = 100 TO 200, $
The following field description is of a one-byte packed RECTYPE field containing the value 1:
FIELD = RECTYPE, ALIAS = 1, USAGE = P1, ACTUAL = P1, $
The following field description is of a three-byte alphanumeric RECTYPE field containing the value A34:
FIELD = RECTYPE, ALIAS = A34, USAGE = A3, ACTUAL = A3,$
The following diagram shows a more complex version of the library data source:
Information that is common to all copies of a given book (the identifying number, the author name, and its title) has the same record type. All of this information is assigned to the root segment in the Master File. The synopsis is common to all copies of a given book, but in this data source it is described as a series of repeating fields of ten characters each, in order to save space.
The synopsis is assigned to its own subordinate segment with an attribute of OCCURS=VARIABLE in the Master File. Although there are segments in the diagram to the right of the OCCURS=VARIABLE segment, OCCURS=VARIABLE is the rightmost segment within its own record type. Only segments with a RECTYPE that is different from the OCCURS=VARIABLE segment can appear to its right in the structure. Note also that the OCCURS=VARIABLE segment does not have a RECTYPE. This is because it is part of the same record as its parent segment.
Binding and price can vary among copies of a given title. For instance, the library may have two different versions of Pamela, one a paperback costing $7.95, the other a hardcover costing $15.50. These two fields are of a second record type, and are assigned to a descendant segment in the Master File.
Finally, every copy of the book in the library has its own identifying serial number, which is described in a field of record type S. In the Master File, this information is assigned to a segment that is a child of the segment containing the binding and price information.
Use the following Master File to describe this data source:
FILENAME = LIBRARY2, SUFFIX = FIX,$ SEGNAME = PUBINFO, SEGTYPE = S0,$ FIELDNAME = RECTYPE ,ALIAS = P ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = PUBNO ,ALIAS = PN ,USAGE = A10 ,ACTUAL = A10 ,$ FIELDNAME = AUTHOR ,ALIAS = AT ,USAGE = A25 ,ACTUAL = A25 ,$ FIELDNAME = TITLE ,ALIAS = TL ,USAGE = A50 ,ACTUAL = A50 ,$ SEGNAME = SYNOPSIS, PARENT = PUBINFO, OCCURS = VARIABLE, SEGTYPE = S0,$ FIELDNAME = PLOTLINE ,ALIAS = PLOTL ,USAGE = A10 ,ACTUAL = A10 ,$ SEGNAME = BOOKINFO, PARENT = PUBINFO, SEGTYPE = S0,$ FIELDNAME = RECTYPE ,ALIAS = B ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = BINDING ,ALIAS = BI ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = PRICE ,ALIAS = PR ,USAGE = D8.2N ,ACTUAL = D8 ,$ SEGNAME = SERIANO, PARENT = BOOKINFO, SEGTYPE = S0,$ FIELDNAME = RECTYPE ,ALIAS = S ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = SERIAL ,ALIAS = SN ,USAGE = A15 ,ACTUAL = A15 ,$
Note that each segment, except OCCURS, contains a field named RECTYPE and that the ALIAS for the field contains a unique value for each segment (P, B, and S). If there is a record in this data source with a RECTYPE other than P, B, or S, the record is ignored. The RECTYPE field must fall in the same physical location in each record.
Physical order determines parent/child relationships in sequential records. Every parent record does not need descendants. Specify how you want data in missing segment instances handled in your reports by using the SET command to change the ALL parameter. The SET command is described in the Developing Reporting Applications manual.
In the example in Describing Positionally Related Records, if the first record in the data source is not a PUBINFO record, the record is considered to be a child without a parent. Any information allotted to the SYNOPSIS segment appears in the PUBINFO record. The next record may be a BOOKINFO or even another PUBINFO (in which case the first PUBINFO is assumed to have no descendants). Any SERIANO records are assumed to be descendants of the previous BOOKINFO record. If a SERIANO record follows a PUBINFO record with no intervening BOOKINFO, it is treated as if it has no parent.
Consider the following VSAM data source that contains three types of records. The ROOT records have a key that consists of the publisher number, PUBNO. The BOOKINFO segment has a key that consists of that same publisher number, plus a hard-cover or soft-cover indicator, BINDING. The SERIANO segment key consists of the first two elements, plus a record type field, RECTYPE.
FILENAME = LIBRARY6, SUFFIX = VSAM,$ SEGNAME = ROOT, SEGTYPE = S0,$ GROUP=PUBKEY ,ALIAS=KEY ,USAGE=A10 ,ACTUAL=A10 ,$ FIELDNAME=PUBNO ,ALIAS=PN ,USAGE=A10 ,ACTUAL=A10 ,$ FIELDNAME=FILLER ,ALIAS= ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=RECTYPE ,ALIAS=1 ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=AUTHOR ,ALIAS=AT ,USAGE=A25 ,ACTUAL=A25 ,$ FIELDNAME=TITLE ,ALIAS=TL ,USAGE=A50 ,ACTUAL=A50 ,$ SEGNAME=BOOKINFO,PARENT=ROOT, SEGTYPE=S0,$ GROUP=BOINKEY ,ALIAS=KEY ,USAGE=A11 ,ACTUAL=A11 ,$ FIELDNAME=PUBNO1 ,ALIAS=P1 ,USAGE=A10 ,ACTUAL=A10 ,$ FIELDNAME=BINDING ,ALIAS=BI ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=RECTYPE ,ALIAS=2 ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=PRICE ,ALIAS=PR ,USAGE=D8.2N ,ACTUAL=D8 ,$ SEGNAME=SERIANO, PARENT=BOOKINFO,SEGTYPE=S0,$ GROUP=SERIKEY ,ALIAS=KEY ,USAGE=A12 ,ACTUAL=A12 ,$ FIELDNAME=PUBNO2 ,ALIAS=P2 ,USAGE=A10 ,ACTUAL=A10 ,$ FIELDNAME=BINDING1 ,ALIAS=B1 ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=RECTYPE ,ALIAS=3 ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=SERIAL ,ALIAS=SN ,USAGE=A15 ,ACTUAL=A15 ,$ SEGNAME=SYNOPSIS,PARENT=ROOT, SEGTYPE=S0, OCCURS=VARIABLE,$ FIELDNAME=PLOTLINE ,ALIAS=PLOTL ,USAGE=A10 ,ACTUAL=A10 ,$
Notice that the length of the key fields specified in the USAGE and ACTUAL attributes of a GROUP declaration is the length of the key fields from the parent segments, plus the length of the added field of the child segment (RECTYPE field). In the example above, the length of the GROUP key SERIKEY equals the length of PUBNO2 and BINDING1, the group key from the parent segment, plus the length of RECTYPE, the field added to the group key in the child segment. The length of the key increases as you traverse the structure.
Note: Each segment key describes as much of the true key as needed to find the next instance of that segment.
In the sample data source, the repetition of the publisher number as PUBNO1 and PUBNO2 in the descendant segments interrelates the three types of records.
The data source can be diagrammed as the following structure:
A typical query may request information on price and call numbers for a specific publisher number:
PRINT PRICE AND SERIAL BY PUBNO IF PUBNO EQ 1234567890 OR 9876054321
Since PUBNO is part of the key, retrieval can occur quickly, and the processing continues. To further speed retrieval, add search criteria based on the BINDING field, which is also part of the key.
Some VSAM and ISAM data sources do not have records that are related to one another. That is, the VSAM or ISAM key of one record type is independent of the keys of other record types. To describe data sources with unrelated records, define a dummy root segment for the record types. The following rules apply to the dummy root segment:
All other non-repeating segments must point to the dummy root as their parent. Except for the root, all non-repeating segments must have a RECTYPE and a PARENT attribute and describe the full VSAM/ISAM key. If the data source does not have a key, the group should not be described. RECTYPEs may be anywhere in the record.
The library data source has three types of records: book information, magazine information, and newspaper information. Since these three record types have nothing in common, they cannot be described as parent records followed by detail records.
The data source can look like this:
A structure such as the following can also describe this data source:
The Master File for the structure in this example is:
FILENAME = LIBRARY3, SUFFIX = FIX,$ SEGMENT = DUMMY, SEGTYPE = S0,$ FIELDNAME= ,ALIAS= ,USAGE = A1 ,ACTUAL = A1 ,$ SEGMENT = BOOK, PARENT = DUMMY, SEGTYPE = S0,$ FIELDNAME = RECTYPE ,ALIAS = B ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = PUBNO ,ALIAS = PN ,USAGE = A10 ,ACTUAL = A10 ,$ FIELDNAME = AUTHOR ,ALIAS = AT ,USAGE = A25 ,ACTUAL = A25 ,$ FIELDNAME = TITLE ,ALIAS = TL ,USAGE = A50 ,ACTUAL = A50 ,$ FIELDNAME = BINDING ,ALIAS = BI ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = PRICE ,ALIAS = PR ,USAGE = D8.2N ,ACTUAL = D8 ,$ FIELDNAME = SERIAL ,ALIAS = SN ,USAGE = A15 ,ACTUAL = A15 ,$ FIELDNAME = SYNOPSIS ,ALIAS = SY ,USAGE = A150 ,ACTUAL = A150 ,$ SEGMENT = MAGAZINE, PARENT = DUMMY, SEGTYPE = S0,$ FIELDNAME = RECTYPE ,ALIAS = M ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = PER_NO ,ALIAS = PN ,USAGE = A10 ,ACTUAL = A10 ,$ FIELDNAME = PER_NAME ,ALIAS = NA ,USAGE = A50 ,ACTUAL = A50 ,$ FIELDNAME = VOL_NO ,ALIAS = VN ,USAGE = I2 ,ACTUAL = I2 ,$ FIELDNAME = ISSUE_NO ,ALIAS = IN ,USAGE = I2 ,ACTUAL = I2 ,$ FIELDNAME = PER_DATE ,ALIAS = DT ,USAGE = I6MDY ,ACTUAL = I6 ,$ SEGMENT = NEWSPAP, PARENT = DUMMY, SEGTYPE = S0,$ FIELDNAME = RECTYPE ,ALIAS = N ,USAGE = A1 ,ACTUAL = A1 ,$ FIELDNAME = NEW_NAME ,ALIAS = NN ,USAGE = A50 ,ACTUAL = A50 ,$ FIELDNAME = NEW_DATE ,ALIAS = ND ,USAGE = I6MDY ,ACTUAL = I6 ,$ FIELDNAME = NVOL_NO ,ALIAS = NV ,USAGE = I2 ,ACTUAL = I2 ,$ FIELDNAME = ISSUE ,ALIAS = NI ,USAGE = I2 ,ACTUAL = I2 ,$
Consider another VSAM data source containing information on the library. This data source has three types of records: book information, magazine information, and newspaper information.
There are two possible structures:
The RECTYPE is the beginning of the key. The key structure is:
RECTYPE B |
Book Code |
RECTYPE M |
Magazine Code |
RECTYPE N |
Newspaper Code |
The sequence of records is:
Book |
Book |
Magazine |
Magazine |
Newspaper |
Newspaper |
Note the difference between the use of the RECTYPE here and its use when the records are positionally related. In this case, the codes are unrelated and the database designer has chosen to accumulate the records by type first (all the book information together, all the magazine information together, and all the newspaper information together), so the RECTYPE may be the initial part of the key.
The RECTYPE is not in the beginning of the key or is outside of the key.
The key structure is:
Book Code |
Magazine Code |
Newspaper Code |
The sequence of record types in the data source can be arbitrary.
Both types of file structure can be represented by the following:
FILE=LIBRARY7, SUFFIX=VSAM,$ SEGMENT=DUMMY,$ FIELDNAME= ,ALIAS= ,USAGE=A1 ,ACTUAL=A1 ,$ SEGMENT=BOOK, PARENT=DUMMY,SEGTYPE=S0,$ GROUP=BOOKKEY ,ALIAS=KEY ,USAGE=A11 ,ACTUAL=A11 ,$ FIELDNAME=PUBNO ,ALIAS=PN ,USAGE=A3 ,ACTUAL=A3 ,$ FIELDNAME=AUTHNO ,ALIAS=AN ,USAGE=A3 ,ACTUAL=A3 ,$ FIELDNAME=TITLNO ,ALIAS=TN ,USAGE=A4 ,ACTUAL=A4 ,$ FIELDNAME=RECTYPE ,ALIAS=B ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=AUTHOR ,ALIAS=AT ,USAGE=A25 ,ACTUAL=A25 ,$ FIELDNAME=TITLE ,ALIAS=TL ,USAGE=A50 ,ACTUAL=A50 ,$ FIELDNAME=BINDING ,ALIAS=BI ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=PRICE ,ALIAS=PR ,USAGE=D8.2N ,ACTUAL=D8 ,$ FIELDNAME=SERIAL ,ALIAS=SN ,USAGE=A15 ,ACTUAL=A15 ,$ FIELDNAME=SYNOPSIS ,ALIAS=SY ,USAGE=A150 ,ACTUAL=A150 ,$ SEGMENT=MAGAZINE, PARENT=DUMMY, SEGTYPE=S0,$ GROUP=MAGKEY ,ALIAS=KEY ,USAGE=A11 ,ACTUAL=A11 ,$ FIELDNAME=VOLNO ,ALIAS=VN ,USAGE=A2 ,ACTUAL=A2 ,$ FIELDNAME=ISSUNO ,ALIAS=IN ,USAGE=A2 ,ACTUAL=A2 ,$ FIELDNAME=PERDAT ,ALIAS=DT ,USAGE=A6 ,ACTUAL=A6 ,$ FIELDNAME=RECTYPE ,ALIAS=M ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=PER_NAME ,ALIAS=PRN ,USAGE=A50 ,ACTUAL=A50 ,$ SEGMENT=NEWSPAP, PARENT=DUMMY, SEGTYPE=S0,$ GROUP=NEWSKEY ,ALIAS=KEY ,USAGE=A11 ,ACTUAL=A11 ,$ FIELDNAME=NEWDAT ,ALIAS=ND ,USAGE=A6 ,ACTUAL=A6 ,$ FIELDNAME=NVOLNO ,ALIAS=NV ,USAGE=A2 ,ACTUAL=A2 ,$ FIELDNAME=NISSUE ,ALIAS=NI ,USAGE=A2 ,ACTUAL=A2 ,$ FIELDNAME=RECTYPE ,ALIAS=N ,USAGE=A1 ,ACTUAL=A1 ,$ FIELDNAME=NEWNAME ,ALIAS=NN ,USAGE=A50 ,ACTUAL=A50 ,$
How to: |
If your fixed-format sequential, VSAM, or ISAM data source has multiple record types that share the same layout, you can specify a single generalized segment that describes all record types that have the common layout. By using a generalized segment (also known as a generalized RECTYPE) instead of one segment per record type, you reduce the number of segments you need to describe in the Master File.
When using a generalized segment, you identify RECTYPE values using the ACCEPT attribute. You can assign any value to the ALIAS attribute.
FIELDNAME = RECTYPE, ALIAS = alias, USAGE = format, ACTUAL = format, ACCEPT = {list|range} ,$
where:
Is the required field name.
Note: Since the field name, RECTYPE, may not be unique across segments, you should not use it in this way unless you qualify it. An alias is not required. You may leave it blank.
Is any valid alias specification. You can specify a unique name as the alias value for the RECTYPE field only if you use the ACCEPT attribute. The alias can then be used in a TABLE request as a display field, a sort field, or in selection tests using either WHERE or IF.
Is a list of one or more lines of specific RECTYPE values for records that have the same segment layout. The maximum number of characters allowed in the list is 255. Each item in the list must be separated by either a blank or the keyword OR. If the list contains embedded blanks or commas, it must be enclosed within single quotation marks. The list may contain a single RECTYPE value. For example:
FIELDNAME = RECTYPE, ALIAS = TYPEABC, USAGE = A1,ACTUAL = A1, ACCEPT = A OR B OR C, $
Is a range of one or more lines of RECTYPE values for records that have the same segment layout. The maximum number of characters allowed in the range is 255. If the range contains embedded blanks or commas, it must be enclosed within single quotation marks.
To specify a range of values, include the lowest value, the keyword TO, and the highest value, in that order. For example:
FIELDNAME = RECTYPE, ALIAS = ACCTREC, USAGE = P3,ACTUAL = P2, ACCEPT = 100 TO 200, $
To illustrate the use of the generalized record type in a VSAM Master File, consider the following record layouts in the DOC data source. Record type DN is the root segment and contains the document number and title. Record types M, I, and C contain information about manuals, installation guides, and course guides, respectively. Notice that record types M and I have the same layout.
Record type DN:
---KEY--- +----------------------------------------------------------------------+ DOCID FILLER RECTYPE TITLE +----------------------------------------------------------------------+
Record type M:
--------KEY-------- +----------------------------------------------------------------------+ MDOCID MDATE RECTYPE MRELEASE MPAGES FILLER +----------------------------------------------------------------------+
Record type I:
--------KEY-------- +----------------------------------------------------------------------+ IDOCID IDATE RECTYPE IRELEASE IPAGES FILLER +----------------------------------------------------------------------+
Record type C:
--------KEY-------- +----------------------------------------------------------------------+ CRSEDOC CDATE RECTYPE COURSENUM LEVEL CPAGES FILLER +----------------------------------------------------------------------+
Without the ACCEPT attribute, each of the four record types must be described as separate segments in the Master File. A unique set of field names must be provided for record type M and record type I, although they have the same layout.
The generalized RECTYPE capability enables you to code just one set of field names that applies to the record layout for both record type M and I. The ACCEPT attribute can be used for any RECTYPE specification, even when there is only one acceptable value.
FILENAME=DOC2, SUFFIX=VSAM,$ SEGNAME=ROOT, SEGTYPE=SO,$ GROUP=DOCNUM, ALIAS=KEY, A5, A5, $ FIELD=DOCID, ALIAS=SEQNUM, A5, A5, $ FIELD=FILLER, ALIAS,= A5, A5, $ FIELD=RECTYPE, ALIAS=DOCRECORD, A3, A3, ACCEPT = DN,$ FIELD=TITLE, ALIAS=, A18, A18, $ SEGNAME=MANUALS, PARENT=ROOT, SEGTYPE=SO,$ GROUP=MDOCNUM, ALIAS=KEY, A10, A10,$ FIELD=MDOCID, ALIAS=MSEQNUM, A5, A5, $ FIELD=MDATE, ALIAS=MPUBDATE, A5, A5, $ FIELD=RECTYPE, ALIAS=MANUAL, A3, A3, ACCEPT = M OR I,$ FIELD=MRELEASE, ALIAS=, A7, A7, $ FIELD=MPAGES, ALIAS=, I5, A5, $ FIELD=FILLER, ALIAS=, A6, A6, $ SEGNAME=COURSES, PARENT=ROOT, SEGTYPE=SO,$ GROUP=CRSEDOC, ALIAS=KEY, A10, A10,$ FIELD=CDOCID, ALIAS=CSEQNUM, A5, A5, $ FIELD=CDATE, ALIAS=CPUBDATE, A5, A5, $ FIELD=RECTYPE, ALIAS=COURSE, A3, A3, ACCEPT = C,$ FIELD=COURSENUM, ALIAS=CNUM, A4, A4, $ FIELD=LEVEL, ALIAS=, A2, A2, $ FIELD=CPAGES, ALIAS=, I5, A5, $ FIELD=FILLER, ALIAS=, A7, A7, $
You can include an alias for the RECTYPE field if you use the ACCEPT attribute to specify one or more RECTYPE values in the Master File. This enables you to use the alias in a report request as a display field, as a sort field, or in selection tests using either WHERE or IF.
Display the RECTYPE values by including the alias as a display field. In this example, the alias MANUAL displays the RECTYPE values M and I:
TABLE FILE DOC PRINT MANUAL MRELEASE MPAGES BY DOCID BY TITLE BY MDATE END
The output is:
PAGE 1 DOCID TITLE MDATE RECTYPE MRELEASE MPAGES ----- ----- ----- ------- -------- ------ 40001 FOCUS USERS MANUAL 8601 M 5.0 1800 8708 M 5.5 2000 40057 MVS INSTALL GUIDE 8806 I 5.5.3 66 8808 I 5.5.4 66 40114 zOS INSTALL GUIDE 8806 I 5.5.3 58 8808 I 5.5.4 58
You can use the alias in a WHERE test to display a subset of records:
TABLE FILE DOC PRINT MANUAL MRELEASE MPAGES BY DOCID BY TITLE BY MDATE WHERE MANUAL EQ 'I' END
The output is:
PAGE 1 DOCID TITLE MDATE RECTYPE MRELEASE MPAGES ----- ----- ----- ------- -------- ------ 40057 MVS INSTALL GUIDE 8806 I 5.5.3 66 8808 I 5.5.4 66 40114 zOS INSTALL GUIDE 8806 I 5.5.3 58 8808 I 5.5.4 58