Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

SHOWMP - Memory Pools anzeigen

&pagelevel(3)&pagelevel

Allgemeines

Anwendungsgebiet:

Memory Pool Technik; siehe "Gemeinsamer Speicherbereich für mehrere Anwender (Memory Pool)"

Makrotyp:

S-Typ, MF-Format 3: C-/D-/E-/L-/M-Form;

siehe "S-Typ-Makroaufrufe"


Ein Memory Pool (MP) ist ein Speicherbereich im Klasse-6-Speicher, der von mehreren Anwendern gemeinsam benutzt werden kann. Der Anwender, der den Memory Pool einrichtet, legt eine Größe (Lage), Bezeichnung (Name) und Speicherattribute fest.
Die Größe des Memory Pools und die Belegung der Speicherseiten können mit dem Makro MINF abgefragt werden.

Makrobeschreibung

Der Makro SHOWMP informiert über Common Memory Pools, die aktuell im System angelegt sind. Lokale Memory Pools werden nicht ausgegeben. Ausgegeben werden Name, Geltungsbereich und die Anzahl der angeschlossenen Tasks. Zusätzlich können auch die TSNs der angeschlossenen Tasks angefordert werden.

Der nicht-privilegierte Benutzer erhält in jedem Fall nur die nicht-privilegierten Memory Pools ausgegeben, an die eine Task seiner Benutzerkennung angeschlossen ist. Bei Auflistung der Sharer-Tasks werden nur Tasks der eigenen Benutzerkennung aufgelistet.

Zur Einschränkung der Informationsmenge bestehen folgende Möglichkeiten:

  • Ausgabe für einen bestimmten Namen bzw. Namensraum

  • Ausgabe für einen bestimmten Geltungsbereich

  • Ausgabe für Memory Pools mit bestimmten Eigenschaften

Zusätzlich kann festgelegt werden, wieviele TSNs bei der Ausgabe der angeschlossenen Tasks maximal aufgelistet werden sollen (Voreinstellung ist 45).

Privilegierte Funktionen

Der privilegierte Anwender (Privileg TSOS bzw. SW-MONITOR-ADMINISTRATION) kann sich über alle Memory Pools informieren. Ihm werden auch alle Sharer-Tasks unabhängig von der Benutzerkennung ausgegeben. Zur Auswahl von privilegierten Memory Pools steht ihm der Operand PRIV_POOL zur Verfügung.

Makroaufrufformat und Operandenbeschreibung

SHOWMP

MF=D / E / L / C / M

{,MPNAME={*ALL / '<name 1..54 with_wild>'} /

[,MPNAMAD={A(name) / adr / (r)} ,MPNAMLN={<integer 1..54> / <var: int:4> / (<reg: integer 1..54>)}] }

,SCOPE=*ANY / *GLOBAL / *GROUP / *USER-GROUP

{,GROUP_USERID={*ANY / *OWN / '<name 1..8>' / <var: name 8..8> / (<reg: A(name 8..8)>)} /

,USER_GROUPID={*ANY / *OWN / '<name 1..8>' / <var: name 8..8> / (<reg: A(name 8..8)>)} }

,SELECT=*ALL / *PAR

,PRIV_POOL=*ANY / *YES / *NO

,CONNECT=*ANY / *BY-USER / *BY-TASK

{,USERID={*OWN / '<name 1..8>' / <var: name 8..8> / (<reg: A(name 8..8)>)} /

,TSN={*OWN / '<name 1..4>' / <var: name 4..4> / (<reg: A(name 4..4)>)} }

,INFO=*STD / *ALL

,NUMSHR=45 / <integer 1..4096> / <var: int:4> / (<reg: integer 1..4096>)

,INFO_AREA=adr / (r)

,INFO_LENGTH=1 / <integer 1..1024> / <var: int:4> / (<reg: integer 1..1024>)

[,PARAM=adr / (r)]

,PREFIX=N / p

,MACID=VPI / macid

,XPAND=PARAM / INFA

,EQUATES=YES / NO]

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.

MPNAME=

