Allgemeines
Anwendungsgebiet: | Abfragen und Zugriff zu Listen und Tabellen; siehe "Abfragen und Zugriff zu Listen und Tabellen" |
Makrotyp: | S-Typ, MF-Format 1: 31-Bit-Schnittstelle: Standardform/E-/L-/D-Form; siehe "S-Typ-Makroaufrufe" |
Betriebsmittel, deren Verbrauch zu messen ist, sind in so genannten Informationspaketen definiert. Folgende Informationspakete können für eine Messung ausgewählt werden:
Bezeichnung | Betriebsmittel/Messwerte |
Globale Werte | Ermittlung der CPU-Zeit, Gesamtzahl der Ein- und Ausgaben, |
Zeitverbrauch | Ermittlung der CPU-Zeit, Zeitstempel bzw. Laufzeit. |
Ein-/Ausgabe-Zähler | Anzahl der Ein- und Ausgaben. |
Der Aufbau der Ausgabefelder für die einzelnen Informationspakete ist anschließend an die Formatbeschreibung dargestellt.
Working-Set-Integral: Summe der Produkte von (Hauptspeicherseiten in KB * Benutzungszeit in Sekunden).
Anzahl der transportierten Datenblöcke: Datentransport von und zur lokalen Peripherie in PAM-Seiten bei öffentlichen, systemprivaten und benutzerprivaten Platten bzw. in 2 KB-Blöcken bei Magnetbändern und Unit-Record-Geräten.
Makrobeschreibung
Der Makro AINF ermittelt den Betriebsmittelverbrauch eines Auftrages und übergibt die Werte in einen Bereich des Benutzerprogramms.
Zur Messung des Betriebsmittelverbrauchs stehen zwei Verfahren zur Verfügung:
Verbrauchsstempel-Verfahren:
Betriebsmittelverbrauch seit Beginn des Auftrags (Format 1)Messaufgaben-Verfahren:
Betriebsmittelverbrauch einzelner Programmabschnitte (Formate 2 und 3)
Der Operand MF=D generiert eine DSECT für den Datenbereich und die Definition der möglichen Rückkehrinformationen. Zusätzlich kann der AINF-Makro die Definitionen der Ausgabestruktur einzelner Informationspakete ausgeben (Format 4).
Hinweis
Der Eigenbedarf an CPU-Zeit für die Systemaufruf-Bearbeitung verfälscht die Messung geringfügig.
Funktionsweise
Beim Verbrauchsstempel-Verfahren ermittelt der AINF-Makro den Betriebsmittelverbrauch seit Beginn des Auftrages und überträgt die Verbrauchswerte in einen Bereich des Benutzerprogramms. Der Benutzer wählt die zu messenden Betriebsmittel aus, indem er im Makro Informationspakete angibt (GLOBAL, TIME, IOCNT), denen verschiedene Betriebsmittel zugeordnet sind.
Beim Messaufgaben-Verfahren ermittelt der AINF-Makro den Betriebsmittelverbrauch einzelner Programmabschnitte. Eine Messung kann an beliebigen Programmpunkten gestartet, unterbrochen, fortgesetzt oder beendet werden. Mehrere Messungen können ineinander verschachtelt und beliebig überlappt werden. Damit unterschiedliche Messungen eindeutig identifiziert werden können, enthält jede Messung eine eigene Messkennung.
Beim Start einer Messung (Operand READY) definiert der Benutzer eine Messkennung und wählt Informationspakete aus, die die zu messenden Betriebsmittel enthalten. Soll die Messung unterbrochen werden, muss der Benutzer einen weiteren AINF-Aufruf (Operand INTR) an der Stelle geben, an der die Unterbrechung gewünscht ist. Das System ermittelt die Verbrauchswerte der angegebenen Betriebsmittel seit Start der Messung und übergibt sie, falls gewünscht, in einen Bereich des Benutzerprogramms. Will der Benutzer die unterbrochene Messung fortsetzen, muss er an der gewünschten Stelle einen AINF-Aufruf (Operand READY) mit der zugehörigen Messkennung geben.
Auf diese Weise lässt sich eine Messung beliebig unterbrechen und wieder fortsetzen. Nach jeder Unterbrechung ermittelt das System die Summe der Verbrauchswerte aller bisherigen Messabschnitte.
Die Messung wird beendet, sobald ein AINF-Aufruf (Operand FINISH) für die entsprechende Messkennung gegeben wird oder das Programm beendet wird. Das System überträgt die Summe der Verbrauchswerte aller Messabschnitte (von Start bis Ende der Messung) in einen Bereich des Benutzerprogramms.
Aufbau des AINF-Datenbereichs:
Feldname | Distanz | Inhalt |
|
| Makrokennzeichnung |
|
| Funktionsauswahl |
|
| Operandentyp |
|
| Ausgabebereich |
|
| Kettungsadresse |
|
| Messkennung |
Makroaufrufformate und Operandenbeschreibungen
In den nachfolgenden Operandenbeschreibungen sind die Operanden alphabetisch geordnet.
Format 1: Verbrauchsstempel-Verfahren
|
|
Mindestens einer der Operanden GLOBAL, TIME oder IOCNT muss mit dem Wert YES angegeben werden, da sonst der Makroaufruf abgewiesen wird mit
X'10' in Register R15, wenn nur Standardwerte (NO) explizit angegeben wurden.
einer MNOTE-Meldung (im ASSEMBLER-Protokoll), wenn keiner der Operanden GLOBAL, TIME oder IOCNT explizit angegeben wurde.
AREA=
bezeichnet ein Feld, in das die Betriebsmittel-Verbrauchswerte eingetragen werden. Das Feld ist auf Wortgrenze auszurichten. Die Länge richtet sich nach den spezifizierten Informationspaketen (siehe „Aufbau der Ausgabestrukturen“).
adr
symbolische Adresse des Feldes
(r)
Register mit dem Adresswert adr
GLOBAL=
bezeichnet das Informationspaket „Globale Werte“.
NO
Das Informationspaket „Globale Werte“ wird nicht gewählt.
YES
Der Betriebsmittelverbrauch wird ausgegeben.
IOCNT=
bezeichnet das Informationspaket „Ein-/Ausgabe-Zähler“.
NO
Das Informationspaket „Ein-/Ausgabe-Zähler“ wird nicht gewählt.
YES
Die Summe der Ein-/Ausgaben auf öffentliche Datenträger und system-private Platten wird ausgegeben.
STD
Die Summe der Ein-/Ausgaben auf öffentliche Datenträger und system-private Platten wird ausgegeben.
EXT
Wie STD oder YES, jedoch inklusive der Ein-/Ausgaben auf Bänder, Benutzer-private Platten und sonstige Geräte.
MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. für einen Präfix) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.
TIME=
bezeichnet das Informationspaket „Zeitverbrauch“.
NO
Das Informationspaket „Zeitverbrauch“ wird nicht gewählt.
YES
CPU-Zeit und Zeitstempel sind auszugeben. Der Zeitstempel beim Verbrauchsstempelverfahren ist der auf Sekunden und Nanosekunden umgerechnete Wert des TOD-Registers.
Format 2: Messaufgaben-Verfahren (Start oder Wiederaufnahme einer Messung)
|
|
Mindestens einer der Operanden GLOBAL, TIME oder IOCNT muss mit dem Wert YES angegeben werden, da sonst der Makroaufruf abgewiesen wird mit
X'10' in Register R15, wenn nur Standardwerte („NO“) explizit angegeben wurden.
einer MNOTE-Meldung (im ASSEMBLER-Protokoll), wenn keiner der Operanden GLOBAL, TIME oder IOCNT explizit angegeben wurde.
CHAIN=
ermöglicht eine Verkettung des Makros AINF mit einem weiteren AINF-Makroaufruf durch Angabe einer Kettungsadresse. Diese zeigt auf den mit MF=L erzeugten Datenbereich des zweiten AINF-Makros. Siehe Hinweise zur Verkettung ("AINF - Betriebsmittelverbrauch messen").
adr
Adresse des mit MF=L erzeugten Datenbereichs des zweiten Makros
(r)
r = Register mit dem Adresswert adr. Der Operand ist nur für die Standard- oder L-Form des Makroaufrufs erlaubt.
GLOBAL=
bezeichnet das Informationspaket „Globale Werte“.
NO
Das Informationspaket „Globale Werte“ wird nicht gewählt.
YES
Der Betriebsmittelverbrauch wird ausgegeben.
IOCNT=
bezeichnet das Informationspaket „Ein-/Ausgabe-Zähler“.
NO
Das Informationspaket „Ein-/Ausgabe-Zähler“ wird nicht gewählt.
YES
Die Summe der Ein-/Ausgaben auf öffentliche Datenträger und system-private Platten wird ausgegeben.
STD
Die Summe der Ein-/Ausgaben auf öffentliche Datenträger und system-private Platten wird ausgegeben.
EXT
Wie STD oder YES, jedoch inklusive der Ein-/Ausgaben auf Bänder, Benutzer-private Platten und sonstige Geräte.
MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. für einen Präfix) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.
READY=
startet eine neue Messung und ordnet ihr die angegebene Messkennung zu.
'messid'
messid = Messkennung, die der Messung zugeordnet wird. Länge: maximal 8 Zeichen.
Ist der Name 'messid' schon einer (unterbrochenen) Messung zugeordnet, so wird diese Messung wieder aufgenommen.
adr
symbolische Adresse des Feldes, das die Messkennung enthält.
(r)
r = Register mit dem Adresswert adr
TIME=
bezeichnet das Informationspaket „Zeitverbrauch“.
NO
Das Informationspaket „Zeitverbrauch“ wird nicht gewählt.
YES
CPU-Zeit und Zeitstempel sind auszugeben.
Hinweis
Die Auswahl der Informationspakete (GLOBAL, TIME, IOCNT) bei der Wiederaufnahme einer Messung muss mit den Angaben beim Start dieser Messung übereinstimmen. Bei abweichenden Angaben wird die Messung mit den beim Start vereinbarten Informationspaketen fortgesetzt und in Register R15 die Rückinformation X'24' gespeichert.
Format 3: Messaufgaben-Verfahren (Messunterbrechung oder Messbeendigung)
|
|
AREA=
bezeichnet ein Feld, in das die Betriebsmittel-Verbrauchswerte eingetragen werden. Das Feld ist auf Wortgrenze auszurichten. Die Länge richtet sich nach den spezifizierten Informationspaketen (siehe „Aufbau der Ausgabestrukturen“).
adr
symbolische Adresse des Feldes.
(r)
r = Register mit dem Adresswert adr.
CHAIN=
ermöglicht eine Verkettung des Makros AINF mit einem weiteren AINF-Makroaufruf durch Angabe einer Kettungsadresse. Diese zeigt auf den mit MF=L erzeugten Datenbereich des zweiten AINF-Makros. Siehe Hinweise zur Verkettung ("AINF - Betriebsmittelverbrauch messen").
adr
symbolische Adresse des mit MF=L erzeugten Datenbereichs des zweiten Makros.
(r)
r = Register mit dem Adresswert adr. Der Operand ist nur für die Standard- oder L-Form des Makroaufrufs erlaubt.
FINISH=
beendet die Messung mit der angegebenen Messkennung.
'messid'
messid = Messkennung, die der Messung zugeordnet wurde.
adr
symbolische Adresse des Feldes mit der Messkennung.
(r)
r = Register mit dem Adresswert adr.
INTR=
unterbricht die Messung mit der angegebenen Messkennung.
'messid'
messid = Messkennung, die der Messung zugeordnet wurde.
adr
symbolische Adresse des Feldes mit der Messkennung.
(r)
r = Register mit dem Adresswert adr.
MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. für einen Präfix) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.
Format 4: DSECTs für Datenbereich und Ausgabestruktur (es muss mindestens 1 Operand angeben werden)
|
|
GLOBAL=D
generiert eine DSECT für die Ausgabestruktur des Informationspakets „Globale Werte“.
IOCNT=D
generiert eine DSECT für die Ausgabestruktur des Informationspakets „Ein-/Ausgabe-Zähler“.
MF=D
generiert eine DSECT für den Datenbereich und Equates für den Returncode.
P=
bezeichnet ein Präfix für die symbolischen Namen der DSECT.
I
Die generierten Feldnamen beginnen mit dem Präfix I
, die Längendefinitionen mit LIxx
.
p
Präfix, der allen generierten Feldnamen der DSECT vorangestellt wird. Der Präfix wird außerdem in die Namen der Längendefinitionen übernommen: L&p.xx
.
Länge des Präfixes = 1 Buchstabe.
*
kein Buchstabe wird den generierten Feldnamen vorangestellt und in die Namen der Längendefinitionen übernommen.
TIME=D
generiert eine DSECT für die Ausgabestruktur des Informationspakets „Zeitverbrauch“.
AINF MF=D 1 #INTF INTNAME=AINF,REFTYPE=REQUEST,INTCOMP=001 GS 950 1 MFPRE DNAME=AIMPL,MF=D,PREFIX=I,MACID=AIM,DMACID=AIM :*R200 2 IAIMPL DSECT , 2 *,##### PREFIX=I, MACID=AIM ##### 1 DS 0F AINF PARAMETER LIST 1 IAIMID DS CL2 IDENTIFICATION OF AINF MACRO 1 IAIMAINF EQU C’AI’ - AINF INFORMATION STAMP 1 IAIMPMAC EQU C’PM’ - PROG MEASUREMENT FUNCT. 1 IAIMVER DC XL2’075’ AINF MACRO VERSION 1 IAIMFC DS X FUNCTION CODE 1 IAIMFCCV EQU X’01’ - CURRENT USAGE VALUES 1 IAIMFCRE EQU X’02’ - MEASUREMENT READY 1 IAIMFCIN EQU X’04’ - MEASUREMENT INTR 1 IAIMFCFI EQU X’08’ - MEASUREMENT FINISH 1 IAIMNPAR DC FL1’4’ # OF PARAMETERS 1 * + 8 = DIST OF FIRST PARAM ADDR 1 IAIMMSK1 DC X’00’ INFORMATION PACKAGE MASK1 1 IAIMGLOB EQU X’80’ - "GLOBAL" REQUIRED 1 IAIMTIME EQU X’40’ - "TIME" REQUIRED 1 IAIMIOCN EQU X’20’ - "IOCNT=STD" REQUIRED 1 IAIMIOCX EQU X’10’ - "IOCNT=EXT" REQUIRED 1 * EQU X’0F’ - ALL OTHER BITS RESERVED 1 IAIMMSK2 DC X’00’ INFORMATION PACKAGE MASK2 1 * EQU X’FF’ - ALL BITS RESERVED 1 IAIMTARE DS X TYPE OF AREA PARAM 1 IAIMNONE EQU X’00’ - NOT SPECIFIED 1 IAIMADDR EQU X’01’ - GIVEN AS DIRECT ADDRESS 1 IAIMREG EQU X’02’ - GIVEN IN A REGISTER 1 IAIMTCHA DS X TYPE OF CHAIN PARAM 1 * - EQUATES AS ABOVE 1 IAIMTMID DS X TYPE OF MEASUREMENT ID 1 * - EQUATES AS ABOVE, + 1 IAIMSTR EQU X’03’ - GIVEN AS A STRING 1 IAIMTMIX DS X TYPE OF MID CONTINUED 1 IAIMEXT EQU X’FF’ - EXTENDED PARAMETER 1 IAIMAREA DS A OUTPUT AREA ADDRESS 1 IAIMCHAI DS A CHAIN ADDRESS 1 IAIMMID DS 0A MEASUREMENT ID ADDR OR 1 IAIMMIDS DS CL8 MEASUREMENT ID STRING 1 IAIMPLE EQU * END OF AINF PARAM LIST 1 LIAIMPL EQU *-IAIMPL LENGTH OF AINF PARAM LIST 1 SPACE 2
Anschließend an die DSECT folgt die Definition der möglichen Rückinformationen. Dieser Teil der Auflösung ist bei den Rückinformationen aufgelistet.
Aufbau der Ausgabestrukturen
Erstes Informationspaket: Globale Werte
Feldname | Distanz | Inhalt |
|
| CPU-Zeit im folgenden Format: |
|
| Gesamtzahl der Ein-/Ausgaben |
| Anzahl der Datenblöcke | |
| Working-Set-Integral |
AINF GLOBAL=D 1 #INTF INTNAME=AINF,REFTYPE=REQUEST,INTCOMP=001 GS 950 1 MFPRE DNAME=AIAREA,MF=D,PREFIX=I,MACID=AIA,DMACID=AIA :*R200 2 IAIAREA DSECT , 2 *,##### PREFIX=I, MACID=AIA ##### 1 DS 0F START OF OUTPUT AREA 1 MFPRE DNAME=AIGLOB,ALIGN=F,PREFIX=I,MACID=AIG,MF=S, :*R200C 1 DMACID=AIG :*R200 2 CNOP 0,4 2 IAIGLOB DS 0F 1 * "GLOBAL" INFO PACKAGE 1 IAIGTCPU DS 0FL8 CPU TIME 1 IAIGCPUS DS F CPU TIME SECONDS 1 IAIGCPUN DS F CPU TIME NANOSECONDS 1 IAIG#IOS DS F TOTAL # IO’S 1 IAIG#BLK DS F TOTAL # BLOCKS GS 090 1 IAIGWSI DS FL8 WORKING SET INTEGRAL GS 090 1 IAIGLOBE EQU * END OF "GLOBAL" INFO 1 LIAIGLOB EQU *-IAIGLOB LENGTH OF "GLOBAL" INFO 1 SPACE 2 1 * END OF OUTPUT AREA 1 MFPRE DNAME=AIAEND,ALIGN=F,PREFIX=I,MACID=AIA,MF=S, :*R200C 1 DMACID=AIA :*R200 2 CNOP 0,4 2 IAIAEND DS 0F 1 LIAIAREA EQU *-IAIAREA LENGTH OF OUTPUT AREA 1 SPACE 2
Die ermittelte CPU-Zeit setzt sich zusammen aus:
CPU-Zeit im nicht-privilegierten Programm-Zustand.
CPU-Zeit im privilegierten Programm-Zustand (Verarbeitung von SVC-Aufrufen und Programmfehlern)
CPU-Zeit während der Kommandobearbeitung
Zweites Informationspaket: Zeitverbrauch
Feldname | Distanz | Inhalt |
|
| CPU-Zeit im folgenden Format: |
|
| bei Verbrauchsstempel-Verfahren: Zeitstempelmessung |
AINF TIME=D 1 #INTF INTNAME=AINF,REFTYPE=REQUEST,INTCOMP=001 GS 950 1 MFPRE DNAME=AIAREA,MF=D,PREFIX=I,MACID=AIA,DMACID=AIA :*R200 2 IAIAREA DSECT , 2 *,##### PREFIX=I, MACID=AIA ##### 1 DS 0F START OF OUTPUT AREA 1 MFPRE DNAME=AITIME,ALIGN=F,PREFIX=I,MACID=AIT,MF=S, :*R200C 1 DMACID=AIT :*R200 2 CNOP 0,4 2 IAITIME DS 0F 1 * "TIME" INFO PACKAGE 1 IAITTCPU DS 0FL8 CPU TIME 1 IAITCPUS DS F CPU TIME SECONDS 1 IAITCPUN DS F CPU TIME NANOSECONDS 1 IAITETIM DS 0FL8 ELAPSED TIME / TIME STAMP 1 IAITTIMS DS F TIME IN SECONDS 1 IAITTIMN DS F TIME NANOSECONDS 1 IAITIMEE EQU * END OF "TIME" INFO 1 LIAITIME EQU *-IAITIME LENGTH OF "TIME" INFO 1 SPACE 2 1 * END OF OUTPUT AREA 1 MFPRE DNAME=AIAEND,ALIGN=F,PREFIX=I,MACID=AIA,MF=S, :*R200C 1 DMACID=AIA :*R200 2 CNOP 0,4 2 IAIAEND DS 0F 1 LIAIAREA EQU *-IAIAREA LENGTH OF OUTPUT AREA 1 SPACE 2
Wie sich die CPU-Zeit zusammensetzt, ist beim Informationspaket „Globale Werte“ beschrieben.
Der Zeitstempel beim Verbrauchsstempelverfahren ist der auf Sekunden und Nanosekunden umgerechnete Wert des TOD-Registers.
Drittes Informationspaket: Ein-/Ausgabe-Zähler
Feldname | Distanz | Inhalt |
|
| Gesamtzahl der Ein-/Ausgaben |
|
| Ein-/Ausgaben auf gemeinschaftlichen Datenträgern |
|
| Ein-/Ausgaben auf mehrbenutzbare private Platten |
|
| Ein-/Ausgaben auf task-exclusive Platten |
|
| Ein-/Ausgaben auf Magnetbänder |
|
| Ein-/Ausgaben auf sonstige Geräte |
AINF IOCNT=D 1 #INTF INTNAME=AINF,REFTYPE=REQUEST,INTCOMP=001 GS 950 1 MFPRE DNAME=AIAREA,MF=D,PREFIX=I,MACID=AIA,DMACID=AIA :*R200 2 IAIAREA DSECT , 2 *,##### PREFIX=I, MACID=AIA ##### 1 DS 0F START OF OUTPUT AREA 1 MFPRE DNAME=AIIOCN,ALIGN=F,PREFIX=I,MACID=AII,MF=S :*R200DMACIC 1 D=AII :*R200 2 CNOP 0,4 2 IAIIOCN DS 0F 1 * "IOCNT" INFO PACKAGE 1 IAII#IOS DS F TOTAL # IO’S 1 IAIIIOPD DS F # IO’S ON PUBLIC DEVICES 1 IAIIIOSD DS F # IO’S ON SYSTEM PRIV. DISKS 1 IAIIIOUD DS F # IO’S ON USER PRIVATE DISKS 1 IAIIIOTP DS F # IO’S ON TAPE DEVICES 1 IAIIIOUR DS F # IO’S ON UNIT RECORD DEVICES 1 IAIIOCNE EQU * END OF "IOCNT" INFO 1 LIAIIOCN EQU *-IAIIOCN LENGTH OF "IOCNT" INFO 1 SPACE 2 1 * END OF OUTPUT AREA 1 MFPRE DNAME=AIAEND,ALIGN=F,PREFIX=I,MACID=AIA,MF=S, C 1 DMACID=AIA 2 CNOP 0,4 2 IAIAEND DS 0F 1 LIAIAREA EQU *-IAIAREA LENGTH OF OUTPUT AREA
Bei den Ein-/Ausgaben werden nicht berücksichtigt:
Terminal-Ein-/Ausgaben bei Dialog- und Transaktionsprozessen
Paging-Ein-/Ausgaben
Zusätzlich gilt bei den Einzel-Ein-/Ausgaben auf Bänder, Benutzer-private Platten und sonstige Geräte (siehe Operand IOCNT=EXT):
Nicht berücksichtigt werden Ein-/Ausgaben
von privilegierten Programmen
auf Geräte, die vor Programmlauf freigegeben wurden (durch REMOVE-FILE-LINK oder SECURE-RESOURCE-ALLOCATION)
Da diese Einschränkungen nicht für die Gesamtzahl der Ein-/Ausgaben gelten, kann es sein, dass der errechnete Wert für die Gesamtzahl größer ist als die Summe der Einzelwerte.
Hinweise zur Verkettung beim Messaufgaben-Verfahren (Operand CHAIN)
Der durch CHAIN bezeichnete AINF-Datenbereich wird unmittelbar nach dem Datenbereich des aufrufenden AINF-Makros abgearbeitet. Dadurch können mehrere AINF-Aufrufe innerhalb einer SVC-Bearbeitung ausgeführt werden; z.B. Beenden oder Unterbrechen einer Messung und gleichzeitiger Start oder Wiederanlauf einer neuen Messung (unter einer anderen Messkennung); oder Unterbrechen einer Messung zur Ausgabe der aktuellen Messergebnisse und sofortiger Wiederanlauf der gleichen Messung.
Die Übergabe der Adressen in Register erleichtert eine Reentrant-Programmierung, ist aber nur sinnvoll, solange nicht mehr als zwei Operandenlisten miteinander verknüpft werden.
Nach Ablauf der SVC-Behandlung enthält Register R1 die Adresse des zuletzt bearbeiteten Datenbereichs.
Tritt ein Fehler im AINF-Datenbereich einer Kette auf, so wird die Kette an dieser Stelle abgebrochen. Register R1 enthält dann die Adresse des fehlerhaften Datenbereichs.
Rückinformation und Fehleranzeigen
Register R1 enthält die Adresse des Datenbereichs; bei Makroverkettung die Adresse des zuletzt bearbeiteten Datenbereichs.
R15:
+---------------+ | | | | | | | | | | | |a|a| +---------------+
Über die Ausführung des Makros AINF wird ein Returncode übergeben (im rechtsbündigen Byte von Register R15; die restlichen drei Byte sind gelöscht).
Feldname | X'aa' | Bedeutung |
IAIROK | X'00' | Aufruf wurde erfolgreich ausgeführt. |
IAIRADER | X'04' | Aufruf wurde nicht ausgeführt, wegen ungültiger Adresse der Operandenliste. |
IAIRFUER | X'08' | Aufruf wurde nicht ausgeführt, wegen ungültiger Makrokennung oder ungültigem Funktionscode (weder Verbrauchsstempelverfahren noch READY, INTR oder FINISH). |
IAIRCHER | X'0C' | Aufruf wurde ausgeführt trotz ungültiger Kettungsadresse im zuletzt bearbeiteten Operandenblock (READY, INTR, FINISH). |
IAIRPAER | X'10' | Aufruf wurde nicht ausgeführt, wegen
|
IAIRMRDY | X'14' | Aufruf wurde nicht ausgeführt, weil unter der angegebenen Messkennung bereits eine Messung stattfindet (bei READY). |
IAIRNCL5 | X'18' | Aufruf wurde nicht ausgeführt, weil kein Klasse-5-Speicher mehr zur Anlage des Arbeitsbereichs verfügbar ist (bei READY). |
IAIRMNTF | X'1C' | Aufruf wurde nicht ausgeführt, weil INTR oder FINISH ohne ein zugehöriges READY abgesetzt wurden; d.h. die Messung wurde noch nicht gestartet. |
IAIRMINT | X'20' | Aufruf wurde ausgeführt, obwohl ein FINISH für eine mit INTR unterbrochene Messung abgesetzt wurde; d.h. die Messung wurde noch nicht fortgesetzt. |
IAIRIRIN | X'24' | Aufruf wurde ausgeführt, obwohl der READY-Aufruf zur Wiederaufnahme einer Messung (nach INTR) nicht dieselben Informationen enthält wie der READY-Aufruf beim Start der Messung. |
Bei Makroverkettung bezieht sich die Angabe „Aufruf ausgeführt / nicht ausgeführt“? auf den Datenbereich, der zuletzt bearbeitet wurde (=Datenbereich, dessen Adresse in Register R1 gespeichert ist). Bei Fehler in der Verkettung wird die Kette beim fehlerhaften Datenbereich abgebrochen. Dabei bedeutet,
„ausgeführt“:
dass der letzte (fehlerhafte) Datenbereich noch bearbeitet wurde. Falls das Benutzerprogramm den Fehler korrigieren kann, müsste die Weiterverarbeitung mit dem nächsten Datenbereich angefordert werden.
„nicht ausgeführt“
dass der letzte (fehlerhafte) Datenbereich nicht mehr bearbeitet werden konnte. Falls das Benutzerprogramm den Fehler korrigieren kann, müsste die Verarbeitung mit derselben (korrigierten) Operandenliste fortgesetzt werden.
Beispiel 1: Verbrauchsstempel-Verfahren
AINF1 START PRINT NOGEN BALR 3,0 USING *,3 LA 5,AREAONE USING AINFDATA,5 AINF GLOBAL=Y,TIME=Y,IOCNT=EXT,AREA=AREAONE -----------------(1) PRINT NOGEN * * Display CPU time * MVC MESSTXT(L'MCPU),MCPU L 8,IAIGCPUS CPU time in seconds BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+20(10),ASSIST2+6 MVI MESSTXT+30,C'.' L 8,IAIGCPUN CPU time in nanoseconds BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+31(9),ASSIST2+7 BAL 7,OUTPUT Call output routine ----------> * * Display elapsed time * MVC MESSTXT(L'MELA),MELA L 8,IAITTIMS Elapsed time in seconds BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+20(10),ASSIST2+6 MVI MESSTXT+30,C'.' L 8,IAITTIMN Elapsed time in nanoseconds BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+31(9),ASSIST2+7 BAL 7,OUTPUT Call output routine ----------> * * Display # IO's * MVC MESSTXT(L'MIOS),MIOS * Total # IO's **************** L 8,IAII#IOS BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+30(10),ASSIST2+6 BAL 7,OUTPUT Call output routine ----------> * MVC MESSTXT(L'MIOP),MIOP * Public IO's ***************** L 8,IAIIIOPD BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+30(10),ASSIST2+6 BAL 7,OUTPUT Call output routine ---------->
* MVC MESSTXT(L'MIOSP),MIOSP * System private IO's ********* L 8,IAIIIOSD BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+30(10),ASSIST2+6 BAL 7,OUTPUT Call output routine ----------> * MVC MESSTXT(L'MIOSP),MIOSP * User private IO's *********** L 8,IAIIIOUD BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+30(10),ASSIST2+6 BAL 7,OUTPUT Call output routine ----------> * MVC MESSTXT(L'MITP),MITP * Tape devices **************** L 8,IAIIIOTP BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+30(10),ASSIST2+6 BAL 7,OUTPUT Call output routine ----------> * MVC MESSTXT(L'MIUR),MIUR * Unit record devices ********* L 8,IAIIIOUR BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+30(10),ASSIST2+6 BAL 7,OUTPUT Call output routine ----------> END TERM * * Output routine * OUTPUT WROUT MESSAGE,END,PARMOD=31 2 *,@DCEO 999 921011 53531004 MVI MESSTXT,C' ' Clear MESSTXT for next output MVC MESSTXT+1(L'MESSTXT-1),MESSTXT BR 7 Return -> * * Conversion routine * PKD2ZND CVD 8,ASSIST1 Convert register contents to UNPK ASSIST2,ASSIST1 zoned decimal MVZ ASSIST2+15(1),=X'F0' BR 7 Return -> * * Definitions * AREAONE DS 0F DS 6F DS 4F DS 6F
MESSAGE DC Y(ENDMESS-MESSAGE) Record length DS CL2 Reserved DC X'01' Print feed control character MESSTXT DC CL60' ' Text ENDMESS EQU * ASSIST1 DS D ASSIST2 DS CL16 MCPU DC C'CPU Time used:' MELA DC C'Elapsed Time used:' MIOS DC C'Total number of IOs:' MIOP DC C'IOs on public devices:' MIOSP DC C'IOs on system private disks:' MIOUP DC C'IOs on user private disks:' MITP DC C'IOs on tape devices:' MIUR DC C'IOs on unit record devices:' PRINT GEN AINFDATA AINF GLOBAL=D,TIME=D,IOCNT=D --------------------------------(2) 1 #INTF INTNAME=AINF,REFTYPE=REQUEST,INTCOMP=001 GS 950 1 AINFDATA MFPRE DNAME=AIAREA,MF=D,PREFIX=I,MACID=AIA,DMACID=AIA :*R200 2 AINFDATA DSECT , 2 *,##### PREFIX=I, MACID=AIA ##### 1 IAIAREA DS 0F START OF OUTPUT AREA LKH075 1 MFPRE DNAME=AIGLOB,ALIGN=F,PREFIX=I,MACID=AIG,MF=S, :*R200C 1 DMACID=AIG :*R200 2 CNOP 0,4 2 IAIGLOB DS 0F 1 * "GLOBAL" INFO PACKAGE LKH075 1 IAIGTCPU DS 0FL8 CPU TIME LKH075 1 IAIGCPUS DS F CPU TIME SECONDS LKH075 1 IAIGCPUN DS F CPU TIME NANOSECONDS LKH075 1 IAIG#IOS DS F TOTAL # IO'S LKH075 1 IAIG#BLK DS F TOTAL # BLOCKS GS 090 1 IAIGWSI DS FL8 WORKING SET INTEGRAL GS 090 1 IAIGLOBE EQU * END OF "GLOBAL" INFO LKH075 1 LIAIGLOB EQU *-IAIGLOB LENGTH OF "GLOBAL" INFO LKH075 1 SPACE 2 LKH075 1 MFPRE DNAME=AITIME,ALIGN=F,PREFIX=I,MACID=AIT,MF=S, :*R200C 1 DMACID=AIT :*R200 2 CNOP 0,4 2 IAITIME DS 0F 1 * "TIME" INFO PACKAGE LKH075 1 IAITTCPU DS 0FL8 CPU TIME LKH075 1 IAITCPUS DS F CPU TIME SECONDS LKH075 1 IAITCPUN DS F CPU TIME NANOSECONDS LKH075 1 IAITETIM DS 0FL8 ELAPSED TIME / TIME STAMP LKH075 1 IAITTIMS DS F TIME IN SECONDS LKH075 1 IAITTIMN DS F TIME NANOSECONDS LKH075 1 IAITIMEE EQU * END OF "TIME" INFO LKH075
1 LIAITIME EQU *-IAITIME LENGTH OF "TIME" INFO LKH075 1 SPACE 2 LKH075 1 MFPRE DNAME=AIIOCN,ALIGN=F,PREFIX=I,MACID=AII,MF=S :*R200DMACIC 1 D=AII :*R200 2 CNOP 0,4 2 IAIIOCN DS 0F 1 * "IOCNT" INFO PACKAGE LKH075 1 IAII#IOS DS F TOTAL # IO'S LKH075 1 IAIIIOPD DS F # IO'S ON PUBLIC DEVICES LKH075 1 IAIIIOSD DS F # IO'S ON SYSTEM PRIV. DISKS LKH075 1 IAIIIOUD DS F # IO'S ON USER PRIVATE DISKS LKH075 1 IAIIIOTP DS F # IO'S ON TAPE DEVICES LKH075 1 IAIIIOUR DS F # IO'S ON UNIT RECORD DEVICES LKH075 1 IAIIOCNE EQU * END OF "IOCNT" INFO LKH075 1 LIAIIOCN EQU *-IAIIOCN LENGTH OF "IOCNT" INFO LKH075 1 SPACE 2 LKH075 1 * END OF OUTPUT AREA LKH075 1 MFPRE DNAME=AIAEND,ALIGN=F,PREFIX=I,MACID=AIA,MF=S, :*R200C 1 DMACID=AIA :*R200 2 CNOP 0,4 2 IAIAEND DS 0F 1 LIAIAREA EQU *-IAIAREA LENGTH OF OUTPUT AREA LKH075 1 SPACE 2 LKH075 END =X'F0'
(1) | Der Betriebsmittelverbrauch seit Beginn des Auftrags soll gemessen werden entsprechend den Informationspaketen „Globale Werte“, „Zeitverbrauch“ und „Ein-/Ausgabezähler“. Die Messergebnisse sollen in den Bereich |
(2) | Eine DSECT für die einzelnen Informationspakete wird generiert. Mit den dort definierten Feldnamen können die Messwerte in |
Ablaufprotokoll:
/start-assembh % BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED % ASS6010 <ver> OF BS2000 ASSEMBH READY //compile source=*library-element(macexmp.lib,ainf1), - // compiler-action=module-generation(module-format=llm), - // module-library=macexmp.lib, - // listing=parameters(output=*library-element(macexmp.lib,ainf1)) % ASS6011 ASSEMBLY TIME: 380 MSEC % ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES % ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS % ASS6006 LISTING GENERATOR TIME: 107 MSEC //end % ASS6012 END OF ASSEMBH /start-executable-program library=macexmp.lib,element-or-symbol=ainf1 % BLS0523 ELEMENT 'AINF1', VERSION '@' FROM LIBRARY ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS % BLS0524 LLM 'AINF1', VERSION ' ' OF '<date> <time>' LOADED CPU Time used: 0000000058.526666000 ---------------------------------(3) Elapsed Time used: 0000001333.942669000 Total number of IOs: 0000019462 IOs on public devices: 0000019462 IOs on system private disks: 0000000000 IOs on system private disks: 0000000000 IOs on tape devices: 0000000000 IOs on unit record devices: 0000000000
(3) | Die ermittelten Messwerte werden ausgegeben. |
Beispiel 2: Messaufgaben-Verfahren
Im Programm AINF2 werden zwei Messungen gestartet und diesen Messungen die Messkennungen MES1 und MES2 zugeordnet.
MES1 fordert Werte über den Betriebsmittelverbrauch an, die den Informationspaketen „Zeitverbrauch“ und „Ein-/Ausgabe-Zähler“ entsprechen. Beim Beenden der Messung sollen die Informationen in den Bereich AREA1
ausgegeben werden.
MES2 fordert Werte über den Betriebsmittelverbrauch an, die den Informationspaketen „Globale Werte“ und „Ein-/Ausgabe-Zähler“ entsprechen. Beim Unterbrechen der Messung, d.h. am Ende des ersten Messabschnittes sollen die Informationen in den Bereich AREA2A
ausgegeben werden; beim Beenden der Messung in den Bereich AREA2B.
Zusätzlich werden für MES1 und MES2 die DSECTS für die Ausgabestrukturen der Informationspakete generiert und mit den entsprechenden Ausgabebereichen verknüpft.
AINF2 START PRINT NOGEN BALR 3,0 USING *,3 MES1B AINF READY='MES1',TIME=Y,IOCNT=EXT Start MES1 LTR 15,15 If Returncode not zero BNE ERROR go to ERROR -> MVC MESSTXT,STARTMSG BAL 7,OUTPUT Call output routine ----------> MES2B AINF READY='MES2',GLOBAL=Y,IOCNT=Y Start MES2 LTR 15,15 If Returncode not zero BNE ERROR go to ERROR -> MVI STARTMSG+3,C'2' Modify start message MVC MESSTXT,STARTMSG BAL 7,OUTPUT Call output routine ----------> MES2I AINF INTR='MES2',AREA=AREA2A Interrupt MES2 MES2C AINF READY='MES2',GLOBAL=Y,IOCNT=Y Continue MES2 BKPT MES2E AINF FINISH='MES2',AREA=AREA2B Terminate MES2 MES1E AINF FINISH='MES1',AREA=AREA1 Terminate MES1 * * Display Elapsed Time (MES1) * USING MES1PAR,5 LA 5,AREA1 MVC MESSTXT(L'MELA),MELA L 8,AAITTIMS Elapsed time in seconds BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+20(10),ASSIST2+6 MVI MESSTXT+30,C'.' L 8,AAITTIMN Elapsed time in nanoseconds BAL 7,PKD2ZND Call conversion routine MVC MESSTXT+31(9),ASSIST2+7
BAL 7,OUTPUT Call output routine ----------> * * Display # IO's at interrupt (MES2) * USING MES2PAR,6 LA 6,AREA2A MVC MESSTXT(L'MIOPI),MIOPI * Public IO's ***************** L 8,BAIIIOPD BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+30(10),ASSIST2+6 BAL 7,OUTPUT Call output routine ----------> * * Display # IO's at end (MES2) * LA 6,AREA2B MVC MESSTXT(L'MIOPE),MIOPE * Public IO's ***************** L 8,BAIIIOPD BAL 7,PKD2ZND Call conversion routine ------> MVC MESSTXT+30(10),ASSIST2+6 BAL 7,OUTPUT Call output routine ----------> END TERM ERROR NOP ERROR * : Error handling TERM * * Output routine * OUTPUT WROUT MESSAGE,END,PARMOD=31 2 *,@DCEO 999 921011 53531004 MVI MESSTXT,C' ' Clear MESSTXT for next output MVC MESSTXT+1(L'MESSTXT-1),MESSTXT BR 7 Return -> * * Conversion routine * PKD2ZND CVD 8,ASSIST1 Convert register contents to UNPK ASSIST2,ASSIST1 zoned decimal MVZ ASSIST2+15(1),=X'F0' BR 7 Return -> AREA1 DS 10F AREA2A DS 12F AREA2B DS 12F MESSAGE DC Y(ENDMESS-MESSAGE) Record length DS CL2 Reserved DC X'01' Print feed control character MESSTXT DC CL60' ' Text ENDMESS EQU *
STARTMSG DC CL60'MES1 successfully started' ASSIST1 DS D ASSIST2 DS CL16 MCPU DC C'CPU Time used:' MELA DC C'Elapsed Time used:' MIOPI DC C'IOs before BKPT:' MIOPE DC C'IOs after BKPT:' PRINT GEN MES1PAR AINF TIME=D,IOCNT=D,P=A 1 #INTF INTNAME=AINF,REFTYPE=REQUEST,INTCOMP=001 GS 950 1 MES1PAR MFPRE DNAME=AIAREA,MF=D,PREFIX=A,MACID=AIA,DMACID=AIA :*R200 2 MES1PAR DSECT , 2 *,##### PREFIX=A, MACID=AIA ##### 1 AAIAREA DS 0F START OF OUTPUT AREA LKH075 1 MFPRE DNAME=AITIME,ALIGN=F,PREFIX=A,MACID=AIT,MF=S, :*R200C 1 DMACID=AIT :*R200 2 CNOP 0,4 2 AAITIME DS 0F 1 * "TIME" INFO PACKAGE LKH075 1 AAITTCPU DS 0FL8 CPU TIME LKH075 1 AAITCPUS DS F CPU TIME SECONDS LKH075 1 AAITCPUN DS F CPU TIME NANOSECONDS LKH075 1 AAITETIM DS 0FL8 ELAPSED TIME / TIME STAMP LKH075 1 AAITTIMS DS F TIME IN SECONDS LKH075 1 AAITTIMN DS F TIME NANOSECONDS LKH075 1 AAITIMEE EQU * END OF "TIME" INFO LKH075 1 LAAITIME EQU *-AAITIME LENGTH OF "TIME" INFO LKH075 1 SPACE 2 LKH075 1 MFPRE DNAME=AIIOCN,ALIGN=F,PREFIX=A,MACID=AII,MF=S :*R200DMACIC 1 D=AII :*R200 2 CNOP 0,4 2 AAIIOCN DS 0F 1 * "IOCNT" INFO PACKAGE LKH075 1 AAII#IOS DS F TOTAL # IO'S LKH075 1 AAIIIOPD DS F # IO'S ON PUBLIC DEVICES LKH075 1 AAIIIOSD DS F # IO'S ON SYSTEM PRIV. DISKS LKH075 1 AAIIIOUD DS F # IO'S ON USER PRIVATE DISKS LKH075 1 AAIIIOTP DS F # IO'S ON TAPE DEVICES LKH075 1 AAIIIOUR DS F # IO'S ON UNIT RECORD DEVICES LKH075 1 AAIIOCNE EQU * END OF "IOCNT" INFO LKH075 1 LAAIIOCN EQU *-AAIIOCN LENGTH OF "IOCNT" INFO LKH075 1 SPACE 2 LKH075 1 * END OF OUTPUT AREA LKH075 1 MFPRE DNAME=AIAEND,ALIGN=F,PREFIX=A,MACID=AIA,MF=S, :*R200C 1 DMACID=AIA :*R200 2 CNOP 0,4 2 AAIAEND DS 0F
1 LAAIAREA EQU *-AAIAREA LENGTH OF OUTPUT AREA LKH075 1 SPACE 2 LKH075 MES2PAR AINF GLOBAL=D,IOCNT=D,P=B 1 #INTF INTNAME=AINF,REFTYPE=REQUEST,INTCOMP=001 GS 950 1 MES2PAR MFPRE DNAME=AIAREA,MF=D,PREFIX=B,MACID=AIA,DMACID=AIA :*R200 2 MES2PAR DSECT , 2 *,##### PREFIX=B, MACID=AIA ##### 1 BAIAREA DS 0F START OF OUTPUT AREA LKH075 1 MFPRE DNAME=AIGLOB,ALIGN=F,PREFIX=B,MACID=AIG,MF=S, :*R200C 1 DMACID=AIG :*R200 2 CNOP 0,4 2 BAIGLOB DS 0F 1 * "GLOBAL" INFO PACKAGE LKH075 1 BAIGTCPU DS 0FL8 CPU TIME LKH075 1 BAIGCPUS DS F CPU TIME SECONDS LKH075 1 BAIGCPUN DS F CPU TIME NANOSECONDS LKH075 1 BAIG#IOS DS F TOTAL # IO'S LKH075 1 BAIG#BLK DS F TOTAL # BLOCKS GS 090 1 BAIGWSI DS FL8 WORKING SET INTEGRAL GS 090 1 BAIGLOBE EQU * END OF "GLOBAL" INFO LKH075 1 LBAIGLOB EQU *-BAIGLOB LENGTH OF "GLOBAL" INFO LKH075 1 SPACE 2 LKH075 1 MFPRE DNAME=AIIOCN,ALIGN=F,PREFIX=B,MACID=AII,MF=S :*R200DMACIC 1 D=AII :*R200 2 CNOP 0,4 2 BAIIOCN DS 0F 1 * "IOCNT" INFO PACKAGE LKH075 1 BAII#IOS DS F TOTAL # IO'S LKH075 1 BAIIIOPD DS F # IO'S ON PUBLIC DEVICES LKH075 1 BAIIIOSD DS F # IO'S ON SYSTEM PRIV. DISKS LKH075 1 BAIIIOUD DS F # IO'S ON USER PRIVATE DISKS LKH075 1 BAIIIOTP DS F # IO'S ON TAPE DEVICES LKH075 1 BAIIIOUR DS F # IO'S ON UNIT RECORD DEVICES LKH075 1 BAIIOCNE EQU * END OF "IOCNT" INFO LKH075 1 LBAIIOCN EQU *-BAIIOCN LENGTH OF "IOCNT" INFO LKH075 1 SPACE 2 LKH075 1 * END OF OUTPUT AREA LKH075 1 MFPRE DNAME=AIAEND,ALIGN=F,PREFIX=B,MACID=AIA,MF=S, :*R200C 1 DMACID=AIA :*R200 2 CNOP 0,4 2 BAIAEND DS 0F 1 LBAIAREA EQU *-BAIAREA LENGTH OF OUTPUT AREA LKH075 1 SPACE 2 LKH075 END =X'F0'
Ablaufprotokoll:
/start-assembh % BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED % ASS6010 <ver> OF BS2000 ASSEMBH READY //compile source=*library-element(macexmp.lib,ainf2), - // compiler-action=module-generation(module-format=llm), - // module-library=macexmp.lib, - // listing=parameters(output=*library-element(macexmp.lib,ainf2)) % ASS6011 ASSEMBLY TIME: 407 MSEC % ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES % ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS % ASS6006 LISTING GENERATOR TIME: 106 MSEC //end % ASS6012 END OF ASSEMBH /start-executable-program library=macexmp.lib,element-or-symbol=ainf2 % BLS0523 ELEMENT 'AINF2', VERSION '@' FROM LIBRARY ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS % BLS0524 LLM 'AINF2', VERSION ' ' OF '<date> <time>' LOADED MES1 successfully started -----------------------------------------------(1) MES2 successfully started -----------------------------------------------(2) % IDA0199 PROGRAM BREAK AT ADDRESS X'0000B8', AMODE=24------------------(3) /copy-file from-file=oldexp,to-file=newexp ------------------------------(4) /resume-program Elapsed Time used: 0000000000.247344000 --------------------------------(5) IOs before BKPT: 0000000000 IOs after BKPT: 0000000011
(1) | MES1 wurde gestartet; der Makro wurde ohne Fehler ausgeführt. |
(2) | MES2 wurde gestartet; der Makro wurde ohne Fehler ausgeführt. |
(3) | Der Programmablauf wurde mit BKPT unterbrochen. |
(4) | Zur Demonstration wird ein COPY-FILE-Kommando gegeben (Ein-/Ausgabe). Anschließend wird der Programmablauf fortgesetzt. MES2 und MES1 werden beendet. Der Bereich |
(5) | Zur Demonstration werden einige der ermittelten Messwerte ausgegeben:
|