Allgemeines
Anwendungsgebiet: | Abfragen und Zugriff zu Listen und Tabellen; siehe "Abfragen und Zugriff zu Listen und Tabellen" |
Makrotyp: | O-Typ/R-Typ; siehe "O-Typ-Makroaufrufe" S-Typ, MF-Format 1 (31-Bit-Schnittstelle): Standardform/E-/L-/D-Form; siehe "S-Typ-Makroaufrufe" |
Die Makroauflösung als O-Typ benutzt keine Register.
Je nach Aufrufform werden unterschiedliche SVCs benutzt.
Makrobeschreibung
Der Makro GEPRT informiert über die durch den Auftrag seit SET-LOGON-PARAMETERS verbrauchte CPU-Zeit und/oder über die für das laufende Programm noch verfügbare CPU-Zeit.
Die noch verfügbare CPU-Zeit bezieht sich auf das für den Programmlauf vorgegebene Zeitlimit (Kommando START-PROGRAM, Operand CPU-LIMIT); wenn dort nicht spezifiziert, auf das Zeitlimit für den Auftrag (Angabe oder Voreinstellung im Kommando SET-LOGON-PARAMETERS).
Die Zeitangaben (gezonte Dezimalzahlen) werden in einzurichtende Felder übertragen.
Der Makroaufruf ohne Operandenangabe (R-Typ) liefert die seit SET-LOGON-PARAME-TERS verbrauchte CPU-Zeit. Diese Zeitangabe (im TODR-Format) wird dem Anwender in den Registern R0 und R1 übergeben. Die Performance der Funktionsausführung ist wesentlich höher als beim Makroaufruf mit Operandenangabe (220 Befehle beim R-Typ gegenüber 550 Befehlen beim S-Typ/O-Typ).
Makroaufrufformat und Operandenbeschreibung
GEPRT |
[ { [adr1] [,adr2] / [(r1)] [,(r2)] } [,FORMAT=B8]] [,PARMOD=31] [,MF=L / (E,..) / D] ,PREF=G / p |
adr1
symbolische Adresse eines 6 Byte langen Feldes
Die von dem Auftrag bereits verbrauchte CPU-Zeit wird in dieses Feld eingetragen.
Feldlänge = 8 Byte, wenn der Operand FORMAT=B8 angegeben wird.
(r1)
r1 = Register mit dem Adresswert adr1
Bei PARMOD=31 darf der Adresswert nicht im Register R1 übergeben werden.
adr2
symbolische Adresse eines 6 Byte langen Feldes
Die restliche (maximale) CPU-Zeit für das Programm bzw. den Auftrag wird in dieses Feld eingetragen.
Feldlänge = 8 Byte, wenn der Operand FORMAT=B8 angegeben wird.
(r2)
r2 = Register mit dem Adresswert adr2. Bei PARMOD=31 darf der Adresswert nicht im Register R1 übergeben werden.
FORMAT=B8
Die Zeitangaben werden in der Form hhhhmmss (hhhh=Stunden, mm=Minuten, ss=Sekunden) übertragen.
MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. PREFIX, MACID und PARAM) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.
Bei der D-Form des Makroaufrufs kann ein Präfix PREF (1 Buchstabe, Voreinstellung: G) angegeben werden (siehe Abschnitt „S-Typ-Makroaufrufe“).
PARMOD=
steuert die Makroauflösung. Wenn PARMOD nicht spezifiziert wird, erfolgt die Makroauflösung entsprechend der Angabe für den Makro GPARMOD oder der Voreinstellung für den Assembler (24-Bit-Schnittstelle).
31
Die 31-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 31-Bit-Adressen (Adressraum <= 2 GB). Datenlisten beginnen mit dem Standardheader.
Funktionsweise
Die CPU-Zeit wird als Zeichenfolge (gezonte Dezimalzahl) 6-stellig (hhmmss) oder bei Angabe von FORMAT=B8 8-stellig (hhhhmmss) übergeben.
Angaben für Aufträge ohne CPU-Zeitbeschränkung (NTL):
Feld für verbrauchte CPU-Zeit:
aktueller Wert < 100h | aktueller Wert >= 100h | |
6-Byte-Feld | aktueller Wert | 99h 59min 59sec |
8-Byte-Feld | aktueller Wert | aktueller Wert |
Feld für restliche CPU-Zeit:
6-Byte-Feld | 99h 59min 59sec |
8-Byte-Feld | 9999h 59min 59sec |
Hinweis
Der Makro GEPRT übergibt keinen Returncode. Bei Adressierungsfehler durch den Anwender generiert das System das Ereignis „Adressenfehler“ (STXIT-Ereignisklasse „Nicht behebbarer Programmfehler“). Das Programm wird mit der Anzeige „Adressenfehler“ beendet, es sei denn, im Programm ist für dieses Ereignis eine STXIT-Routine vorgesehen.
Beispiel
GEPRT START PRINT NOGEN BALR 3,0 USING *, GEPRT FIELD1,FIELD2,FORMAT=B8 -----------------------------------(1) WROUT OUTB,ERROR ERROR TERM **** DEFINITIONS ******* OUTB DC Y(OUTBE-OUTB) DS CL3 DC C'CPU TIME USED: ' FIELD1 DS CL8 DC C' AVAILABLE CPU TIME: ' FIELD2 DS CL8 OUTBE EQU * END
Ablaufprotokoll:
/start-assembh % BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED % ASS6010 <ver> OF BS2000 ASSEMBH READY //compile source=*library-element(macexmp.lib,geprt), - // compiler-action=module-generation(module-format=llm), - // module-library=macexmp.lib, - // listing=parameters(output=*library-element(macexmp.lib,geprt)) % ASS6011 ASSEMBLY TIME: 337 MSEC % ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES % ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS % ASS6006 LISTING GENERATOR TIME: 80 MSEC //end % ASS6012 END OF ASSEMBH /start-executable-program library=macexmp.lib,element-or-symbol=geprt % BLS0523 ELEMENT 'GEPRT', VERSION '@' FROM LIBRARY ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS % BLS0524 LLM 'GEPRT', VERSION ' ' OF '<date> <time>' LOADED CPU TIME USED: 00000059 AVAILABLE CPU TIME: 00022901 --------------------(2)
(1) | Sowohl die seit SET-LOGON-PARAMETERS verbrauchte CPU-Zeit, als auch die für den Programmlauf noch zur Verfügung stehende CPU-Zeit werden abgefragt. |
(2) | Die seit SET-LOGON-PARAMETERS verbrauchte CPU-Zeit und die für den Programmlauf noch zur Verfügung stehende CPU-Zeit werden ausgegeben. |