Bestimmt den Namen der Memory Pools, die ausgegeben werden sollen (Verbindung mit den Operanden SCOPE und SELECT beachten).
An Stelle dieses Operanden kann in unterschiedlichen MF-Varianten auch der Operand MPNAMAD verwendet werden, siehe die „Programmierhinweise“.

*ALL
Es werden alle Memory Pools ausgegeben.

'<name 1..54 with-wild>'
Nur der angegebene Memory Pool wird ausgegeben. Bei Angabe von Musterzeichen werden alle Memory Pools ausgegeben, deren Name mit der Musterzeichenfolge übereinstimmt. Das Musterzeichensymbol ist *. Das erste Leerzeichen beendet den Namen bzw. die Musterzeichenfolge.

MPNAMAD=
Gibt die Adresse des Feldes mit den Namen der Memory Pools an (Verbindung mit den Operanden SCOPE und SELECT beachten). Das Musterzeichensymbol * ist zulässig. Das erste Leerzeichen beendet den Namen bzw. die Musterzeichenfolge.
An Stelle dieses Operanden kann in unterschiedlichen MF-Varianten auch der Operand MPNAME verwendet werden, siehe die „Programmierhinweise“.

A(name)
Adresse des Feldes mit dem Namen der Memory Pools.

adr
Symbolische Adresse (Name) eines Hilfsfeldes, das die Adresse des Feldes mit dem Namen der Memory Pools enthält (nur für MF=M).

(r)
r = Register mit dem Adresswert des Feldes (nur für MF=M).

MPNAMLN=
Beschreibt die Länge des unter MPNAMAD angegebenen Namens. Obligatorische Angabe, wenn MPNAMAD verwendet wird. Sonst wird MPNAMLN ignoriert.

<integer 1..54>
Länge in Byte.

<var: int:4>
Symbolische Adresse (Name) des Feldes, das die Länge enthält (nur für MF=M).

(<reg: integer 1..54>)
reg = Register, das die Länge enthält (nur für MF=M).

SCOPE=

Gibt an, ob nur Memory Pools mit einem bestimmten Geltungsbereich ausgegeben werden sollen.

*ANY
Die Memory Pools werden unabhängig von ihrem Geltungsbereich ausgegeben.

*GLOBAL / *GROUP / *USER_GROUP
Die Memory Pools mit dem angegebenen Geltungsbereich werden ausgegeben.

GROUP_USERID=*ANY / *OWN / '<name 1..8>' / <var: name 8..8> /
(<reg: A(name 8..8)>)
Operand wird nur bei SCOPE=*GROUP ausgewertet.
Es werden nur Memory Pools ausgegeben, die von der angegebenen Benutzerkennung angelegt wurden. Dabei bezeichnet *OWN die Benutzerkennung der aufrufenden Task. Mit *ANY ist die Ausgabe unabhängig von der Benutzerkennung voreingestellt.

'<name 1..8>'
Angabe der Benutzerkennung.

<var: name 8..8>
Symbolische Adresse (Name) des Feldes, das die Benutzerkennung enthält (nur für MF=M).

(<reg:A(name 8..8))
reg = Register, das die Adresse des Feldes mit der Benutzerkennung enthält (nur für MF=M).

USER_GROUPID=*ANY / *OWN / '<name 1..8>' / <var: name 8..8> /
(<reg: A(name 8..8)>)
Operand wird nur bei SCOPE=*USER_GROUP ausgewertet.
Es werden nur Memory Pools ausgegeben, die von der angegebenen Benutzergruppe angelegt wurden. Dabei bezeichnet *OWN die Benutzergruppe, der die aufrufende Task angehört. Mit *ANY ist die Ausgabe unabhängig von der Benutzergruppe voreingestellt.

'<name 1..8>'
Angabe der Benutzergruppe.

<var: name 8..8>
Symbolische Adresse (Name) des Feldes, das den Namen der Benutzergruppe enthält (nur für MF=M).

(<reg:A(name 8..8))
reg = Register, das die Adresse des Feldes mit dem Namen der Benutzergruppe enthält (nur für MF=M).

SELECT=*ALL / *PAR

