Die Adresse der zu korrigierenden Daten ist stets relativ zum Modulanfang anzugeben. Jeder Rep-Satz wird vor der Verarbeitung auf richtiges Format untersucht. Prüfdaten, Kontrollzahl und Modulversion werden nur geprüft, wenn sie angegeben sind, d.h. zu Testzwecken können sie auch weggelassen werden. Fehlerhafte Sätze werden zusammen mit einer Fehlermeldung an der Konsole protokolliert, eine Korrektur wird für solche Sätze nicht ausgeführt.
Korrekturdaten, die von der Adresse eines anderen Moduls abhängen, können in der Form „Basis + Distanz“ angegeben werden. Diese Art Reps werden „relative Reps“ genannt. Die Distanz ist relativ zum Modulanfang/Entry/ISL-Entry anzugeben und die Basis in Gestalt des Modul-/Entry-/ISL-Entry-Namens. Damit sind Rep-Sätze invariant gegenüber Änderungen in allen übrigen Modulen des Objektes.
In der folgenden Tabelle steht:
a für ein alphanumerisches Zeichen (0-9, A-Z)
x für ein Sedezimalzeichen (0-9, A-F)
Spalte | Inhalt | Bedeutung |
1 | _ | Leerzeichen |
2 - 4 | REP | |
5 | _ | Leerzeichen |
6 -10 | xxxxx | Rep-Adresse, relativ zum Modulanfang |
11 | _ | Leerzeichen |
12 -14 | 3-stellige Zahl | Laufende Nummer der Objektkorrekturversion |
15 | _ | Leerzeichen |
16 | X, I, O, S, P, T | X: Standard- oder relativer Rep |
17 - max. 50 | ' xxx...x' | max.32 Korrekturdaten, in Anführungszeichen eingeschlossen, oder |
51 | _ | Leerzeichen |
52 - 55 | xx__ oder xxxx | 2 oder 4 Prüfdaten; es sind das erste oder die ersten beiden Byte anzugeben, die von den Korrekturdaten überschrieben werden sollen. |
56 | _ | Leerzeichen |
57 | x | Kontrollzahl (parity digit) für Rep-Adresse, Korrekturdaten und Prüfdaten |
58 - 65 | aaaaaaaa | Nummer der Problemmeldung |
66 - 68 | aaa | Modulversion |
69 | a | Rep-Kennzeichen |
70 | 1 oder 2 | 1 für Klasse-1-Rep-Sätze, 2 für Klasse-2-Rep-Sätze |
71 | a oder Leerzeichen | Laderversion (A-Z) |
72 | a | Kennzeichen für die Auswahl von Rep-Sätzen für unterschiedliche |
73 - 80 | aaaaaaaa | Modulname, 8-stellig; die Anfangsadresse dieses Moduls wird |
Tabelle 2: Format der Rep-Sätze
Hinweise zum Format der Rep-Sätze
Klasse-1-Rep-Sätze und Klasse-2-Rep-Sätze besitzen dasselbe Format und erlauben dieselben Korrekturfunktionen. Sie unterscheiden sich lediglich durch die Klassenangabe in Spalte 70 und ihre Verwendung sowie die Möglichkeit zur Angabe von Entries/ISL-Entries bei „relativen Reps“.
Die Adresse der zu korrigierenden Daten wird stets durch Addition der Moduladresse (Name in Spalte 73ff) und der Rep-Adresse gebildet.
Um bei relativen Reps Unterscheidungsmöglichkeiten zu haben, werden zusätzlich zum Format mit dem Indikator
X
die IndikatorenI, O, S, P,
undT
angeboten. Die Rep-Daten werden im Anschluss an den Indikator in einschließenden Hochkommas angegeben.Indikator
X
bezeichnet reale Module/Entries. Die IndikatorenP
undT
kennzeichnen spezielle relative Reps für x86-64-Code. Dazu gibt es ein spezielles Format:Format:
X
'distanz'+basisadresse
Hier wird für die Basisadresse die Adresse des realen Entrys vermerkt.Indikator
I
zeigt an, dass der angegebene Entry-Name den ISL-Entry bezeichnet.Beispiel:
Die Indikatoren
O
undS
kennzeichnen spezielle relative Reps für x86-64-Code.
Dazu gibt es ein spezielles Format:Beispiel:
O'<code>','<distanz>'+<entry/module-name>
Aus <code> und berechneter Adresse wird die Korrekturinformation
aufgebaut. <code> und <distanz> sind jeweils genau 8 Zeichen lang.
Da die Korrekturdaten in hexadezimaler Schreibweise angegeben werden, muss deren Anzahl stets gerade sein.
Bei zu relativierenden Korrekturdaten müssen mind. 8 Korrekturdaten vorhanden sein.
Falls die zu korrigierenden Daten eine Adresse darstellen, ist der alte Wert generierungsabhängig, d.h. es sollten keine Prüfdaten angegeben werden.
Die Kontrollzahl (Spalte 57) dient zur Sicherung des Rep-Satz-Inhalts. Sie ergibt sich aus der Summe aller Stellen von Rep-Adresse, Korrekturdaten und Prüfdaten
Zur Summe ist die Anzahl der Korrekturdaten zu addieren. Das Ergebnis mod(16) ergibt für die Kontrollzahl einen Wert zwischen 0 und F.
mod(16) bedeutet: Die Summe ist durch 16 zu dividieren. Der verbleibende Rest ist die gesuchte Kontrollzahl. Die Kontrollzahl wird mit dem Dienstprogramm RMS (Rep Montage System) automatisch erzeugt, wenn sie nicht vorhanden ist.
Der Inhalt der Spalten 58-65 dient organisatorischen Zwecken und wird von der Systemeinleitung nicht ausgewertet.
Wahlweise können Prüfdaten, Kontrollzahl und Modulversion weggelassen werden. Bei Startup entfallen dann die entsprechenden Prüfungen.
Folgende Rep-Kennzeichen in Spalte 69 sind definiert:
D = Diagnose-/Fang-Rep
O = Optionaler Rep
Q = Selectable Unit, Diagnose-/Fang-Rep
S = Selectable Unit
T = Trace (einschalten)
U = Selectable Unit, optional
V = Vorläufiger Rep
_ = Normaler RepDas Kennzeichen in der Spalte 72 steuert die Auswahl der Rep-Sätze für unterschiedliche Code-Varianten (/390- oder x86-64-Code). Bei Kennzeichnung mit 'K' wird die Korrektur nur für x86-64-Code berücksichtigt. Enthält die Spalte 72 ein Leerzeichen, gilt die Korrektur für /390-Code. Alle anderen Inhalte werden ignoriert. Entsprechend dem Ablauf auf den Server Units werden die Reps für das jeweils andere HSI ignoriert.
Anstelle eines Modulnamens kann bei Klasse-2-Rep-Sätzen in den Spalten 18-49 auch ein ENTRY-Name stehen.
Anstelle eines Modulnamens kann in den Spalten 73-80 auch ein ENTRY- oder CSECT-Name stehen. In diesen Fällen darf dann keine Modulversion angegeben sein (nur für Klasse-2-Rep-Sätze).
Eingabe von Rep-Sätzen über Konsole
Während der Ladeprozedur erscheint folgende Meldung:
?P.NSI0050 SPECIFY BS2000 REP FILE OR DEVICE. REPLY (EOT (USE STANDARD
FILE); FN=FILENAME(VOL=VSN); CONS; END)
Antwortet der Operator mit P.CONS
beginnt der Dialog für die Klasse-1-Rep-Sätze:
Meldung:
?P.NSI0070 ENTER CLASS 1 MODULE NAME. REPLY (NAME; EOT; (NO MORE CLASS 1
CONSOLE REPS))
Antwort: P.<modulname>
(Name des Moduls, das geändert werden soll)
Meldung:
?P.NSI0071 ENTER RELATIVE ADDRESS IN MODULE. REPLY (5 CHAR)
Antwort: P.<korrekturadresse>
(Modul-relative Adresse eines Reps; 5 sedezimale Ziffern)
Meldung:
?P.NSI0073 ENTER CORRECTION DATA. REPLY (MAX 32 CHARACTERS)
Antwort: P.<änderungsdaten>
(Daten zur Korrektur eines Modulobjektcodes, 2-32 sedezimale Ziffern)
Die Eingabe von relativen Reps ist erweitert:
Neben der Eingabe von distanz+basisadresse ist jetzt auch X'distanz'+basisadresse
und I'distanz'+<isl-entry-adresse>
sowie die Eingabe der entsprechenden relativen Repformate für x86-64-Code möglich.
basisadresse
ist die Adresse eines realen Entrys oder Moduls.
Meldung:
?P.NSI0074 ENTER CHECK INFORMATION. REPLY (CCCC,P,MMM (OLD DATA, PARITY,
VERSION); EOT(SKIP CHECK))
mögliche Antworten:
| 1 oder 2 Prüfbytes |
| Kontrollzahl oder leer |
| Modulversionsnummer oder leer |
Für alle eingegebenen Daten findet eine Prüfung statt, bei fehlenden Daten wird die entsprechende Prüfung nicht durchgeführt.
oder Antwort: P.
(und ENTER-Taste drücken)
Bei dieser Antwort findet keine Prüfung statt.
Danach kommt wieder die Meldung NSI0070
und fordert die Eingabe des nächsten Rep-Satzes an. Der gleiche Dialog wiederholt sich solange, bis keine Klasse-1-Rep-Sätze mehr eingegeben werden sollen. In dem Fall muss die Meldung NSI0070
mit P.
und dem Drücken der ENTER-Taste beantwortet werden.
Nach weiteren informativen Meldungen beginnt der Dialog für Klasse-2-Rep-Sätze. Er wird eingeleitet mit der Meldung
?P.NSI0075 CONSOLE ASSIGNED AS REP-LOADER FOR CLASS2 MODULES.
REPLY (EOT(CONSOLE IS USED); N(NO)).
Die Antwort darauf ist P.
oder P.N
(keine Klasse-2-Rep-Sätze) und ENTER-Taste drücken.