gtpp1m0l | Program Development Support Reference |
The STC utility provides a powerful data generation facility. A data or message record can be generated completely from control record input.
The data generation routine (DGR) creates or alters the records specified by the user-defined data generation input. The amount of working storage available to DGR determines how many records can be created with one set of input called one GSTAR set. DGR uses whatever working storage is available after all STC programs and required IBM MVS support routines have been loaded. Enough main storage is allocated as working storage to support 50 4K records. Therefore, using one set of input records, that is, one GSTAR record, users may create as many records (of any particular length) as will fit in a 50 times 4K space. If DGR cannot create all the records requested, it will create as many as possible and send a message indicating how many were created. The STC utility inserts delimiters on the output tape to identify the generated data for the loading program.
If a description of the format of the record to be generated is available in the DRIL file, then symbolic field names can be used. The STC utility determines the displacements and attributes from the DRIL record. By using DRIL records, you do not need to code as many statements and much of the required information is defaulted.
The DRIL file distributed to all users contains a variety of different record formats. You must select the necessary DRIL records from the distributed DRIL file that meet the user installation needs or add any user-defined records that are required.
The AMSG records (AM0SG, AM1SG, and AM2SG) should be retained in DRIL, especially if your system contains 3270 or SNA support. By using the AM0SG format to code 3270 and SNA messages, much of the header information is automatically placed in the header and the message length is calculated. If numeric displacements were used to code these messages, each displacement and message length would have to be calculated.
If samples of the desired record type are available on SDMF, then data generation can be simplified further. Each data record or message record sample in SDMF is identified by record type and sequence number in its header section. You can have any sample record from SDMF written to tape. If the SDMF sample does not completely meet your requirements, then the sample can be called from SDMF and modified.
SDMF also contains group records. Each SDMF GROUP record has a unique identification in its header. The GROUP record may contain a variable number of sample records of one or more record types. You can simply specify the GROUP identification instead of specifying the identification for each data record or message record individually.
Data records and message records are created by the STC utility with the same procedures described here. However, PTV requires that messages and data records be identified and loaded separately.
The DATA record shown in Table 5 must precede all data generation input.
Position | Content | Description |
---|---|---|
1 | Blank | Not Applicable |
2-5 | DATA | Record identification. |
6-80 | Blank | Not Applicable |
The MSG record shown in Table 6 must precede all input for generation of messages. When both messages and data records are being generated, all data record generation input must precede all message record generation input.
If the message is to be generated with an address in the
interchange/line address/terminal address (IALNTA) form rather than
the line address, interchange, terminal (LNIATA), certain control characters
must also be supplied. The first character of text must be a
hexadecimal 7A or the last character of text must be a character B or
hexadecimal C2. This represents a circle B character which is also used
for control. When an input message is coded for SENSE data, it should
be coded as SENSE=xxxx in position 5-14 of the MSG
record.
Position | Content | Description |
---|---|---|
1 | Blank | Not Applicable |
2-4 | MSG | Record identification. |
5-80 | Blank | Not Applicable |
A GSTAR and GEND record are used to generate:
One or more detail generation records must be included between each GSTAR and GEND record.
The GSTAR record identifies the records to be generated.
Position | Content | Description |
---|---|---|
1-5 |
X...X Blank | Record length, record type, or blank. |
6-9 | Blank | Not Applicable |
10-14 | GSTAR | Record identification. |
15 | Blank | Not Applicable |
16-n | X...X | The number of records, SMF record ID, or SDMF GROUP record ID. |
Record Length: 1-4 decimal digits, no leading zeroes.
Record Type: Name of the record type if it is included in DRIL. The DRIL name of a record type is the same as the name of the data macro used to define the record in an application program.
Blank: Positions 1-5 are left blank when a GROUP record is called.
1-4 decimal digits, left-justified, specifying the number of records to be generated in the set, followed by a period, or:
If a sample of the desired record is available on SDMF, enter SDMF 12-character identification and sequence number, followed by a comma, and number of records (above), or:
To call a predefined group of records from SDMF, enter the 12-character identification of the GROUP record, followed by a period.
The GEND record marks the end of the data generation records that began
with the preceding GSTAR record. A GEND record must precede a new GSTAR
set of records.
Position | Content | Description |
---|---|---|
1 | Blank | Not Applicable |
10-13 | GEND | Record identification. |
14 | Blank | Not Applicable |
Data generation detail records cause the STC utility to generate fields of
data either within the record or in the STC prefix. See Data Generation Operations for detailed descriptions and examples of each data operand
and its parameters.
Table 9. Data Generation Detail Record Format
Position | Content | Description |
---|---|---|
1-6 | X...X | Field location. |
7-9 | Blank | Not Applicable |
10-15 | X...X | Data operation code. |
16-71 | X...X | Field set operands. |
72 | X | Continuation character. |
Data Operation Code: Table 10 summarizes the operation codes for each data generation operation.
Field Set Operands: Table 10 specifies the required format and explains the field set operands.
If no continuation record follows, position 72 must be blank.
If position 1-6 in the detail record contains a symbolic DRIL address, and if the named field is continuous (field set exceeds 55 characters or 52 hexadecimal digits), then position 72 must contain a semicolon (;). The field set continues from position 16 on the next detail record; position 1-15 must be blank. This is the only situation in which a field set can be divided between two data generation detail records.
For a continuous hexadecimal field, each continuation record must begin with X in position 16-17 and end with an apostrophe (').
A period (.) delimits the data entered on any one record. If a period does not immediately follow the data to be entered, then the STC utility enters all the data from the beginning of the operand field (position 16) through position 71. This will cause blanks to appear in the data record.
If a detail record with the ENT operation code follows a GSTAR to generate more than one record, then any nonblank character except a semicolon (;) entered in position 72 indicates continuation on position 16 of the next detail record. Positions 1-15 on the continuation detail record must be blank.
If there is a nonblank character (except a semicolon) in position 72, then the last character entered in position 16-71 must be a comma or a period.
One record can be initialized with multiple data generation detail records if:
Each detail record should have a semicolon in position 72 except for the last one. This detail record should have a nonblank character (except a semicolon) in position 72 and the required comma or period in position 16-71.
Table 10. Data Generation Detail Records
Data Operation | Operation Code | Format of Field Set Operands |
---|---|---|
Enter | ENT | V,V,...V |
Enter Item | ENTIT | R1-S1-V,V,...,V |
Repeat | REP | V1-R1-R2 |
Repeat Item | REPST | V-S1-S2 |
Add | ADD | V-D-R1-R2 |
Add Item | ADDST | V-D-S1-S2 |
Subtract | SUB | V-D-R1-R2 |
Subtract Item | SUBST | V-D-S1-S2 |
|
Enter the data (V) in record 1 or in successive records starting with record 1. Multiple record inputs must be separated by a comma (,). The last record input must be followed by a period. If commas or periods are to appear in the output text, they must be entered in pairs. Therefore, if the text 3.25 inches, color blue is required in a record it must be entered as 3..25 inches, color blue. The extra comma or period will not appear in the output. Multiple inputs must not exceed the number of records generated in this GSTAR set.
Figure 5 shows an example of Enter (ENT V.).
Figure 5. Data Generation Operations - Enter (ENT V.) Example
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... 50 ENT X'C1C2',1234. WA0BID ENT WA,WA |
At location 50, enter hex digits C1C2 in record 1. Enter characters 1234 in record 2. At field WA0BID, enter the characters WA in record 1 and in record 2.
Enter the data (V) in the specified item (S1) in the specified record (R1). See Enter (ENT V.) for more information about commas and periods.
ENTIT is only used with DRIL records. DRIL attributes determine whether the data is left-justified or right-justified in the item.
Figure 6 shows an example of the Enter item.
Figure 6. Data Generation Operations - Enter Item Example
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... PD1ITM ENTIT 1-4-X'084340C1C3'. PD1NAM ENTIT 1-21-JOHN SMITH,MY NAME. |
At field PD1ITM, enter the hex characters 084340C1C3 into the fourth item in record 1. At field PD1NAM, enter the characters JOHN SMITH into item 21 and the characters MY NAME into item 22 in record 1.
Enter the data (V) in each record in the specified sequence of records (R1 through R2).
Figure 7 shows an example of Repeat.
Figure 7. Data Generation Operations - Repeat Example
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... 35 REP X'C1C2'-16-19. WI0ARC REP AB-5-7. |
At location 35, enter the hexadecimal characters C1C2 in record 16, record 17, record 18, and record 19. At field WI0ARC, place the characters AB in record 5, record 6, and record 7.
Place the data (V) in each item in the specified sequence of items (S1 through S2), in the first or only record in the GSTAR set.
Figure 8 shows an example of the Repeat Item
Figure 8. Data Generation Operations - Repeat Item Example
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... 40 REPST X'C1C2'-7-10. P010AC REPST NW-2-5. |
At location 40, place the hex digits C1C2 in item 7, item 8, item 9, and item 10. At field P010AC, place the characters NW in item 2, item 3, item 4, and item 5.
Place the data (V) in the first record (R1). Subtract the constant value (D) from the first record and place the balance in the second record. Continue to subtract by the constant value and place the balance in the sequence of records (R1 through R2).
Figure 9 shows an example of Subtract.
Figure 9. Data Generation Operations - Subtract Example
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... ID2NGL SUB X'4F'-4-2-4. |
At field ID2NGL, place hexadecimal 4F in record 2. Subtract 4 from record 2 and place hexadecimal 4B in record 3. Repeat and place hexadecimal 3F in record 4.
Place the data (V) in the first item (S1), in the first or only record of the set. Subtract the constant value (D) from the first item and place the balance in the next item. Repeat the process until the last item (S2) is reached.
Figure 10 shows an example of the Subtract Item.
Figure 10. Data Generation Operations - Subtract Item Example
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... PQ5QGN SUBST X'7B'-1-1-4. |
At field PQ5QGN, place hexadecimal 7B in the first item. Subtract 1 and place hexadecimal 7A in the second item. Repeat and place hexadecimal 79 in item 3. Repeat and place hexadecimal 78 in item 4.
The data (V) is placed in the first specified record of the set (R1) and incremented by the constant (D) for each successive record through R2.
Figure 11 shows an example of Add.
Figure 11. Data Generation Operations - Add Example
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... IH0IS2 ADD X'2B'-2-16-19. |
At field IH0IS2, place hexadecimal 2B in record 16. Add 2 to record 16 value and place hex 2D in record 17. Repeat and place hex 2F in record 18. Repeat and place hex 31 in record 19.
Place the data (V) in the first item specified (S1), increment that value by the constant (D), and place the sum in each item in the sequence of items through S2.
Figure 12 shows an example of the Add Item.
Figure 12. Data Generation Operations - Add Item Example
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... NI0MAP ADDST X'5B'-3-10-12. |
At field NI0MAP, place hex 5B in item 10. Increment by 3 and place hex 5E in item 11. Repeat and place hex 61 in item 12.
The STC utility attaches a prefix to every data record written on its output tape. The prefix communicates address information to the loading program. File addresses must always be specified in FACE record type, ordinal number form; these formats are converted to machine addresses by the loading program.
You can generate the prefix as well as the data record itself with data generation detail record input. If the data record is called from SDMF, the SDMF prefix usually contains a load address and the necessary indicators for the loading program. Unless you want to change the prefix contents, the STC utility copies it.
The 4 areas of the prefix that can be generated or altered by using detail record input are:
To retrieve a data record at online test time, the prefix must contain a FACE-type file address that identifies where the record will be loaded. The following describes how to define such an address in a record being created; if the record is called from SDMF and already contains such an address, this section can be ignored. To specify a FACE-type file address, you must use the symbolic field name BSTA06, and either the ADD, ENT, or SUB data generation function.
Figure 13 shows an example of how to create 5 blank inventory detail records.
Figure 13. Fixed File Load Address Example
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... PD1PD GSTAR 5. BSTA06 ADD (#PDNRI)10-1-1-5. |
The FACE-type record address must be written in the form shown: the SYSEQ symbol for the FACE record type (#PNDRI in this example) follows the data operation code, is enclosed in parentheses, and must be 6 characters in length. (Do not code the decimal equate value. You must code the SYSEQ symbol for the FACE record type.) This is immediately followed by the ordinal number of the first record affected by the data operation. In this example, the 5 inventory detail records are created. The STC prefix of each record will contain the system equate for the FACE-type indicator and ordinal number 10, 11, 12, 13, 14, respectively.
A main storage load address is only valid for data records on unit test tapes. You must specify the absolute main storage address through the symbolic field name. The ADD, ENT, or SUB data generation functions can be used.
One or more ORD records can be used.
Position | Content | Description |
---|---|---|
1-9 | Blank | Not Applicable |
10-12 | ORD | Record identifier. |
16-71 | F-L-B(,F-L-B...) | File address information. |
72 | X | Continuation indicator. |
File Address Information:
If more file address information is given on another record, then a comma (,) must be the last character entered within position 16-71 on the ORD record. The last character after the last or only F-L-B set must be a period (.).
Continuation Indicator: X must be specified in position 72 to indicate that a continuation of the ORD record begins at position 16 in the next record.
If position 72 is blank, the ORD information does not continue onto another record.
The SIZ record overrides the length in the prefix of a DRIL or SDMF
record.
Position | Content | Description |
---|---|---|
1-4 | XXXX | Record length. |
10-12 | SIZ | Record identification. |
13-80 | Comments. |
Record length: 1-4, left-justified, decimal digits specifying the new length of the records to be created.
The GSTAR record sets up the creation of three 1055-byte AAA records. When the SIZ record is processed, the record length for each of the three records is changed to 381 bytes.
Figure 14 shows an example of a new record length.
Figure 14. New Record Length Example
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... WA0AA GSTAR 3. 381 SIZ ... GEND |
It is possible to create certain SDMF records, called GROUP records, that can greatly reduce the number of input statements needed for defining the contents of the STC output tape. With a single GSTAR data generation statement a GROUP record can be called from SDMF that in turn will call many other records from SDMF, just as though those records called were in the input stream. When a GROUP record is called, other records identified within it are placed on the STC output tape in the section indicated, either DATA or MSG. The procedure to call a GROUP record that would place 3 global records on the STC output tape would be as follows.
If GROUP0000001 contains the following records, then, Figure 15 will place records on the STC output tape:
Figure 15. Group Records Example
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... GSTAR GROUP0000001. GEND |
The STC utility permits a group record to call another group of records. For example, to place 2 PNR records and 4 PNID records on the test unit tape (these are record types for the airline reservations application program):
If GROUP0000002 contains the following records:
and GROUP000004 contains these records:
Then, Figure 16 will place the records on the STC output tape.
Figure 16. Group Record Example
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... GSTAR GROUP0000004. GEND |
Figure 17 shows an example of records that will generate a group record.
Figure 17. Example of Records that Generate a Group Record
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... SDMU UPDAT SDMU ENTER GROUP0000001, LEON STRAUSS 84147 1055 GSTAR 1.identifier 0 ENT GLOBA0000001. 12 ENT GLOBB0000001. 24 ENT GLOBC0000001. GEND SDMU END |
Figure 18 shows the group record that would be generated.
During the normal functioning of a live system there would be no GROUP records out on file. Therefore, it is not necessary to assign a file address by means of a BSTA06 ... (GROUP) generation statement.
A GROUP record contains the standard SDMF data record prefix plus several 12-character SDMF IDs that refer to any combination of SDMF records.
The GROUP record, like all SDMF records, will have its own unique 12-character ID. The first 5 characters must be GROUP and the remaining 7 characters are used for identification and sequencing. All entries in the data portion of a GROUP record must be 12 bytes long and they must be IDs of SDMF records that are on the SDMF input tape. At least one 12-byte SDMF record ID must be present; the maximum number of ID'2s is 86. The 12-byte entries must be contiguous, beginning at byte 0. There must be at least 12 bytes at the end of the record that is not used for a data entry.
The GROUP records are treated as ordinary SDMF records in that they reside in sequential order on the SDMF tape with the rest of the SDMF records.
GROUP records are created and placed on the SDMF tape during an SDMU UPDAT run. The GROUP record can be updated on an UPDAT run.
Level | Relative Location | Label | B | Length | Format | Name | Description | ||
---|---|---|---|---|---|---|---|---|---|
Decimal | Hex | Bytes | Bit | ||||||
1 | 0 | 0 | HDR |
| 560 |
|
| SDMF | Data Record Prefix |
2 | 0 | 0 | GROUP | D | 5 |
| D | GROUP |
|
2 | 5 | 5 | SEQ. NO. | N | 7 |
| D |
| Sequence Number |
2 | 12 | C |
| N | 4 |
| B |
| Spare |
2 | 16 | 10 | COMMENTS | N | 17 |
| D |
| Comments: (The first 17 characters from the comment field from the SDMU ENTER card creating the GROUP record) |
2 | 33 | 21 |
| N | 1 |
| B |
| Spare |
2 | 34 | 22 | LENGTH | H | 2 |
| B |
| Length |
2 | 36 | 24 |
| N | 524 |
| B |
| Spare |
1 | 560 | 230 | DATA | D |
|
|
|
| Data portion of the GROUP record |
2 | 560 | 230 | RCD ID | F | 12 |
| F |
| Record ID (12 characters) |
2 | 56C | 23C | RCD ID | F | 12 |
| D |
| Record ID - Room for up to 85 more 12 character entries |
2 | -- | -- | END | F | 12 |
| B |
| End of GROUP record |
The following records will generate five 30-byte records, each with the STC prefix. In each case, the prefix will contain a FACE-type load address. The records will contain data in fields beginning at bytes 2, 9, 15 and 25.
Figure 19 shows an example of the manual generation of data and message records.
Figure 19. Manual Generation of Data and Message Records
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... 30 GSTAR 5. 2 ENT ABC,DEC,X'99',X'EFFE'. 25 REP 123-1-3,X'1122'-4-5. 9 ADD X'01'-3-1-3. 15 SUB 9-2-3-5,8-1-1-2. BSTA06 ADD (#ZZZFS)10-1-1-5. GEND |
The following data records would be generated.
Figure 20. Manual Generation of Data and Message Records
The following records will generate 2 AAA data records, one TIM record with fixed file addresses specified, and a standard input message.
Figure 21 shows an example of the manual generation of data and message records.
Figure 21. Data Record Creation with DRIL
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... DATA WA0AA GSTAR 2. BSTA06 ENT (#ZZZFL)21, (#ZZZFL)27. WA0BID REP AA-1-2. WA0IIS ENT THIS FIELD WILL BE ENTERED LEFT. ; JUSTIFIED IN A 100 BYTE AREA, THIS. ; FIELD WILL BE ENTERED INTO THE. ; SECOND RECORD. GEND TI1TI GSTAR 1. BSTA06 ENT (#ZZZFS)99. TIT1BID ENT TI. TI1TXT ENT LOMA. GEND MSG AM0SG GSTAR 1. AM0LIT ENT X'080806'. AM0TXT ENT THIS IS A 3270 MESSAGE. GEND |
In Figure 22, the following records will cause the WA1AA0000005 and PD1PD0000000 records to be called from SDMF. The first will be placed on the output tape twice, unmodified. The second is modified, using both DRIL and absolute entries, to generate 3 different output records.
Figure 22. Mixed SDMF, DRIL, and Manual Generation
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... DATA WA1AA GSTAR WA1AA0000005,2. GEND PD1PD GSTAR PD1PD0000000,3. PD1BID ENT AA,BB,CC. PD1ITM ENTIT 1-5-X'0380000108325B0000000000003A45'. PD1NAM ENTIT 2-7-JOHN DOE. 9 REP X'0034'-1-3. GEND |
Figure 23 and Figure 24 show 3270 input messages with numeric displacements or with AM0SG format.
Figure 23. 3270 Input Message with Numeric Displacements
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... 42 GSTAR 1. 7 ENT X'FF'. 3270 INDICATOR 16 ENT X'000E'. MESSAGE LENGTH 18 ENT X'080806'. LNIATA 21 ENT X'6C'. NOP 1 22 ENT X'6C'. NOP 2 23 ENT 3270 MSG+. TEXT GEND |
Figure 24. 3270 Input Message using AM0SG Format
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7... AM0SG GSTAR 1. AM0LIT ENT X'080806'. AM0TXT ENT 3270 MSG+. GEND |