Gibt an, ob die durch den Memory-Pool-Namensbereich und SCOPE angegebene Menge von Memory Pools über Auswahlkriterien eingeschränkt werden soll (*PAR) oder nicht (*ALL).

PRIV_POOL=*ANY / *YES / *NO
Gibt bei SELECT=*PAR an, ob nur privilegierte Memory Pools (*YES, nur für nur privilegierte Benutzer zulässig) ausgegeben werden sollen. Bei Angabe von *NO werden keine privilegierten Memory Pools ausgegeben. *ANY zeigt die Memory Pools unabhängig von ihrer Privilegierung an.

CONNECT=
Gibt bei SELECT=*PAR an, ob die Memory Pools in Abhängigkeit von den angeschlossenen Tasks ausgegeben werden sollen. *ANY zeigt die Memory Pools unabhängig von den angeschlossenen Tasks an.

*BY-USER
Es werden nur Memory Pools ausgegeben, an die eine Task der im nachfolgenden Operanden USERID angegebenen Benutzerkennung angeschlossen ist.

*BY-TASK
Es werden nur Memory Pools ausgegeben, an die die Task mit der im nachfolgenden Operanden TSN angegebenen TSN angeschlossen ist.

USERID=*OWN / '<name 1..8>' / <var: name 8..8> / (<reg: A(name 8..8)>)
Operand wird nur für INFO=*ALL ausgewertet.
Gibt für CONNECT=*BY-USER die Benutzerkennung der angeschlossenen Task an. Mit *OWN ist die Benutzerkennung des Aufrufers voreingestellt. Nur der privilegierte Benutzer kann sich Memory Pools anzeigen lassen, an die Tasks einer anderen Benutzerkennung angeschlossen sind.

'<name 1..8>'
Angabe der Benutzerkennung.

<var: name 8..8>
Symbolische Adresse (Name) des Feldes, das die Benutzerkennung enthält (nur für MF=M).

(<reg:A(name 8..8))
reg = Register, das die Adresse des Feldes mit der Benutzerkennung enthält (nur für MF=M).

TSN=*OWN / '<name 1..4>' / <var: name 4..4> / (<reg: A(name 4..4)>)

Gibt für CONNECT=*BY-TASK die TSN der angeschlossenen Task an. Mit *OWN ist die TSN des Aufrufers voreingestellt. Der nicht-privilegierte Benutzer kann hier nur Tasks der eigenen Benutzerkennung angeben.

'<name 1..4>'
Angabe der TSN.

<var: name 4..4>
Symbolische Adresse (Name) des Feldes, das die TSN enthält (nur für MF=M).

(<reg:A(name 4..4))
reg = Register, das die Adresse des Feldes mit der TSN enthält (nur für MF=M).

INFO=
Bestimmt den Umfang der auszugebenden Informationen.

*STD
Die Eigenschaften des Memory Pools und die Anzahl der angeschlossenen Tasks werden ausgegeben.

*ALL
Zusätzlich zur Standardausgabe werden alle angeschlossenen Tasks mit ihrer TSN aufgelistet. Für nicht-privilegierte Benutzer werden nur die TSNs der eigenen Benutzerkennung ausgegeben. Für privilegierte Benutzer werden alle TSNs ausgegeben.

NUMSHR=45 / <integer 1..4096> / <var: int:4> / (<reg: integer 1..4096>)Operand wird nur für INFO=*ALL ausgewertet.
Gibt an, wieviele Tasks maximal aufgelistet werden sollen.

<integer 1..4096>
Angabe der Anzahl der Tasks.

<var: int:4>
Symbolische Adresse (Name) des Feldes, das die Anzahl der Tasks enthält (nur für MF=M).

(<reg: integer 1..4096>)
reg = Register, das die Anzahl der Tasks enthält (nur für MF=M).

INFO_AREA=adr / (r)
Nur für MF=M.
Gibt die Adresse des Bereichs zur Informationsausgabe an. Der Bereich muss aus einer oder mehreren Klasse-6-Speicherseiten bestehen.

