The address of the data to be corrected is always specified with respect to the start of the module. Each REP record is checked for correct format before it is processed. The check data, parity digit and module version are verified only if specified, i.e. they may also be omitted for test purposes. Faulty records are logged together with an error message at the console; the records themselves are not corrected.
Correction data depending on the address of another module can be specified in the form “base + offset”. This type of REP is called a “relative REP”. The offset is specified relative to the start of the module or to the entry or to the ISL entry, and the base in the form of the module/entry/ISL entry name. Thus REP records are not affected by changes in other Control System modules or by regeneration of the Control System.
In the following table:
a stands for an alphanumeric character (0-9, A-Z)
x stands for a he xi decimal number (0-9, A-F)
Column | Contents | Meaning |
1 | _ | Blank |
2 - 4 | REP | |
5 | _ | Blank |
6 -10 | xxxxx | REP address relative to start of module |
11 | _ | Blank |
12 -14 | 3-digit number | Sequence number of the object corrections version |
15 | _ | Blank |
16 | X, I, O, S, P, T | X: Standard or relative Rep |
17 - max. 50 | ' xxx...x' | Up to 32 correction items enclosed in single quotes orup to 22 correction items enclosed in single quotes and followed by a plus sign and the name of a Control System module/entry/ISL entry. The start address of this module is added by the system startup component to the last 8 digits of the correction data. The name must be 8 characters long (as in columns 73-80). |
51 | _ | Blank |
52 - 55 | xx__ or xxxx | 2 or 4 check items; the first (two) byte(s) to be overwritten by the correction data must be specified. |
56 | _ | Blank |
57 | x | Parity digit for REP address, correction data and check data |
58 - 65 | aaaaaaaa | Number of problem message |
66 - 68 | aaa | Module version |
69 | a | REP identifier |
70 | 1 or 2 | 1 for class 1 REP records, 2 for class 2 REP records |
71 | a or blank | Loader version (A-Z) |
72 | a | Identifier for the selection of REP records for different code variants. |
73 - 80 | aaaaaaaa | Module name, 8 characters long. The start address of this module is added to the REP address |
Table 2: Format of REP records
Notes on the format of REP records
Class 1 REP records and class 2 REP records both have the same format and permit the same correction functions. They differ only in the class label in column 70 and in their use, and in the option of specifying entries/ISL entries for “relative REPs”.
The address of the data to be corrected is always derived by adding the module address (name in column 73ff) and the REP address.
To allow a distinction to be made in relative REPs, the indicators
I, O, S, P,
andT
have been introduced to complement the previous format with the indicatorX
. The REP data follows the indicator and is enclosed by quote marks.Indicator
X
designates real modules/entries. IndicatorsP
andT
designate special relative REPs for x86-64 code. There is a special format for this:Format:
X
'distance'+base address
The address of the real entry is noted for the base address.Indicator
I
indicates that the specified entry name designates the ISL entry.Example
X'distance'+<name-of-isl-entry>
Indicators
O
andS
designate special relative REPs for x86-64 code. There is a special format for this:Example
O'<code>','<distance>'+<entry/module-name>
The correction information is assembled from the <code> and the address calculated. The <code> and <distance> must each be exactly 8 characters long.
Since the correction data is given in hexadecimal notation, its number must always be even.
In the case of correction data to be relocated, at least 8 correction items must be present.
If the data to be corrected represents an address, the old value is generation-dependent, i.e. no check data should be specified.
The parity digit (column 57) serves to safeguard the REP record contents. It is derived from the sum of all the digits of the REP address, correction data and check data.
The number of correction items is added to the sum. The result mod(16) yields a value between 0 and F for the parity digit.
mod(16) means that the sum is divided by 16. The remainder is the parity digit. If the parity digit is not yet present, it is automatically generated by means of the tool RMS (REP management system).
The contents of columns 58-65 are for organizational purposes and are ignored by system startup.
The check data, parity digit and module version may also be omitted. The corresponding tests during startup are then skipped.
The following REP identifiers have been defined for column 69:
'D'
= diagnostic/interception REP'O'
= optional REP'Q'
= selectable unit, diagnostic/interception REP'S'
= selectable unit'T'
= trace (activate)'U'
= selectable unit, optional'V'
= temporary REP' '
= normal REPThe identifier in column 72 controls the selection of REP records for different code variants (/390 or x86-64 code). In the event of the identifier 'K', the correction is taken into account for x86-64 code only. If column 72 contains a blank, then the correction applies to /390 code. All other contents are ignored. In accordance with the procedure on the Server Units, the REPs for the other HSI are ignored.
Instead of a module name, columns 18-49 may contain an ENTRY name in the case of class 2 REP records.
Instead of a module name, columns 73-80 may contain an ENTRY or CSECT name. In such cases, no module version may be specified. (for class 2 REP records only)
Input of REP records at the console
During the load procedure the following message appears:
?P.NSI0050 SPECIFY BS2000 REP FILE OR DEVICE. REPLY (EOT (USE STANDARD
FILE); FN=FILENAME(VOL=VSN); CONS; END)
If the operator’s response is P.CONS
, the dialog for the class 1 REP records starts:
Message:
?P.NSI0070 ENTER CLASS 1 MODULE NAME. REPLY (NAME; EOT; (NO MORE CLASS 1
CONSOLE REPS))
Response: P.<modulename>
(Name des Moduls, das geändert werden soll)
Message:
?P.NSI0071 ENTER RELATIVE ADDRESS IN MODULE. REPLY (5 CHAR)
Response: P.<patch-address>
(the relative address of a REP within the module; 5 hexadecimal digits)
Message:
?P.NSI0073 ENTER CORRECTION DATA. REPLY (MAX 32 CHARACTERS)
Response: P.<correction-data>
(data for patching the module object code; 2-32 hexadecimal digits)
Input of relative REPs is extended:
In addition to distance+base_address, X'<distance>'+<base_address>
, I'<distance>'+<isl -entry-address>
and the corresponding relative REP formats for x86-64 code may also be input. <base_address>
is the address of a real entry or module.
Message:
?P.NSI0074 ENTER CHECK INFORMATION. REPLY (CCCC,P,MMM (OLD DATA, PARITY,
VERSION); EOT(SKIP CHECK))
Possible responses:
| 1 or 2 check bytes |
| parity digit or empty |
| module version number or empty |
A check is made on all the data entered; in the absence of data, the corresponding check is not performed.
or Response: P.
(Press ENTER key)
When this response is given, no check is made.
Message NSI0070
is then displayed again, requesting input of the next REP record. The same dialog is repeated until no further class 1 REP records are to be input. If this is the case, P.
must be entered in response to message NSI0070
, followed by pressing the ENTER key.
After further information messages, the dialog for class 2 REP records commences. It is initiated with the message
?P.NSI0075 CONSOLE ASSIGNED AS REP-LOADER FOR CLASS2 MODULES.
REPLY (EOT(CONSOLE IS USED); N(NO)).
The response is either P.
or P.N
(no class 2 REP records) and press ENTER key.