Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

AINF - Betriebsmittelverbrauch messen

&pagelevel(3)&pagelevel

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,
Anzahl der transportierten Datenblöcke, Working-Set-Integral.

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

IAMID

00

Makrokennzeichnung

IAIMFC

04

Funktionsauswahl

IAIMTARE

08

Operandentyp

IAIMAREA

0C

Ausgabebereich

IAIMCHAI

10

Kettungsadresse

IAIMMID

14

Messkennung

Makroaufrufformate und Operandenbeschreibungen

In den nachfolgenden Operandenbeschreibungen sind die Operanden alphabetisch geordnet.

Format 1: Verbrauchsstempel-Verfahren

AINF

AREA=adr / (r)

,GLOBAL=NOYES

,TIME=NOYES

,IOCNT=NOYES / EXT / STD

,MF=S / (E,..) / L

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)

AINF

READY='messid' / adr / (r)

,GLOBAL=NOYES

,TIME=NOYES

,IOCNT=NOYES / EXT / STD

[,CHAIN=adr / (r)]

,MF=S / (E,..) / L

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)

AINF

{
  INTR='messid' / adr / (r)[,AREA={adr / (r)}] |
 FINISH='messid' / adr / (r),AREA={adr / (r)}
}

[,CHAIN=adr / (r)]
,MF=S / (E,..) / L

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)

AINF

[MF=D]

,P=I / P / *

[,GLOBAL=D]

[,TIME=D]

[,IOCNT=D]

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

IAIGTCPU

00

CPU-Zeit im folgenden Format:
Distanz 00: volle Sekunden
Distanz 04: Rest in Nanosekunden
Derzeitige Messgenauigkeit: 1 Mikrosekunde

IAIG#IOS

08

Gesamtzahl der Ein-/Ausgaben

0C

Anzahl der Datenblöcke

10

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

IAITTCPU

00

CPU-Zeit im folgenden Format:
Distanz 00: volle Sekunden
Distanz 04: Rest in Nanosekunden
Derzeitige Messgenauigkeit: 1 Mikrosekunde

IAITETIM

08

bei Verbrauchsstempel-Verfahren: Zeitstempelmessung
bei Messaufgaben-Verfahren: Laufzeitmessung
Distanz 08: volle Sekunden
Distanz 0C: Rest in Nanosekunden
Derzeitige Messgenauigkeit: 1 Mikrosekunde

           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

IAII#IOS

00

Gesamtzahl der Ein-/Ausgaben

IAIIIOPD

04

Ein-/Ausgaben auf gemeinschaftlichen Datenträgern

IAIIIOSD

08

Ein-/Ausgaben auf mehrbenutzbare private Platten

IAIIIOUD

0C

Ein-/Ausgaben auf task-exclusive Platten

IAIIIOTP

10

Ein-/Ausgaben auf Magnetbänder

IAIIIOUR

14

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

  • ungültigem Register oder ungültiger Adresse des Ausgabebereichs;

  • ungültigem Register oder ungültiger Adresse einer Messkennung;

  • fehlenden Operandenangaben.

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 AREAONE übertragen werden.

(2)

Eine DSECT für die einzelnen Informationspakete wird generiert. Mit den dort definierten Feldnamen können die Messwerte in AREAONE symbolisch adressiert werden.

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.
Zuvor wurde MES2 unterbrochen, um die seit Start der Messung verbrauchte CPU-Zeit, Laufzeit und Anzahl der Ein-/Ausgaben im Bereich AREA2A abzuspeichern. Anschließend wurde MES2 wieder fortgesetzt.

(4)

Zur Demonstration wird ein COPY-FILE-Kommando gegeben (Ein-/Ausgabe). Anschließend wird der Programmablauf fortgesetzt. MES2 und MES1 werden beendet. Der Bereich AREA2B enthält die seit Start der Messung MES2 verbrauchten „Globale Werte“ und die Anzahl der Ein-/Ausgaben. Im Bereich AREA1 werden die seit Start der Messung MES1 aufgelaufenen Werte von „Zeitverbrauch“ und „Ein-/ Ausgabe-Zähler“ abgespeichert.

(5)

Zur Demonstration werden einige der ermittelten Messwerte ausgegeben:

  • Laufzeit in Sekunden (durch MES1 ermittelt)

  • Anzahl der Ein-/Ausgaben zum Zeitpunkt der Unterbrechung der Messung MES2. Die durch das Kommando COPY-FILE verursachten Ein-/Ausgaben sind dabei noch nicht berücksichtigt.

  • Anzahl der Ein-/Ausgaben am Ende der Messung MES2, d.h. inklusive der durch das Kommando COPY-FILE verursachten Ein-/ Ausgaben.