adr
Symbolische Adresse (Name) eines Hilfsfeldes, das die Adresse des Bereichs zur Informationsausgabe enthält.

(r)
r = Register mit dem Adresswert des Bereichs zur Informationsausgabe.

INFO_LENGTH=1 / <integer 1..1024> / <var: int:4> / (<reg: integer 1..1024>)

Angabe der Anzahl der Seiten für die Ausgabe.

<integer 1..1024>
Angabe der Anzahl der Seiten.

<var: int:4>
Symbolische Adresse (Name) des Feldes, das die Anzahl der Seiten enthält (nur für MF=M).

(<reg: integer 1..1024>)
reg = Register, das die Anzahl der Seiten enthält (nur für MF=M).

XPAND=
Steuerungs-Operand nur für MF=C und MF=D:
Es wird festgelegt, welche Struktur zu expandieren (erzeugen) ist. Angaben bei diesem Operanden werden bei anderen MF-Werten ignoriert.

PARAM
Das Layout der Parameterliste wird expandiert.

INFA
Das Layout des Informationsbereiches wird expandiert.

EQUATES=
Steuerungs-Operand nur für MF=C und MF=D:
Gibt an, ob bei der Expansion des Parameter- oder Informationsbereichs auch Equates für die Werte der Felder des Parameter- oder Informationsbereichs generiert werden sollen.

YES
Bei der Expansion des Parameter- oder Informationsbereichs werden auch Equates für die Werte der Felder des Parameter- oder Informationsbereichs generiert.

NO
Bei der Expansion des Parameter- oder Informationsbereichs werden keine Equates für die Werte der Felder des Parameter- oder Informationsbereichs generiert.

Programmierhinweise

Es gibt drei Paare von Operanden, die nicht zusammen verwendet werden dürfen und die sich gegenseitig ausschließen: MPNAME und MPNAMAD, GROUP_USERID und USER_GROUPID sowie USERID und TSN. Bei diesen Paaren gilt die Grundregel, dass die (in unterschiedlichen MF-Varianten) zuletzt gemachte Angabe maßgeblich ist und zu den restlichen Operanden passen muss.
Im Detail:

  • Werden MPNAME oder MPNAMAD angegeben, so gilt immer die letzte dieser Angaben (d.h. die vom letzten MF=L- oder MF=M-Aufruf).

  • Bei SCOPE=*GROUP muss zuletzt GROUP_USERID angegeben werden (nicht USER_GROUPID).

  • Bei SCOPE=*USER_GROUP muss zuletzt USER_GROUPID angegeben werden (nicht GROUP_USERID).

  • Bei SELECT=*PAR und CONNECT=*BY-USER muss zuletzt der Operand USERID angegeben werden (nicht TSN).

  • Bei SELECT=*PAR und CONNECT=*BY-TASK muss zuletzt der Operand TSN angegeben werden (nicht USERID).

Informationen über die Memory Pools werden im Informationsbereich (Operanden IN-FO_AREA und INFO_LENGTH) bereitgestellt. Daneben gibt es im Parameterbereich zwei weitere Felder mit Ausgabeinformationen:

  • Wenn die Funktion erfolgreich war oder teilweise ausgeführt wurde, dann wird die Anzahl Memory Pools, über die Informationen im Informationsbereich ausgegeben wurden, im Feld &P.NPOL bereitgestellt.

  • Wenn die Größe des Klasse-6-Speichers (Operand INFO_LENGTH) nicht ausreicht (Return-Information: Funktion teilweise ausgeführt. Informationsbereich zu klein), dann wird die benötigte Seitenzahl im Parameterbereich (Feld &P.INFX) bereitgestellt. Sie kann für weitere Aufrufe von SHOWMP, z.B. in einer Laufschleife, verwendet werden.

    Die Anzahl der Memory Pools kann sich zwischen zwei Aufrufen von SHOWMP ändern!

Layout des Parameterbereichs

