ISAM: | Makrotyp: | R bei PARMOD=24 |
SAM: | Makrotyp: | R bei PARMOD=24 |
ISAM:
Mit dem SETL-Makroaufruf kann auf den Anfang oder das Ende der Datei positioniert werden oder über die Schlüsselangabe auf jeden beliebigen Satz.
Wird mit SETL KEY in der Datei über den Primärschlüssel positioniert und enthält die Datei Sätze mit gleichen Primärschlüsselwerten (DUPEKY=YES), so wird auf den Ersten dieser Sätze positioniert.
Wird mit SETL KEY in der Datei über einen Sekundärschlüssel positioniert und enthält die Datei Sätze mit gleichen Werten für diesen Sekundärschlüssel, so wird auf den Satz positioniert, auf dessen Primärschlüssel im zugehörigen Sekundärindexblock als Erstes verwiesen wird.
SAM:
Der SETL positioniert den Block- und Satzzeiger auf die vom Anwender angegebene Stelle (Wiedergewinnungsadresse).
Der SETL-Makroaufruf positioniert den internen Satzzeiger. Der Anwender kann die Position definieren, an der die nachfolgende Bearbeitung der Datei beginnen soll.
Die Wiedergewinnungsadresse wird im 31-Bit-TU-FCB so verändert, dass sie nach einem folgenden GET- oder PUT-Makroaufruf korrekt versorgt ist; im 24-Bit-TU-FCB wird sie nicht verändert.
Da im 24-Bit-TU-FCB die Positionierungsinformation 1 Byte lang ist, dürfen in einem Puffer maximal 255 Sätze stehen.
Ein unzulässiger SETL-Operand bewirkt, dass die Steuerung an die Adresse USERERR des EXLST-Makroaufrufs abgegeben wird.
Format
Operation | Operanden |
|
|
Operandenbeschreibung
fcbadr
Adresse des FCB für die zu verarbeitende Datei.
Nur für ISAM:
Wenn in der Datei über einen Sekundärschlüssel positioniert werden soll, muss dieser FCB in seiner 31-Bit-Schnittstelle vorliegen.
(1)
Die FCB-Adresse steht im Register 1.
B
Es soll auf den Dateianfang positioniert werden.
Nur für ISAM:
Die Operation SETL B für eine Nulldatei führt auf den Fehlerausgang EOFADDR des EXLST-Makroaufrufs.
Nur für SAM:
Bei Mehrbanddateien wird auf den ersten Satz des aktuellen Bandes positioniert.
E
Es soll auf das Dateiende positioniert werden.
Nur für SAM:
Bei Mehrbanddateien wird auf den letzten Satz des aktuellen Bandes positioniert, sodass der folgende GET-Makroaufruf Bandwechsel auslöst.
Bei OPEN OUTPUT/EXTEND führt die Angabe „E“ auf den Fehlerausgang USERERR des EXLST-Makros.
R
Nur für SAM:
Die Positionierungsinformation soll der Wiedergewinnungsadresse entnommen werden (nicht zulässig für Banddateien mit Nichtstandardblöcken, die mit PARMOD=24 verarbeitet werden). Bei Mehrbanddateien bezieht sich die Wiedergewinnungsadresse auf das aktuelle Band, nicht auf die Datei.
KEY
Nur für ISAM:
Es soll auf den Primär- bzw. Sekundärschlüsselwert positioniert werden, der in dem über den KEYARG-Operanden des FCB bezeichneten Feld steht.
Verweist ein SETL ...,KEY auf einen existenten Schlüssel, lesen GET/GETR diesen Satz.
Verweist ein SETL ...,KEY auf einen nichtexistenten Schlüssel, liest ein folgender GET den Satz mit dem nächsthöheren Schlüssel, ein folgender GETR den Satz mit dem nächstniedrigeren Schlüssel.
(0)
Register 0 enthält einen „Positionierungs-Code“. Vor der Ausführung des SETL-Makroaufrufs muss das Register 0 versorgt werden.
Die folgende Tabelle zeigt den „Positionierungs-Code“ für Register 0.
SETL-Operand | Inhalt Register 0 | Wirkung |
B | 0 | Positionieren auf Dateianfang |
E | 1 | Positionieren auf Dateiende |
R | 2 | nur bei SAM: Position entsprechend Wiedergewinnungsadresse |
KEY | Adresse von KEYARG | Positionieren auf bestimmten Satz |
Enthält Register 0 einen anderen Wert als 0 oder 1, wird dieser immer als „KEYARG“ - Adresse interpretiert.
AIX
Nur für ISAM:
Gibt an, ob auf einen Satz über seinen Primär- oder einen Sekundärschlüssel positioniert werden soll.
= NO
Auf den Satz wird über seinen Primärschlüssel positioniert. (Voreinstellung).
= YES
Kann nur angegeben werden, wenn
die 31-Bit-Schnittstelle des Makros generiert wird (über den Operanden PARMOD=31 oder den Makroaufruf GPARMOD 31) und
der Makro sich auf einen 31-Bit-FCB bezieht.
Auf den Satz wird über den im Operanden KEYNAME oder KEYNMAD vereinbarten Sekundärschlüssel positioniert.
KEYNAME = name
Nur für ISAM:
Gibt den Namen des Sekundärschlüssels an, über den auf einen Satz positioniert werden soll.
name muss der Name eines für die aktuelle Datei vereinbarten Sekundärschlüssels sein. Die Namen aller für eine Datei definierten Sekundärschlüssel können mit dem Makro SHOWAIX oder dem Kommando SHOW-INDEX-ATTRIBUTES ermittelt werden.
Es muss AIX=YES angegeben sein.
KEYNMAD = adr
Nur für ISAM:
Gibt die symbolische Adresse (den Namen) eines Feldes an, in dem der Anwender den Namen des Sekundärschlüssels hinterlegt hat, über den auf einen Satz positioniert werden soll.
Das Feld mit der symbolischen Adresse adr muss zum Zeitpunkt der Makroausführung den Namen eines für die aktuelle Datei vereinbarten Sekundärschlüssels enthalten.
Es muss AIX=YES angegeben sein.
PARMOD
Gibt den Generierungsmodus an.
Voreinstellung: | der durch den Assembler oder den GPARMOD-Makroaufruf im Programm eingestellte Wert |
= 24
Der Makroaufruf wird mit der Expansion für die 24-Bit-Schnittstelle aufgelöst. Es wird ein Objekt erzeugt, das nur im 16-MB-Adressraum ablauffähig ist (24-Bit-Adressierungsmodus).
= 31
Der Makroaufruf wird adressierungsmodus-unabhängig (24-Bit- oder 31-Bit-Adressierung) generiert. Es wird ein Objekt erzeugt, das im 2-GB-Adressraum ablauffähig ist.
Hinweise zur Programmierung
Der SETL-Makroaufruf zerstört die Register 0, 1, 14 und 15.
Ein SETL-Makroaufruf führt immer zu einem SVC.