&P._MDL      DSECT
*   subcode2
&P.NONE      EQU   0                     no further information
&P.NOMP      EQU   1                     no memory pool found
&P.NOCO      EQU   2                     no connection to memory pool
&P.MNER      EQU   3                     error in MPNAME specification
&P.MAER      EQU   4                     invalid MPNAMAD address
&P.MLER      EQU   5                     invalid MPNAMLN value
*                                        specified
&P.SCER      EQU   6                     error in SCOPE specification
&P.SEER      EQU   7                     error in SELECT specification
&P.PPER      EQU   8                     error in PRIV_POOL
*                                        specification
&P.COER      EQU   9                     error in CONNECT
*                                        specification
&P.GUER      EQU   10                    wrong USERID specified for
*                                        SCOPE=*GROUP
&P.GRER      EQU   11                    wrong GROUPID specified for
*                                        SCOPE=*USER-GROUP
&P.CUER      EQU   12                    wrong USERID specified for
*                                        CONNECT=*BY-USER
&P.CTER      EQU   13                    wrong TSN specified for
*                                        CONNECT=*BY-TASK
&P.IFER      EQU   14                    error in INFO specification
&P.NSER      EQU   15                    error in NUMSHR specification
&P.IAER      EQU   16                    invalid INFO_AREA address
&P.ILER      EQU   17                    invalid INFO_LENGTH value
*                                        specified
&P.FHDR  FHDR  MF=(C,&P.),EQUATES=NO     Standardheader
*   main return codes
&P.SUCC       EQU   0                    function processed
*                                        successfully
&P.PART       EQU   1                    function processed only
*                                        partially
&P.PAER       EQU   2                    parameter error
&P.INER       EQU   3                    internal error
&P.PRER       EQU   4                    privilege error
&P.PSAT       EQU   5                    paging area saturation
&P.MSAT       EQU   6                    main memory saturation
&P.USAT       EQU   7                    user space saturation
&P.SSAT       EQU   8                    system space saturation
* 
&P.MPSS       DS    AL1                  MPSHOW FLAG
&P.MPNS       EQU   X'80'                *ALL OR MP NAME SPECIFIED
&P.CUSS       EQU   X'40'                *OWN OR USERID SPECIFIED
&P.TSNS       EQU   X'20'                *OWN OR TSN SPECIFIED
&P.GUSS       EQU   X'10'                *OWN/*ANY OR USERID SPECIFIED
&P.GRPS       EQU   X'08'                *OWN/*ANY OR GROUPID
*                                        SPECIFIED
&P.GUOA       EQU   X'04'                *ANY OR *OWN FOR USERID
*                                        SPECIFIED
&P.GROA       EQU   X'02'                *ANY or *OWN FOR GROUPID
*                                        SPECIFIED
&P.RES1       EQU   X'01'                RESERVED
* 
&P.COPE       DS    FL1                  SCOPE OF SHOWMP
*   scope of memory pools
&P.ANYS       EQU   0                    any memory pool scope
&P.GRP        EQU   1                    memory pools of scope=group
&P.UGRP       EQU   2                    memory pools of
*                                        scope=user-group
&P.GLB        EQU   3                    memory pools of
*                                        scope=user-global
* 
&P.SELE       DS    FL1                  SELECTION OF SHOWMP
*   select memory pools
&P.ALLS       EQU   0                    select all memory pool data
&P.PAR        EQU   1                    select specific data
* 
&P.CONM       DS    FL1                  CONNECTION OF SHOWMP
*   select connected memory pools
&P.ANYC       EQU   0                    select any memory pool
&P.USER       EQU   1                    select memory pools of user
*                                        ID
&P.TASK       EQU   2                    select memory pools of task
* 
&P.PRPO       DS    FL1                  PRIV-POOL OF SHOWMP
*   privilege of memory pools
&P.ANYP       EQU   0                    select memory pools whether
*                                        privileged or no
&P.YESP       EQU   1                    select only privileged memory
*                                        pools
&P.NOP        EQU   2                    select only non-privileged
* 
&P.INFM       DS    FL1                  INFO OF SHOWMP
*   type of information
&P.STD        EQU   0                    get data without TSN-list
&P.ALLI       EQU   1                    get data with TSN-list
* 
&P.MPNM       DS    CL54                 MEMORY POOL NAME
&P.MPNA       DS    A                    ADDRESS OF MEMORY POOL NAME
&P.MPLN       DS    F                    LENGTH OF MPNAME
&P.SCOPE_ID   DS    0XL8                 USER- OR GROUP_ID
&P.GUSI       DS    CL8                  USER-ID BY SCOPE=GROUP
              ORG   &P.SCOPE_ID
&P.GRPI       DS    CL8                  GROUP-ID BY SCOPE=USER-GROUP
              ORG   &P.SCOPE_ID+8
&P.CONNECT_ID DS    0XL8                 USER-ID OR TSN
&P.USID       DS    CL8                  USER-ID BY CONNECT=*BY-USER
              ORG   &P.CONNECT_ID
&P.TSN        DS    CL4                  TSN BY CONNECT=*BY-TSN
              ORG   &P.CONNECT_ID+8
&P.NRSH       DS    F                    # OF SHARER
&P.INFP       DS    A                    ADDRESS OF INFO AREA
&P.INFL       DS    F                    LENGTH OF INFO AREA IN PAGES
&P.NPOL       DS    F                    NUMBER OF FOUND MEMORY POOLS
&P.INFX       DS    F                    NEW LENGTH OF INFO AREA (PAGES)
&P.#          EQU   *-&P.FHDR

Layout des Informationsbereichs

&P.INFA       DSECT
*
*   info area description
&P.NXTM       DS    A                    NEXT MEMORY POOL
&P.MPNA       DS    CL54                 MEMORY POOL NAME
&P.MPSC       DS    FL1                  SCOPE OF MEMORY POOL
*   scope of memory pools
&P.GRPO       EQU   1                    memory pools of scope=group
&P.UGRO       EQU   2                    memory pools of
*                                        scope=user-group
&P.GLBO       EQU   3                    memory pools of
*                                        scope=global
* 
&P.RES        DS    XL1                  RESERVED BYTE
&P.GUID       DS    CL8                  GROUP- OR USER-ID
&P.NSHR       DS    F                    # OF SHARER TASKS
&P.STSN       DS    CL4                  TSN OF SHARER
&P.INFA#      EQU   *-&P.NXTM

Rückinformation und Fehleranzeigen

Standardheader:

+---------------+
|   |   |   |   |
|c|c|b|b|a|a|a|a|
+---------------+

Über die Ausführung des Makros SHOWMP wird im Standardheader folgender Returncode übergeben (cc=Subcode2, bb=Subcode1, aaaa=Maincode):

X'cc'

X'bb'

X'aaaa'

Erläuterung

X'00'

X'00'

X'0000'

Der Makro wurde normal ausgeführt.

X'01'

X'00'

X'0000'

Normale Ausführung. Kein passender Memory Pool im System

X'02'

X'00'

X'0000'

Normale Ausführung. Spezifizierter Memory Pool vorhanden, aber nicht
konnektiert

X'00'

X'00'

X'0001'

Funktion teilweise ausgeführt. Informationsbereich zu klein. Die nötige
Seitenzahl wird im Ausgabefeld &P.INFL geliefert.

X'03'

X'01'

X'0002'

Fehler im Operanden MPNAME (auch wenn MPNAMAD auf ein Feld mit
fehlerhafter Namensangabe verweist)

X'04'

X'01'

X'0002'

Ungültige Adresse im Operanden MPNAMAD

X'05'

X'01'

X'0002'

Ungültiger Wert im Operanden MPNAMLN

X'06'

X'01'

X'0002'

Fehler im Operanden SCOPE

X'07'

X'01'

X'0002'

Fehler im Operanden SELECT

X'08'

X'01'

X'0002'

Fehler im Operanden PRIV_POOL

X'09'

X'01'

X'0002'

Fehler im Operanden CONNECT

X'0A'

X'01'

X'0002'

Falsche Benutzerkennung im Operanden USERID (SCOPE=*GROUP)

X'0B'

X'01'

X'0002'

Falsche Gruppenkennung im Operanden GROUPID (SCOPE=*USER-
GROUP)

X'0C'

X'01'

X'0002'

Falsche Benutzerkennung im Operanden USERID (CONNECT=*BY-
USER)

X'0D'

X'01'

X'0002'

Falsche TSN im Operanden TSN (CONNECT=*BY-TASK)

X'0E'

X'01'

X'0002'

Fehler im Operanden INFO

X'0F'

X'01'

X'0002'

Fehler im Operanden NUMSHR

X'10'

X'01'

X'0002'

Ungültige Adresse im Operanden INFO_AREA (auch bei fehlender
Angabe bzw. fehlender Seitenausrichtung des Bereichs)

X'11'

X'01'

X'0002'

Ungültige Länge im Operanden INFO_LENGTH

X'00'

X'20'

X'0003'

Interner Fehler

X'00'

X'40'

X'0004'

Privileg für Aufruf nicht vorhanden

X'00'

X'80'

X'0005'

Engpass im Seitenwechselspeicher

X'00'

X'80'

X'0006'

Engpass im Hauptspeicher

X'00'

X'80'

X'0007'

Engpass im Benutzeradressraum

Weitere Returncodes, deren Bedeutung durch Konvention makro-übergreifend festgelegt ist, können der Tabelle „Standard-Returncodes“ (Standardheader) entnommen werden.

Programmbeispiel

         SHOWMP MF=D,XPAND=PARAM
         SHOWMP MF=D,XPAND=INFA
*
SHMEMPO  @ENTR TYP=I,LOCAL=SHMEMPL
SHMEMPL  @PAR  D=YES
SHMEMPC  SHOWMP MF=C,PREFIX=A,XPAND=PARAM
*
SHMPNAME DS    CL8              MPNAME
SHUSERID DS    CL8              USERID FOR GROUP
SHMEMPL  @PAR  LED=YES
...
         LA    R3,SHMEMPC
         USING NVPI_MDL,R3
         LA    R4,1
         MVC   SHMEMPC(NVPI#),SHMEMPD
         MVC   SHMPNAME,MEMPNAME COPY MPNAME
         MVC   SHUSERID,USERID   Assume: MYUID is own USERID
         LA    R9,SHMPNAME       A(MPNAME)
*
         SHOWMP MF=M,MPNAMAD=(R9),MPNAMLN=8,GROUP_USERID=SHUSERID
*
         @CYCL ,
*
         REQM (R4)              REQUEST CLASS 6 PAGES
         @WHEN NZ
         LTR  R15,R15
         @BREAK ,
*
         LR     R5,R1
         SHOWMP MF=M,INFO_AREA=(R5)
*
         SHOWMP MF=E,PARAM=(R3) GET MEMORY POOL DATA
         XR     R15,R15
         @WHEN  EQ
         CLC    NVPIMRET,=X'0000'
         @OR    GT
         CLC    NVPIMRET,=X'0001'
         @BREAK ,
*
         RELM   (R4),(R5)       RELEASE CLASS 6 PAGES
*
         L      R4,NVPIINFL     GET NEW PAGE NUMBER
         @BEND  ,
*
         @IF    ZE
         LTR    R15,R15
         @AND   EQ
         CLC    NVPIMRET,=X'0000'
         @AND NE
         CLC    NVPINPOL,=F'0'     AVOID CYCLE WITH LOOP COUNT 0
         @THEN ,
*
*        evaluation of returned info data
*
         L      R8,NVPINPOL
         LR     R7,R5          ADDRESS OF INFO AREA
         USING  NVPIINFA,R7
*
         @CYCL (R8)            LOOP OVER FOUND MEMPOOLS
           .
           .
         L      R7,NVPINXTM    NEXT MEMORY POOL
         @BEND ,
*
         @ELSE ,
*
*        error handling
*
         @BEND ,
...
         @END   ,
* DATA
SHMEMPD  SHOWMP MF=L,SCOPE=*GROUP,SELECT=*ALL,INFO=*ALL
*
MEMPNAME DC    CL8'HAUS*'           MPNAME WITH WILDCARD
USERID   DC    CL8'MYUID'           USERID FOR GROUP