Profiler Utility im Batch-Modus benutzen

#### Search Results

Search

# Profiler Utility im Batch-Modus benutzen

Der Natural Profiler wird verwendet, um den internen Prozessfluss einer Natural Batch-Anwendung zu überwachen und die Performance und die Codeabdeckung der Anwendung zu analysieren.

Die Profiler Utility wird durch JCL-Eingabe gesteuert und bietet Funktionen zur Datensammlung und Datenverarbeitung:

1. Die Datensammlungsfunktionen steuern das Profiler-Tracing, wählen erforderliche Ereignistypen aus, filtern, konsolidieren (aggregieren) oder nehmen Datenproben (Sampling) und schreiben die resultierenden Ereignisse in die Profiler-Ressourcendatei.

2. Die Datenverarbeitungsfunktionen lesen und verarbeiten die Ereignisdaten aus der Profiler-Ressourcendatei. Nicht konsolidierte Ereignisdaten können konsolidiert werden.

   Sie können Statistiken, eine Programmzusammenfassung, eine Zeilenzusammenfassung und eine Transaktionszusammenfassung, ein Programm-Trace (Ablaufverfolgung), ein Ereignis-Trace mit den wichtigsten Daten sowie Reports über die Programm- und Statement-Abdeckung ausgeben. Sie können die resultierenden Daten im Text- oder CSV-Format (kommatrennte Werte) exportieren.

Die folgenden Tools bieten außerdem Funktionen zum Lesen von Profiler-Ressourcendateien und zum Analysieren der Daten:

- NaturalONE zeigt das vollständige Ereignis-Tracing an und bietet eine Performance-Analyse (Hot-Spots) der Natural Batch-Anwendung. Abdeckungsdaten können in der NaturalONE Coverage-Ansicht und im NaturalONE Source Editor überprüft werden.

- Die Profiler Rich GUI-Schnittstelle, das von den NaturalONE Tools and Utilities gestartet wird, bietet Funktionen zum Auswerten oder Konsolidieren von Profiler-Daten oder zum Löschen einer Ressourcendatei. Interaktive Kreisdiagramme zeigen die Verteilung der Profiler-Leistungskennzahlen (KPIs, Key Performance Indicators) für ausgewählte Kriterien, z.B. die Verteilung der CPU-Zeit für Programme. Bei überwachten Programmen wird der Quellcode mit den Profiler-Daten kombiniert, wobei der Quellcode entsprechend dem Wert des ausgewählten KPI eingefärbt wird.

Dieses Kapitel behandelt die folgenden Themen:

- Voraussetzungen für Profiler Utility im Batch-Modus

- Profiler Utility aufrufen und beenden

- Syntax und Schlüsselwörter

- Gesammelte Ereignisse und Daten

- Profilierung initialisieren

- Initialisierung der Codeabdeckung (Code Coverage)

- Datensammlung starten und anhalten

- Filter zur Begrenzung der gesammelten Daten benutzen

- Stichprobennahme (Sampling) aktivieren

- Benutzerdefinierte Ereignisse schreiben

- Monitor-Session CMPRMIN

- Monitor-Session CMSYNIN

- Batch-Natural RPC-Server profilieren

- Profil-Erstellung einer Großrechner-Session aus Natural Studio

- Ereignisdaten konsolidieren

- Ereignisdaten auswerten

- Profiler-Ressourcendateien verwalten

- Profiler-Eingaben aus Natural-Textobjekten einfügen

- Ereignisverfolgung (Event-Trace)

- Ablaufverfolgung (Tracing) beim Messen der Natural-Codeabdeckung

- Interner Trace

- Profiler-Statistikdaten

## Voraussetzungen für Profiler Utility im Batch-Modus

Die folgenden Voraussetzungen müssen erfüllt sein, bevor Sie die Profiler Utility im Batch-Modus verwenden können:

- Natural-Parametereinstellungen

- Natural-Nukleus-Verlinkung

- Anzeige von Ressourcendateien in Natural Development Server-Umgebungen

### Natural-Parametereinstellungen

Für die Natural Profiler-Datenerfassungsfunktionen (`INIT`, `COVERAGE`, `START`, `PAUSE` und `TEXT`) müssen Sie die folgenden Natural-Profilparameter definieren:

- `RDCSIZE` - Um den Natural Data Collector (ohne Aufzeichnungsdaten im Puffer des Natural Data Collector) zu aktivieren, geben Sie an:

      RDCSIZE=2

- `RDCEXIT` - Um NATRDC1 als User Exit für den Natural Data Collector zu definieren, geben Sie an:

      RDCEXIT=NATRDC1

- `PDPSIZE` - Optionaler Parameter, den Sie zusätzlich angeben können, um die Profiler-Daten-Pool-Größe zu bestimmen, zum Beispiel:

      PDPSIZE=1000

Die Datenverarbeitungsfunktionen der Profiler Utility (`CONSOLIDATE`, `READ`, `LIST` und `DELETE`) können nicht ausgeführt werden, wenn die Profil-Erstellung aktiv ist. Aus Performance-Gründen empfehlen wir, auch den Natural Data Collector für diese Funktionen mit der folgenden (Standard-)Parametereinstellung zu deaktivieren:

    RDCSIZE=0

Einzelheiten zu den oben genannten Natural-Profilparametern finden Sie in den entsprechenden Abschnitten in der Parameter-Referenz-Dokumentation.

Programme, die mit dem Natural Optimizer kompiliert werden, erfordern die folgende Natural Optimizer-Optionseinstellung:

    NODBG=OFF

(Siehe auch Liste der Optionen in der Natural Optimizer Compiler-Dokumentation.)

### Natural-Nukleus-Verlinkung

Der Natural-Nukleus muss "reentrant" und "reusable" sein. Verwenden Sie die folgenden Linkage-Optionen:

    RENT,REUS

### Anzeige von Ressourcendateien in Natural Development Server-Umgebungen

Standardmäßig werden Natural-Großrechner-Ressourcendateien in Natural Development Server (NDV) -Umgebungen wie NaturalONE oder Natural Studio nicht angezeigt. Für die Analyse der Profiler-Ereignisdaten muss von NaturalONE aus auf die Ressourcendatei zugegriffen werden. Dazu müssen Sie das NDV-Verhalten ändern.

Um Ressourcendateien in einer NDV-Umgebung anzuzeigen:

1. Kopieren Sie den Quellcode des NDV-User Exit `NDV-SX03` aus der Natural-System-Library `SYSLIB` in eine Benutzer-Library.

2. Bearbeiten Sie das Member. Passen Sie den Code folgendermaßen an:

       DISPLAY-RESOURCES := 'Y'   /* Display resources in NaturalONE/Studio

3. Katalogisieren Sie das Member unter dem Namen `NDV-UX03`.

4. Kopieren Sie es zurück in die System-Library `SYSLIB` oder in die Library `SYSLIBS` oder `SYSTEM`.

## Profiler Utility aufrufen und beenden

Dieser Abschnitt beschreibt, wie Sie die Profiler Utility im Batch-Modus aufrufen und beenden.

Um die Profiler Utility aufzurufen:

- Geben Sie das folgende Systemkommando in die primäre Batch-Eingabedatei für Kommandos `CMSYNIN` ein:

      PROFILER

  Anmerkung
  Nach dem Systemkommando `PROFILER` erwartet der Profiler eine oder mehrere Zeilen mit Profiler-Schlüsselworteinträgen.

Um die Profiler Utility zu beenden:

- Geben Sie das folgende Profiler-Schlüsselwort in die primäre Batch-Eingabedatei für Kommandos `CMSYNIN` ein:

      END-PROFILER

  Oder:

      END

  Oder:

      .

## Syntax und Schlüsselwörter

Die Profiler Utility im Batch-Modus liest die Profiler-Schlüsselwörter, die die Profil-Erstellung aus der primären Batch-Eingabedatei für Kommandos CMSYNIN steuern. Der Profiler liest die Eingabezeilen, bis er das Schlüsselwort `END-PROFILER` (oder `END` oder `.`) erreicht.

Dieser Abschnitt behandelt die folgenden Themen:

- Profiler Utility-Syntax

- Profiler Utility-Schlüsselwörter

### Profiler Utility-Syntax

Die Symbole, die in den in diesem Abschnitt gezeigten Syntaxdiagrammen verwendet werden, werden in der Systemkommando-Syntax in der Systemkommandos-Dokumentation erläutert.

Geben Sie ein Profiler Utility-Kommando mit einem der folgenden Syntaxformate ein:

keyword[=value][,keyword[=value]]...

Oder:

keyword
[value]
...

Anmerkungen:

1. Wenn ein Wert mit einem Schlüsselwort verknüpft ist, aber kein Gleichheitszeichen gefunden wird, erwartet der Profiler den Wert in einer separaten Eingabezeile ohne anderes Schlüsselwort (zweites Syntaxformat).
2. Das erste Syntaxformat erwartet die Eingabe im Delimiter-Modus (`IM=D`).
3. Das zweite Syntaxformat kann verwendet werden, wenn der Profiler mit dem Natural-Profilparameter `STACK` ausgeführt werden soll oder wenn die Daten im Forms-Modus (IM=F) eingegeben werden.

Es gelten die folgenden Regeln:

- Leerzeilen und Zeilen, die mit einem Stern (`*`) beginnen, werden ignoriert.

- Alle Zeichen in einer Zeile von `/*` bis `*/` oder bis zum Ende der Zeile werden ignoriert.

- Einige Schlüsselwörter haben keinen zugeordneten Wert.

- Leerzeichen können vor oder nach dem Schlüsselwort oder Wert hinzugefügt werden.

- Mehrere Schlüsselwörter in einer Zeile werden durch Kommas getrennt (gilt nur für das erste Syntaxformat).

- Ein Wert kann in Apostrophe (`'value'`) eingeschlossen werden.

- Ein Wert darf kein Komma enthalten.

- Schlüsselwörter und Werte können in Groß- oder Kleinbuchstaben angegeben werden.

- Die maximale Länge der Eingabezeile beträgt 78 Zeichen.

Die Profiler Utility kann mehrmals in einer Natural-Session ausgeführt werden. Zum Beispiel wird sie zuerst mit den Funktionen `INIT` und `START` und dann, nach der Ausführung eines Benutzerprogramms, mit der `PAUSE`-Funktion ausgeführt.

#### Beispiel:

Das folgende Natural-Batch-Beispiel (auf z/OS) zeigt die ursprüngliche JCL, die das `XPROF`-Programm in der Library `PRFDEMO` (Zeilen in normaler Schrift) ausführt, und die Eingabezeilen der Profiler Utility, die zum Profilieren des `XPROF`-Programms verwendet werden (Zeilen fett gedruckt).

    //CMSYNIN  DD  *
    PROFILER
    FUNCTION=INIT                /* Initialize profiling
      RESOURCE=ON                /* Write to resource
      RESOURCE-NAME='Demo01',REPLACE=YES  /* Resource name
      RESOURCE-LIB=PRFDATA       /* Resource library
    FUNCTION=START               /* Start data collection
    END-PROFILER                 /* End Profiler input
    LOGON PRFDEMO
    XPROF
    10000
    FIN

Das folgende Natural Batch-Beispiel (auf z/OS) zeigt, wie der Profiler mit dem Natural-Profilparameter `STACK` ausgeführt werden soll.

    STACK=(
     PROFILER FUNCTION:INIT:
       RESOURCE:ON:
       RESOURCE-LIB:PRFDATA:
       REPLACE:YES:
     FUNCTION:START:
     END-PROFILER;
     LOGON PRFDEMO
     )

### Profiler Utility-Schlüsselwörter

Die wichtigsten Schlüsselwörter, die in der Syntax der Profiler Utility im Batch-Modus verwendet werden, werden in der folgenden Tabelle beschrieben. Alle zusätzlichen (untergeordneten) Schlüsselwörter, die bei einem Hauptschlüsselwort verfügbar sind, werden in den Abschnitten beschrieben, auf die in der Tabelle verwiesen wird. Im Allgemeinen muss ein untergeordneter Schlüsselwortwert dem Hauptschlüsselwortwert folgen, zum Beispiel:

    FUNCTION=READ
      PRINT=ON

Ein untergeordnetes Schlüsselwort, das vor dem ersten `FUNCTION`- oder `FILTER`-Schlüsselwort angegeben wurde, wird als untergeordnetes Schlüsselwort des ersten `FUNCTION`- oder `FILTER`-Schlüsselworts behandelt.

Die folgenden Hauptschlüsselwörter stehen zur Verfügung:

Schlüsselwort | Wert | Profiler Utility-Funktion ausführen
--- | --- | ---
`FUNCTION` | `CONSOLIDATE` | Ressourcendaten konsolidieren (aggregieren). Siehe Ereignisdaten konsolidieren.
`COVERAGE` | Natural-Codeabdeckung initialisieren. Diese Funktion ist für die Sammlung von Code-Abdeckungsdaten obligatorisch. Siehe Initialisierung der Codeabdeckung (Code Coverage).
`DELETE` | Eine Natural Profiler-Ressourcendatei löschen. Siehe Profiler-Ressourcendateien verwalten.
`INIT` | Profil-Erstellung initialisieren. Diese Funktion ist für die Profil-Erstellungsdatenerfassung obligatorisch. Siehe Profilierung initialisieren.
`LIST` | Profiler-Ressourcen auflisten. Siehe Profiler-Ressourcendateien auflisten unter Maintaining Profiler Resource Files.
`PAUSE` | Datenerfassung pausieren. Siehe Datensammlung starten und anhalten.
`READ` | Ressourcendaten lesen und bewerten. Siehe Ereignisdaten auswerten.
`START` | Datensammlung starten bzw. erneut starten. Siehe Datensammlung starten und anhalten.
`TEXT` | Zu den Ereignisdaten ein Benutzerereignis hinzufügen. Siehe Benutzerdefinierter Ereignisse schreiben.
`FILTER` |  | Profiler-Filter definieren, um die Menge der Ereignisdaten zu reduzieren. Siehe Filtern zur Begrenzung der gesammelten Daten benutzen.
`COUNT` | Filter für die Ereignisanzahl setzen.
`EVENT` | Ereignis-, FNAT- und Statement-Filter setzen.
`PROGRAM` | Library-, Programm und Zeilen-Filter setzen.
`TIME` | CPU-Zeitfilter setzen.
`RPC` |  | Einen Batch-Natural RPC-Server profilieren. Siehe Profile a batch Natural RPC server. See Batch-Natural RPC-Server profilieren.
`ON-ERROR` |  | Behandlung von Profiler-Fehlersituationen festlegen. Standardwert: `TERMINATE`
`CONTINUE` | Profiling stoppen, aber Natural-Session fortsetzen.
`TERMINATE` | Mit dem Natural Profiler eine Beendigung der Natural Session erzwingen.
`TRACE` | `0 - 10` | Ebene der internen Ablaufverfolgung der Profiler-Trace-Sitzung festlegen. Das interne Trace enthält Informationen wie Profiler-Fehler und wird in die Standardausgabe der Trace-Sitzung (`CMPRINT`-Datensatz) geschrieben. Siehe Interner Trace. Standardwert: `2` (Warnung).
`HELP` |  | Hilfe benutzen. Es wird eine zusammengefasste Beschreibung der Profiler-Schlüsselwörter in die Standardausgabe geschrieben.
`INCLUDE` | `object-name` | Der Name des Natural-Textobjekts, das Profiler-Eingabedaten enthält. Siehe auch Profiler-Eingaben aus Natural-Textobjekten einfügen.
`INCLUDE-LIB` | `library-name` | Name der Natural-Library, die das mit dem `INCLUDE`-Schlüsselwort angegebene Textobjekt enthält. Wenn die Natural-Systemvariable `*LIBRARY-ID` angegeben wird, wird der Name der aktuellen Bibliothek verwendet. Der Library-Name wird für alle folgenden `INCLUDE`-Schlüsselwörter verwendet. Standardeinstellung: Wenn `INCLUDE-LIB` nicht vor einem `INCLUDE`-Schlüsselwort angegeben ist, wird standardmäßig die Natural-System-Library `SYSPRFLR` verwendet. Siehe auch Profiler-Eingaben aus Natural-Textobjekten einfügen.
`END-PROFILER` oder `END` oder `.` |  | Profiler-Eingabe beenden. Das Schlüsselwort `END-PROFILER`, `END` oder ein Punkt (`.`) gibt das Ende der Profiler-Eingabe an.
`ONLINE` |  | Die Online Profiler Utility in einem Batch-Lauf ausführen. Diese Option dient der Kompatibilität mit früheren Natural-Versionen, als die Profiler Utility im Batch-Modus das Profiler-Online-Menü startete. Wenn diese Funktionalität weiterhin erforderlich ist, verwenden Sie `ONLINE` als erstes Schlüsselwort. Alle nachfolgenden Eingaben werden über die Profiler-Online-Menüs getätigt.

## Gesammelte Ereignisse und Daten

Dieser Abschnitt beschreibt die Ereignisse und Daten, die von der Profiler Utility im Batch-Modus verarbeitet werden.

- Ereignisse

- Gesammelte Daten

### Ereignisse

Während einer Natural-Session können verschiedene Arten von Ereignissen auftreten (z. B. ein Programmstart), bei denen der Profiler ereignisspezifische Daten in einem Trace-Datensatz sammelt. Jedes Ereignis ist mit einem Ereignistyp verknüpft, d. h. einem Code mit einem oder zwei Buchstaben. Verwandte Ereignistypen werden zu einer Ereignisgruppe zusammengefasst, die durch einen Ein-Buchstaben-Code gekennzeichnet ist.

Folgende Ereignisse, Ereignistypen und Ereignisgruppen stehen zur Verfügung:

Ereignis | Ereignistyp | Ereignisgruppe | Zeitpunkt des Auftretens
--- | --- | --- | ---
Session Initialization | `SI` | `S` | Wenn eine Natural-Batch-Session initialisiert wird. Da die Profiler-Monitor-Session nach der Trace-Session gestartet wird, kann dieses Ereignis nicht überwacht werden.
Session Termination | `ST` | `S` | Wenn eine Natural-Batch-Session beendet wird. Der Profiler überwacht dieses Ereignis immer.
Program Load | `PL` | `P` | Wenn ein Programm (Natural-Objekt) geladen wird oder wenn es sich bereits im Buffer Pool befindet.
Program Start | `PS` | `P` | Wenn ein Programm (Natural-Objekt) gestartet wird.
Program Termination | `PT` | `P` | Wenn ein Programm (Natural-Objekt) beendet wird.
Program Resume | `PR` | `P` | Wenn ein Programm (Natural-Objekt) die Kontrolle wieder übernimmt, nachdem ein anderes Natural-Objekt ausgeführt wurde, oder wenn die Kontrolle zur Ebene 0 zurückkehrt (kein Programm aktiv).
Program Information | `PI` | `P` | Wenn auf ein Programm (Natural-Objekt) zum ersten Mal zugegriffen wird. Dieses Ereignis wird nur bei der Natural-Codeabdeckung ausgelöst.
Before Database Call | `DB` | `D` | Bevor ein Datenbankaufruf ausgeführt wird.
After Database Call | `DA` | `D` | Nachdem ein Datenbankaufruf ausgeführt worden ist.
Before Terminal I/O | `IB` | `I` | Bevor eine Terminal-Ein-/Ausgabe ausgeführt wird.
After Terminal I/O | `IA` | `I` | Nachdem eine Terminal-Ein-/Ausgabe ausgeführt worden ist.
Before External Program Call | `CB` | `C` | Bevor ein externer Programmaufruf (`CALL`-Statement) ausgeführt wird.
After External Program Call | `CA` | `C` | Nachdem ein externer Programmaufruf (`CALL`-Statement) ausgeführt worden ist.
Runtime Error | `E` | `E` | Wenn ein Natural-Laufzeitfehler aufgetreten ist.
Natural Statement | `NS` | `N` | Wenn ein Natural-Statement ausgeführt wird. Aus technischen Gründen gibt es keine Eins-zu-Eins-Beziehung zwischen einem Natural-Quellcode-Statement und dem entsprechenden Objektcode im katalogisierten Objekt. Daher können mehrere Natural-Statements zu einem `NS`-Ereignis zusammengeführt werden, und umgekehrt kann ein Natural-Statement mehrere `NS`-Ereignisse abdecken.
Inbound RPC Message | `RI` | `R` | Wenn das Natural RPC Server Layer die Client-Anforderung empfängt.
Start of RPC Request Execution | `RS` | `R` | Wenn das Natural RPC Server Layer das Natural-Server-Programm aufruft.
Outbound RPC Message | `RO` | `R` | Wenn der Natural RPC Server das Ergebnis an den Client zurückgibt.
RPC Wait for Client | `RW` | `R` | Wenn der Natural RPC Server auf die nächste Nachricht vom Client wartet.
User-Defined Event | `U` | `U` | Wenn ein benutzerdefiniertes Ereignis generiert wurde. Siehe Benutzerdefinierter Ereignisse schreiben.
Monitor Pause | `MP` | `M` | Wenn die Datensammlung angehalten wird. Ein Pausenereignis kann durch eine explizite Pausenanforderung, zu Beginn eines Blockfilters oder wenn der Datenpool voll ist, verursacht werden. Die Dauer einer Pause wird bei der Analyse der Anwendungs-Performance nicht berücksichtigt.

Mit jedem gesammelten Ereignis werden ein CPU- und ein Ereigniszeitstempel aufgezeichnet. Im Allgemeinen wird zu Beginn eines Ereignisses ein Zeitstempel genommen. Die Dauer eines Ereignisses entspricht daher der Zeit, die zwischen dem Zeitstempel des Ereignisses und dem Zeitstempel des folgenden Ereignisses vergeht.

### Gesammelte Daten

Dieser Abschnitt beschreibt die von der Profiler Utility gesammelten Daten:

> Allgemeine Daten

>   Die folgenden Datenelemente werden bei jedem Ereignis gesammelt:

>   - Ereigniszähler

>   - Ereignistyp

>   - Ereigniszeit in Mikrosekunden

>   - Session-CPU-Zeit in Mikrosekunden

>   - Trace-Session-Kennung

>   - Natural Security-Benutzergruppenkennung

>   - Natural-Benutzerkennung

>   - Natural-Anwendungsname

>   - Programm-Library

>   - Programmname

>   - Programmebene

>   - Copycode-Library

>   - Copycode-Name

>   - Statement-Zeilennummer

>   - Statement-Op-Code

>   - Coverage Flag (für Natural-Codeabdeckung)

>   Anmerkungen:

>   1. Die für die Datensammlung aufgewendete Zeit (Monitor-CPU-Zeit) wird separat gemessen und aus der CPU-Zeit der Session herausgenommen.
>   2. Die Ereignisse werden gezählt, bevor eine Filterung oder Probenahme (Sampling) durchgeführt wird. Daher erhalten die Ereignisse im Allgemeinen die gleichen Zählergebnisse, unabhängig davon, welche Filterung oder Probenahme verwendet wird.
>   3. Statement-Ereignisse werden nur gezählt, wenn das Ereignisfilter-Schlüsselwort `STATEMENT=COUNT` verwendet wird.
>   4. Monitor Pause-Ereignisse werden nicht gezählt.
>   5. Natural-Codeabdeckung sammelt nur `NS`- und `PI`-Ereignisse
>   6. Natural-Codeabdeckung sammelt keine Zeitwerte.
>   7. Für jedes Objekt, auf das zugegriffen wird, und für alle (rekursiv) im Objekt enthaltenen Copycodes wird ein `PI`-Ereignis gesammelt.
> Ereignisspezifische Daten:

>   Die folgenden Daten werden nur bei folgenden Ereignissen erhoben:

>   Ereignis | Datenelemente
>   --- | ---
>   Session Initialization (Session-Initialisierung) | Keines
>   Session Termination (Session-Beendigung) | Beendigung-Rückgabecode Natural-Beendigung-Meldungscode NAT99nn Name des Back-End-Programms Monitor-CPU-Zeit im Mikrosekunden
>   Program Load (Laden eines Programms) | Name des zu ladenden Programms Name der Load Library Aufruftyp
>   Program Resume (Programm-Wiederaufnahme) | Keines
>   Program Start/Termination (Programm-Start/Beendigung) | Programmtyp Datenbankkennung der Programm-Library Dateinummer der Programm-Library
>   Program Information (Programminformationen) | Programmtyp Anzahl der Statements in dem Programm oder im Copycode Erstes Statement Item `INCLUDE`-Zeilennummer Parent-Copycode-Kennung
>   Database Call (Datenbankaufruf) | Datenbanktyp Kommandocode Kommandokennung Datenbankkennung DBID Dateinummer Antwortcode (Ereignistyp `DA`) Fehler-Subcode (Ereignistyp `DA`) Adabas-Kommandozeit (Ereignistyp `DA`)
>   Terminal I/O (Terminal-Ein-/Ausgabe) | Anzahl gesendeter Bytes Anzahl gelesener Bytes Zugeordneter Gesamtspeicher Länge des komprimierten Session-Speichers
>   External Program Call (externer Programmaufruf) | Name des aufgerufenen Programms Aufrufmodus, z.B. dynamischer oder statischer Modus Programm-Link-Ort Parametertyp, z.B. Referenz oder Wert Rückmeldecode (Ereignistyp `CA`)
>   Runtime Error (Laufzeitfehler) | Natural-Systemfehlermeldungscode Externer Abend Code Name des Fehlerbehandlungsprogramms
>   Natural Statement | Profiling: Keines Natural-Codeabdeckung: Statement Item Identifier (GP Offset)
>   Start of RPC Request Execution (Beginn der RPC-Anforderungsausführung) | Umgebung (`C` = Client, `S` = Server) Name des Subprogramms Adabas-Benutzerkennung (ETID) Status der Konversation Anmelde-Indikator (`Y` = Anmeldung durchgeführt) Impersonierung-Indikator der RPC-Anforderung (`Y` = Impersonierung durchgeführt)
>   Outbound/Inbound RPC Message / RPC Wait for Client (Ausgehende/eingehende RPC-Nachricht / RPC Warten auf Client) | Umgebung (`C` = Client, `S` = Server) Transportprotokoll RPC-Funktion Typ der Client-Benutzerkennung Länge der Nachricht RPC-Rückgabecode Externe Konversationskennung Client-Benutzerkennung Serverknoten (Ereignistypen `RO` und `RW`) Servername (Ereignistypen `RO` und `RW`)
>   User-Defined Event Benutzerdefiniertes Ereignis | Subtyp des benutzerdefinierten Ereignisses Bis zu 249 Bytes benutzerdefinierte Informationen
>   Monitor Pause | Art der Monitorpause Mögliche Werte:
>   `R` | Monitorpause angefordert. Dieser Wert wird auch gesetzt, wenn die Sitzung mit der Pause-Option initialisiert wird.
>   `F` | Beginn eines Blocks von herausgefilterten Ereignissen. Blockfilter sind: Library, Programm, Zeile, FNAT, Ereignisanzahl oder Zeitfilter.
>   `W` | Die Trace-Session wartet, weil der Daten-Pool voll ist.

## Profilierung initialisieren

Die `INIT`-Funktion der Profiler Utility initialisiert die Profil-Erstellung. Die `INIT`-Funktion muss vor einer der Profiler Utility-Funktionen `START`, `PAUSE` oder `TEXT` oder einem Profiler-Filter ausgeführt werden.

Syntax der `INIT`-Funktion:

`FUNCTION=INIT`
[`RESOURCE`={`ON`|`OFF`}]
[`RESOURCE-NAME`=resource-name]
[`RESOURCE-LIB`=library-name]
[`REPLACE`={`YES`|`NO`}]
[`SAMPLING`={`ON`|`OFF`}]
[`INTERVAL`={`100`|interval-time}]
[`CONSOLIDATE`={`ON`|`OFF`}]
[`TRANSACTION`={`ON`|`OFF`}]
[`WAIT-FULL`={`60`|wait-full-time}]
[`WAIT-EMPTY`={`60`|wait-empty-time}]
[`CMPRMIN`=data-set-name]
[`CMSYNIN`=data-set-name]
[`TRACE-EVENT`={`ON`|`OFF`}]
[`TRACE-MONITOR`={`3`|trace-level}]
[`TRACE-CONSOLIDATE`={`ON`|`OFF`}]

Syntax-Beschreibung:

Schlüsselwort für INIT | Wert | Beschreibung
--- | --- | ---
`RESOURCE` |  | Gibt an, ob die Ereignisdaten in eine Natural Profiler-Ressourcendatei (`NPRF` oder `NPRC`) geschrieben werden sollen.
`ON` | Die Ereignisdaten werden in eine Natural Profiler-Ressourcendatei geschrieben und können mit NaturalONE oder mit den Datenverarbeitungsfunktionen der Natural Profiler Utility analysiert werden.
`OFF` | Die Ereignisdaten werden nicht in eine Natural Profiler-Ressourcendatei geschrieben. Diese Option kann verwendet werden, wenn nur der Profiler-Ereignis-Trace oder die Statistiken erforderlich sind.
`RESOURCE-NAME` | `resource-name` | Der Name der Profiler-Ressourcendatei, in der die Ereignisdaten für eine spätere Analyse gespeichert werden. Wenn die Erweiterung `.nprf` (Natural Profiler-Ressourcendatei) oder `.nprc` (Natural Profiler-Ressource, konsolidiert) nicht angegeben wurde, wird sie automatisch hinzugefügt. Welche Erweiterung verwendet wird, hängt vom Schlüsselwort `CONSOLIDATE` ab. Standardeinstellung: `*INIT-USER_yyyymmdd_hhiiss` Dabei ist `*INIT-USER` der Inhalt der entsprechenden Natural-Systemvariablen (Name des Jobs oder Benutzerkennung, unter der die Natural-Session läuft); und yyyymmdd_hhiiss ist das Datum und die Uhrzeit der Ressourcengenerierung.
`RESOURCE-LIB` | `library-name` | Der Name der Natural-Library, der die Ressource zugeordnet ist. Standardwert: Der Name der aktuellen Library.
`REPLACE` |  | Gibt an, ob die Ressource ersetzt wird, wenn sie bereits vorhanden ist.
`YES` | Ressource ersetzen, falls vorhanden.
`NO` | Ressource nicht ersetzen. Wenn die Ressource bereits vorhanden ist, wird eine Nachricht geschrieben und es wird keine Profil-Erstellung durchgeführt.
`SAMPLING` |  | Gibt an, ob die CPU-Zeit-Probenahme (Sampling) des Profilers aktiviert ist. Die Probenahme kann die Anzahl der überwachten Ereignisse drastisch reduzieren, wobei fast die gleichen CPU-Zeitergebnisse erzielt werden. Siehe Stichprobentechnik (Natural Profiler Sampling).
`ON` | Sampling aktivieren.
`OFF` | Sampling deaktivieren.
`INTERVAL` | `interval-time` | Das Stichprobenintervall bestimmt, bei welchen CPU-Zeitstempel Ereignisse gesammelt werden. Wenn das Stichprobenintervall größer ist, werden weniger Ereignisse gesammelt. Wenn das Abtastintervall kleiner ist, sind die resultierenden CPU-Zeiten genauer. Gültige Werte für `interval-time`: `1` bis `2147483647` Einheit: Mikrosekunden
`CONSOLIDATE` |  | Gibt an, ob die Ereignisdaten konsolidiert (aggregiert) werden, bevor sie in die Ressourcendatei geschrieben werden. Siehe Datenkonsolidierung, Codeabdeckung und Datenverarbeitung im Abschnitt Grundlegendes Konzept der Profiler Utility.
`ON` | Die Ereignisdaten werden konsolidiert und in eine NPRC-Ressourcendatei (Natural Profiler Resource Consolidated) geschrieben.
`OFF` | Die Ereignisdaten werden nicht konsolidiert in eine NPRF-Ressourcendatei (Natural Profiler Resource File) geschrieben.
`TRANSACTION` |  | Diese Option gilt nur, wenn `CONSOLIDATE` (siehe oben) auf `ON` gesetzt ist. Gibt an, ob Transaktionsbezeichner (Identifier) zu den konsolidierten Ereignisdaten hinzugefügt werden.
`ON` | Transaktionsbezeichner werden den konsolidierten Ereignisdaten hinzugefügt. Transaktionsbezeichner sind eine Voraussetzung für die Bewertung der Transaktionsantwortzeit. Siehe Transaktionszusammenfassung. Anmerkung Die generierte NPRC-Ressourcendatei benötigt mehr Speicherplatz, wenn `ON` gesetzt ist.
`OFF` | Es werden keine Transaktionsbezeichner zu den konsolidierten Ereignisdaten hinzugefügt.
`WAIT-FULL` | `wait-full-time` | Gibt an, wie lange die Trace-Session wartet, wenn der Profiler-Daten-Pool voll ist. Wenn das Limit erreicht ist und immer noch kein freigegebener Platz verfügbar ist, wird Natural beendet (`ABEND S0C1`). Der Wert verhindert, dass die Trace-Session endlos auf eine unerwartet ausgefallene Monitor-Session wartet. Gültige Werte für `wait-full-time`: `1` bis `32767` Einheit: Sekunden
`WAIT-EMPTY` | `wait-empty-time` | Gibt an, wie lange die Profiler-Monitor-Session wartet, wenn der Profiler-Daten-Pool leer ist und die Trace-Session noch aktiv ist. Wenn das Limit erreicht ist, wird eine Nachricht geschrieben und das Profiling gestoppt. Ein Wert von Null (`0`) bedeutet, dass der Profiler ohne Limit wartet. Ein positiver Wert verhindert, dass die Monitor-Session endlos auf eine möglicherweise fehlerhafte Trace-Session wartet. Gültige Werte für `wait-empty-time`: `0` bis `2147483647` Beim Profiling eines Batch-Natural RPC-Servers oder beim Profiling einer Großrechner-Session von Natural Studio wird der Wert immer auf `0` gesetzt. Siehe Batch-Natural RPC-Server profilieren und Profil-Erstellung einer Großrechner-Session aus Natural Studio. Einheit: Sekunden
`CMPRMIN` | `data-set-name` | Gibt den Namen des Eingabe-Dataset für dynamische Parameter für die Profiler-Monitor-Session an. Siehe Monitor-Session CMPRMIN. Standardwert: `CMPRMIN` (die Monitor-Session verwendet die Parameter der Trace-Session)
`CMSYNIN` | `data-set-name` | Gibt den Namen des primären Kommandoeingabe-Dataset für die Profiler-Monitor-Session an. Siehe Monitor-Session CMSYNIN. Standardwert: `DUMMY` (die Monitor-Session verwendet keinen primären Kommandoeingabe-Dataset).
`TRACE-EVENT` |  | Gibt an, ob das Profiler-Trace in die Standardausgabe der Profiler-Monitor-Session (`MONPRINT`-Dataset) geschrieben wird. Siehe Ereignis-Trace.
`ON` | Das Profiler-Ereignis-Trace schreiben.
`OFF` | Das Profiler-Ereignis-Trace nicht schreiben.
`TRACE-MONITOR` | `trace-level` | Legt die Ebene des internen Tracing der Profiler-Monitor-Session fest. Das interne Trace enthält Informationen wie Profiler-Fehler und wird in die Standardausgabe der Monitor-Session (`MONPRINT`-Dataset) geschrieben. Siehe Interner Trace. Gültige Trace-Ebenen: `0` bis `10`
`TRACE-CONSOLIDATE` |  | Gibt an, ob das Profiler-Konsolidierungs-Trace in die Standardausgabe geschrieben wird. Die Konsolidierungsverfolgung kann nur geschrieben werden, wenn `CONSOLIDATE=ON` angegeben ist. Siehe Konsolidierungs-Trace.
`ON` | Das Profiler-Konsolidierungs-Trace schreiben.
`OFF` | Das Profiler-Konsolidierungs-Trace nicht schreiben.

#### Beispiel für INIT

    FUNCTION=INIT           /* Initialize Profiling
      RESOURCE=ON           /* Write to resource file
      RESOURCE-NAME='Test'  /* Resource name
      RESOURCE-LIB=PRFDATA  /* Resource library
      REPLACE=YES           /* Replace resource
      SAMPLING=ON           /* Use sampling
      INTERVAL=100          /* Sampling interval
      CONSOLIDATE=OFF       /* Do not consolidate the data
      TRANSACTION=OFF       /* Do not add transaction identifiers
      WAIT-FULL=60          /* Wait sec if pool full
      WAIT-EMPTY=60         /* Wait sec if pool empty
      CMPRMIN=PRFPARMS      /* CMPRMIN for monitor session
      TRACE-EVENT=ON        /* Trace events
      TRACE-MON=3           /* Trace level monitor session

## Initialisierung der Codeabdeckung (Code Coverage)

Die Funktion `COVERAGE` der Profiler Utility initialisiert die Messung der Natural-Codeabdeckung. Die `COVERAGE`-Funktion muss vor einer der Profiler Utility-Funktionen `START`, `PAUSE` oder `TEXT` oder einem Profiler-Filter ausgeführt werden.

Syntax von `COVERAGE`:

`FUNCTION=COVERAGE`
[`RESOURCE`={`ON`|`OFF`}]
[`RESOURCE-NAME`=resource-name]
[`RESOURCE-LIB`=library-name]
[`REPLACE`={`YES`|`NO`}]
[`WAIT-FULL`={`60`|wait-full-time}]
[`WAIT-EMPTY`={`60`|wait-empty-time}]
[`CMPRMIN`=data-set-name]
[`CMSYNIN`=data-set-name]
[`TRACE-EVENT`={`ON`|`OFF`}]
[`TRACE-MONITOR`={`3`|trace-level}]
[`TRACE-COVERAGE`={`ON`|`OFF`}]

Syntax-Beschreibung:

Schlüsselwort für COVERAGE | Wert | Beschreibung
--- | --- | ---
`RESOURCE` |  | Gibt an, ob Codeabdeckungsdaten in ein Natural Code Coverage Resource File (NCVF) geschrieben werden sollen.
`ON` | Codeabdeckungsdaten werden in eine Natural-Code-Coverage-Ressourcendatei geschrieben und können mit NaturalONE oder mit den Datenverarbeitungsfunktionen der Natural Profiler Utility analysiert werden.
`OFF` | Es werden keine Codeabdeckungsdaten werden in eine Natural-Code-Coverage-Ressourcendatei geschrieben. Diese Option kann verwendet werden, wenn nur das Profiler-Ereignis-Trace oder die Statistiken erforderlich sind.
`RESOURCE-NAME` | `resource-name` | Der Name der Natural-Code-Coverage-Ressourcendatei, in der Codeabdeckungsdaten für eine spätere Analyse gespeichert werden. Wenn die Erweiterung `.ncvf` (Natural code coverage resource file) nicht angegeben wurde, wird sie automatisch hinzugefügt. Standardeinstellung: `*INIT-USER_yyyymmdd_hhiiss` Dabei ist `*INIT-USER` der Inhalt der entsprechenden Natural-Systemvariablen ist (Name des Jobs oder Benutzerkennung, unter der die Natural-Session läuft); und yyyymmdd_hhiiss ist das Datum und die Uhrzeit der Ressourcengenerierung.
`RESOURCE-LIB` | `library-name` | Der Name der Natural-Library, der die Ressource zugeordnet ist. Standardwert: Der Name der aktuellen Library.
`REPLACE` |  | Gibt an, ob die Ressource ersetzt wird, wenn sie bereits vorhanden ist.
`YES` | Ressource ersetzen, falls vorhanden.
`NO` | Ressource nicht ersetzen. Wenn die Ressource bereits vorhanden ist, wird eine Nachricht geschrieben und es wird kein Code Coverage durchgeführt.
`WAIT-FULL` | `wait-full-time` | Gibt an, wie lange die Trace-Session wartet, wenn der Profiler-Daten-Pool voll ist. Wenn das Limit erreicht ist und immer noch kein freigegebener Platz verfügbar ist, wird Natural beendet (`ABEND S0C1`). Der Wert verhindert, dass die Trace-Session endlos auf eine unerwartet ausgefallene Monitor-Session wartet. Gültige Werte für `wait-full-time`: `1` bis `32767` Einheit: Sekunden
`WAIT-EMPTY` | `wait-empty-time` | Gibt an, wie lange die Profiler-Monitor-Session wartet, wenn der Profiler-Daten-Pool leer ist und die Trace-Session noch aktiv ist. Wenn das Limit erreicht ist, wird eine Nachricht geschrieben und das Profiling gestoppt. Ein Wert von Null (`0`) bedeutet, dass der Profiler ohne Limit wartet. Ein positiver Wert verhindert, dass die Monitor-Session endlos auf eine möglicherweise fehlerhafte Trace-Session wartet. Gültige Werte für `wait-empty-time`: `0` bis `2147483647` Bei der Messung der Codeabdeckung eines Batch-Natural RPC-Servers oder einer Großrechner-Session aus Natural Studio wird der Wert immer auf `0` gesetzt. Siehe Batch-Natural RPC-Server profilieren and Profil-Erstellung einer Großrechner-Session aus Natural Studio. Einheit: Sekunden
`CMPRMIN` | `data-set-name` | Gibt den Namen des Parameter-Eingabe-Dataset für die Profiler-Monitor-Session an. Siehe Monitor-Session CMPRMIN. Standardwert: `CMPRMIN` (die Monitor-Session verwendet die Parameter der Trace-Session).
`CMSYNIN` | `data-set-name` | Gibt den Namen des primären Kommando-Eingabe-Dataset für die Profiler-Monitor-Session an. Siehe Monitor-Session CMSYNIN. Standardwert: `DUMMY` (die Monitor-Session verwendet keinen primären Kommando-Eingabe-Dataset)
`TRACE-EVENT` |  | Gibt an, ob das Profiler-Ereignis-Trace in die Standardausgabe der Profiler-Monitor-Session (`MONPRINT`-Dataset) geschrieben wird. Siehe Ablaufverfolgung (Tracing) beim Messen der Natural-Codeabdeckung.
`ON` | Das Profiler-Ereignis-Trace schreiben.
`OFF` | Das Profiler-Ereignis-Trace nicht schreiben.
`TRACE-MONITOR` | `trace-level` | Legt die Ebene des internen Tracing der Profiler-Monitor-Session fest. Das interne Trace enthält Informationen wie Profiler-Fehler und wird in die Standardausgabe der Monitor-Session (`MONPRINT`-Dataset) geschrieben. Siehe Interner Trace. Gültige Trace-Ebenen: `0` bis `10`
`TRACE-COVERAGE` |  | Gibt an, ob das Profiler-Codeabdeckungs-Trace in die Standardausgabe geschrieben wird. Siehe Ablaufverfolgung (Tracing) beim Messen der Natural-Codeabdeckung.
`ON` | Das Profiler-Konsolidierungs-Trace schreiben.
`OFF` | Das Profiler-Konsolidierungs-Trace nicht schreiben.

#### Beispiel für COVERAGE

    FUNCTION=COVERAGE       /* Initialize code coverage
      RESOURCE=ON           /* Write to resource file
      RESOURCE-NAME='Test'  /* Resource name
      RESOURCE-LIB=COVDATA  /* Resource library
      REPLACE=YES           /* Replace resource
      WAIT-FULL=60          /* Wait sec if pool full
      WAIT-EMPTY=60         /* Wait sec if pool empty
      CMPRMIN=PRFPARMS      /* CMPRMIN for monitor session
      TRACE-EVENT=ON        /* Trace events
      TRACE-MON=3           /* Trace level of monitor session
      TRACE-COVERAGE=ON     /* Trace coverage data

## Datensammlung starten und anhalten

Der Profiler muss initialisiert werden, bevor die Datensammlung gestartet oder angehalten werden kann. Da die Datensammlung nach der Initialisierung angehalten wird, muss sie in irgendeiner Weise gestartet werden, damit Ereignisdaten aufgezeichnet werden.

Sie können die Datensammlung mittels einer der folgenden Methoden starten und anhalten:

- Profiler Utility-Funktionen benutzen

- Profiler Utility-Programme benutzen

- Anwendungsprogrammierschnittstelle USR8210N benutzen

### Profiler Utility-Funktionen benutzen

Die Profiler Utility-Funktionen `START` und `PAUSE` werden verwendet, um die Datensammlung zu starten und anzuhalten. Es gilt die folgende Syntax:

`FUNCTION`=`START` [`COUNT`={`0`|count-number}] `FUNCTION`=`PAUSE`

Syntax-Beschreibung:

Schlüsselwort für START | Wert | Beschreibung
--- | --- | ---
`COUNT` | `count-number` | Setzt den Ereigniszähler des nächsten überwachten Ereignisses auf den angegebenen Wert. Gültige Werte für `count-number`: `0` bis `2147483647` Der Ereigniszähler bleibt unverändert, wenn ein Wert von Null (`0`) angegeben wird.

### Profiler Utility-Programme benutzen

Die folgenden Natural-Programme stehen in der System-Library `SYSPRFLR` bereit, um Profiler Utility-Funktionen auszuführen:

Programm | Beschreibung
--- | ---
PRFSTART | Die Datensammlung starten.
PRFPAUSE | Die Datensammlung anhalten.
PRFSTATE | Den Status der Datensammlung abfragen.
PRFFCT | Eine Profiler Utility-Funktionen ausführen: `START`, `PAUSE` oder `STATE`.

Um Profiler Utility-Programme zu benutzen:

- Melden Sie sich bei der Library `SYSPRFLR` an oder kopieren Sie die Programme in die Library `SYSTEM`, in die entsprechende Steplib-Library oder in die erforderliche Library.

  Wenn `PRFFCT` verwendet wird, muss auch die Anwendungsprogrammierschnittstelle `USR8210N` kopiert werden (siehe folgenden Abschnitt).

  Falls `PRFFCT` in einer Client/Server-Umgebung verwendet wird, kopieren Sie `PRFFCT` in die Client-Library und `USR8210N` in die Server-Library.

  Anmerkung
  `PRFFCT` erwartet als Eingabewert `START`, `PAUSE` oder `STATE`, um die entsprechende Funktion auszuführen.

Um die Datensammlung zu starten:

- Führen Sie das folgende Programm aus:

      PRFSTART

  Oder:

      PRFFCT
      START

Um die Datensammlung anzuhalten:

- Führen Sie das folgende Programm aus:

      PRFPAUSE

  Oder:

      PRFFCT
      PAUSE

Um den aktuellen Status der Datensammlung abzufragen:

- Führen Sie das folgende Programm aus:

      PRFSTATE

  Oder:

      PRFFCT
      STATE

### Anwendungsprogrammierschnittstelle USR8210N benutzen

Die Datensammlung kann von der profilierten Natural-Anwendung aus gestartet und angehalten werden, indem die Anwendungsprogrammierschnittstelle (API) `USR8210N` aufgerufen wird. Die API kann auch verwendet werden, um den aktuellen Status des Überwachungsprozesses zu ermitteln. Die API wird in der Library `SYSEXT` ausgeliefert. Weitere Informationen siehe SYSEXT Utility.

Um die API zu benutzen:

- Kopieren Sie das Subprogramm `USR8210N` in die Library `SYSTEM`, in die entsprechende Steplib-Library oder in die gewünschte Library.

  Anmerkung
  Die API `USR8210N` erwartet als erster Parameter den Wert `START`, `PAUSE` oder `STATE`, um die entsprechende Funktion auszuführen. Die Parameterwerte können in Groß- oder Kleinbuchstaben angegeben werden. Bei der Rückkehr enthält `P-RETURN` den Rückgabecode und `P-MESSAGE` die Erfolgs- oder Fehlermeldung.

Um die Datensammlung zu starten:

- Benutzen Sie die API mit dem `CALLNAT`-Statement:

      CALLNAT 'USR8210N' 'START' P-RETURN P-MESSAGE /* Start Profiler

Um die Datensammlung anzuhalten:

- Benutzen Sie die API mit dem `CALLNAT`-Statement:

      CALLNAT 'USR8210N' 'PAUSE' P-RETURN P-MESSAGE /* Pause Profiler

Um den aktuellen Status der Datensammlung abzufragen:

- Benutzen Sie die API mit dem `CALLNAT`-Statement:

      CALLNAT 'USR8210N' 'STATE' P-RETURN P-MESSAGE /* Get Profiler state

  Der Status ist im Feld `P-RETURN` codiert:

  P-RETURN | Beschreibung
  --- | ---
  `0` | Die Datensammlung mit dem Natural Profiler ist gestartet.
  `1` | Die Datensammlung mit dem Natural Profiler ist angehalten.

## Filter zur Begrenzung der gesammelten Daten benutzen

Filter spielen eine wichtige Rolle bei der Reduzierung der Menge der gesammelten Daten. Folgende Filter stehen zur Verfügung:

- Ereignisfilter (Event Filter)

- Programmfilter

- Zählfilter

- Zeitfilter

Anmerkung
Der Profiler muss initialisiert werden, bevor Einstellungen auf einen bestimmten Filter angewendet werden können.

### Ereignisfilter (Event Filter)

Der Profiler-Ereignisfilter gibt an, welche Ereignisse gesammelt werden. Darüber hinaus bestimmt es, ob Ereignisdaten aufgezeichnet werden, während Natural-Systemprogramme ausgeführt werden.

Syntax des Ereignisfilters:

`FILTER`=`EVENT`
[`EVENT`={[event-type]...|`ALL`}
[`STATEMENT`={`ON`|`OFF`|`COUNT`}]
[`FNAT`={`ON`|`OFF`}

Syntax-Beschreibung:

Schlüsselwort für EVENT | Wert | Beschreibung
--- | --- | ---
`EVENT` |  | Gibt an, welche Ereignisse gesammelt werden.
`event-type` | Jedes Ereignis wird mit einem ein- oder zweistelligen Schlüssel codiert. Mehrere Ereignisse werden durch Leerzeichen getrennt. Es werden nur die angegebenen Ereignisse aufgezeichnet. Wenn kein Ereignis angegeben wird, überwacht der Profiler nur die Session- und Pausenereignisse. Mögliche Ereigniseinträge sind: `DB`, `DA`, `PL`, `PS`, `PT`, `PR`, `IB`, `IA`, `E`, `CB`, `CA`, `U`, `RS`, `RI`, `RO` und `RW`. Notes: Informationen zu den Ereigniscodes finden Sie unter Gesammelte Ereignisse und Daten. Die folgenden Ereignisse können nicht in der Ereignisliste angegeben werden: `SI`-Ereignisse (Session-Initialisierung) können vom Profiler nicht im Batch-Modus gesammelt werden. `ST`-Ereignisse (Session Termination) und `MP`-Ereignisse (Monitor Pause) werden immer gesammelt. The collection of `NS` (Natural Statement) events depends on the `STATEMENT` keyword. Die Sammlung von `NS`-Ereignissen (Natural Statement) hängt vom Schlüsselwort `STATEMENT` ab. Wenn nur ein Zeichen angegeben wird, werden alle Ereignisse, die mit diesem Zeichen beginnen, aufgezeichnet. Zum Beispiel ist `EVENT=P` äquivalent zu `EVENT=PL PR PS PT`.
`ALL` | Alle Ereignisse werden aufgezeichnet; das heißt, die Definition ist äquivalent zu
    EVENT=DB DA PL PS PT PR IB IA E CB CA U RS RI RO
Vorsicht `EVENT=ALL` enthält das `NS`-Ereignis nicht. Die Sammlung von `NS`-Ereignissen (Natural Statement) hängt vom Schlüsselwort `STATEMENT` ab.
`STATEMENT` |  | Gibt an, ob Natural-Statement-Ereignisse (`NS`) gesammelt werden.
`ON` | Natural-Statement-Ereignisse (`NS`) werden gesammelt, aber nicht gezählt. Es werden nur Nicht-Statement-Ereignisse gezählt. Natural-Statement-Ereignisse erhalten die gleiche Anzahl wie das vorherige Ereignis.
`OFF` | Natural-Statement-Ereignisse (`NS`) werden nicht gesammelt.
`COUNT` | Natural-Statement-Ereignisse (`NS`) werden gesammelt und gezählt, was bedeutet, dass das Ereigniszählerfeld im Ereignisdatensatz mit jedem Statement-Ereignis erhöht wird. Diese Option kann zu einer schlechteren Performance führen. Siehe Profiler-Performance im Batch-Modus.
`FNAT` |  | Gibt an, ob Ereignisdaten aufgezeichnet werden, während Natural-Systemprogramme ausgeführt werden.
`ON` | Ereignisdaten werden aufgezeichnet, während Natural-Systemprogramme ausgeführt werden.
`OFF` | Ereignisdaten werden nicht aufgezeichnet, während Natural-Systemprogramme ausgeführt werden.

> Standardfilterwert für die Profil-Erstellung

>   Standardmäßig (wenn der Ereignisfilter nicht angegeben ist) werden alle Ereignisse außer Natural-Statement-Ereignissen gesammelt und Ereignisdaten von Natural-Systemprogrammen werden nicht aufgezeichnet:

>       FILTER=EVENT            /* Set event filter
>         EVENT=ALL             /* All events
>         STATEMENT=OFF         /* Do not collect statements
>         FNAT=OFF              /* No FNAT

> Standardfilterwert für Codeabdeckung

>   Standardmäßig (wenn der Ereignisfilter nicht angegeben ist) werden nur Programmstart- und Natural-Statement-Ereignisse gesammelt. Ereignisdaten von Natural-Systemprogrammen werden nicht aufgezeichnet:

>       FILTER=EVENT            /* Set event filter
>         EVENT=PS              /* Program start only
>         STATEMENT=ON          /* Collect statements
>         FNAT=OFF              /* No FNAT

>   Die Codeabdeckung funktioniert nicht korrekt, wenn Programmstart- oder Natural-Statement-Ereignisse nicht gesammelt werden. Wenn andere Ereignisse überwacht werden, werden sie im Trace angezeigt, aber von der Codeabdeckung ignoriert.

> Beispiel für einen Ereignisfilter

>       FILTER=EVENT            /* Set event filter
>         EVENT=D PS PR         /* Database and program start/resume events
>         STATEMENT=ON          /* Collect statements (no count)
>         FNAT=OFF              /* No FNAT

### Programmfilter

Der Profiler-Programmfilter gibt die Libraries, Programme (Natural-Objekte) und Programmzeilen an, für die Ereignisdaten gesammelt werden. Standardmäßig (wenn der Programmfilter nicht angegeben ist) werden die Daten aller Libraries, Programme und Zeilen gesammelt.

Syntax des Programfilters:

`FILTER`=`PROGRAM`
[`LIBRARY`=library-name]
[`PROGRAM`=program-name]
[`LINE-FROM`={`0`|start-number}
[`LINE-TO`={`0`|end-number}

Syntax-Beschreibung:

Schlüsselwort für PROGRAM | Wert | Beschreibung
--- | --- | ---
`LIBRARY` | `library-name` | Nur die angegebene Library wird überwacht. Wenn die Spezifikation mit einem Stern (`*`) endet, werden alle Libraries mit dem entsprechenden Präfix überwacht. Standardeinstellung: alle Libraries
`PROGRAM` | `program-name` | Nur das angegebene Programm wird überwacht. Wenn die Spezifikation mit einem Stern (*) endet, werden alle Programme mit dem entsprechenden Präfix überwacht. Standardeinstellung: alle Programme
`LINE-FROM` | `start-number` | Nur Zeilen mit einer Zeilennummer, die größer oder gleich der angegebenen Nummer ist, werden überwacht. Gültige Werte für `start-number:` `0` bis `9999`
`LINE-TO` | `end-number` | Nur Zeilen mit einer Zeilennummer, die kleiner oder gleich der angegebenen Nummer ist, werden überwacht. Wenn die Zahl `0` ist, wird die maximale Zeilennummer verwendet. Gültige Werte für `end-number:` `0` bis `9999`

#### Beispiel für einen Programmfilter:

Das folgende Beispiel überwacht die Zeilen `0500` bis `2000` in allen Natural-Objekten, die in der Library `PRFDEMO` mit `X` beginnen.

    FILTER=PROGRAM            /* Set program filter
      LIBRARY=PRFDEMO         /* Monitored library
      PROGRAM=X*              /* Monitored program
      LINE-FROM=500           /* Monitor from line 0500
      LINE-TO=2000            /* Monitor to line 2000

### Zählfilter

Der Profiler-Zählfilter (Count Filter) gibt die Ereigniszähler an, für die Daten gesammelt werden. Standardmäßig (wenn der Zählfilter nicht angegeben ist) werden Daten für jede Ereignisanzahl gesammelt.

Wenn der Ereignisfilter `STATEMENT=ON` gesetzt ist, kann sich der Zählfilter nur auf Nicht-Statement-Ereignisse beziehen, da Statement-Ereignisse keine eindeutige Anzahl erhalten. Die Nicht-Statement-Ereignisse haben die gleiche Anzahl wie bei `STATEMENT=OFF` und in beiden Fällen kann der gleiche Zählfilter verwendet werden.

Syntax des Zählfilters:

`FILTER`=`COUNT`
[`FROM`={`0`|minimum-count}
[`TO`={`0`|maximum-count}

Syntax-Beschreibung:

Schlüsselwort für COUNT | Wert | Beschreibung
--- | --- | ---
`FROM` | `minimum-count` | Es werden nur Ereignisse bei einem Ereigniszähler überwacht, der größer oder gleich der angegebenen Zahl ist. Gültige Werte für `minimum-count:` `0` bis `2147483647`
`TO` | `maximum-count` | Es werden nur Ereignisse bei einem Ereigniszähler überwacht, der kleiner oder gleich der angegebenen Zahl ist. Wenn die Zahl `0` ist, wird der maximale Ereigniszähler verwendet. Gültige Werte für `maximum-count:` `0` bis `2147483647`

#### Beispiel für einen Zählfilter

Eine Profil-Erstellung mit `STATEMENT=OFF` hat gezeigt, dass zwischen den Ereignissen viel CPU-Zeit mit den Zählern `1200` bis `1400` verbracht wurde. Jetzt soll dieser Bereich, einschließlich der Statements, detaillierter analysiert werden. Mit `STATEMENT=COUNT` würden auch die Statements gezählt und die Ereignisse würden andere Zählerwerte erhalten. Aber mit `STATEMENT=ON` werden die Statements nicht gezählt und die Zählerwerte können verwendet werden, um die Datensammlung einzuschränken.

    FILTER=COUNT            /* Set count filter
      FROM=1200             /* Monitor from event count 1200
      TO=1400               /* Monitor to event count 1400

### Zeitfilter

Der Profiler-Zeitfilter gibt die CPU-Zeiten (Einheit: 1/100 Sekunden) an, für die Daten gesammelt werden. Standardmäßig (wenn der Zeitfilter nicht angegeben ist) werden Daten für jede CPU-Zeit gesammelt.

Syntax des Zeitfilters:

`FILTER`=`TIME`
[`FROM`={`0`|minimum-time}
[`TO`={`0`|maximum-time}

Syntax-Beschreibung:

Schlüsselwort für TIME | Wert | Beschreibung
--- | --- | ---
`FROM` | `minimum-time` | Es werden nur Ereignisse mit einer CPU-Zeit überwacht, die größer oder gleich der gegebenen Anzahl an 1/100 Sekunden ist. Gültige Werte für `minimum-time`: `0` bis `2147483647`
`TO` | `maximum-time` | Es werden nur Ereignisse mit einer CPU-Zeit überwacht, die kleiner oder gleich der gegebenen Anzahl an 1/100 Sekunden ist. Wenn die Zahl `0` ist, wird die maximale CPU-Zeit verwendet. Gültige Werte für `maximum-time`: `0` bis `2147483647`

#### Beispiel für einen Zählfilter:

In dem folgenden Beispiel werden alle Ereignisse überwacht, die nach einer Sekunde für eine Dauer von zwei Sekunden auftreten:

    FILTER=TIME            /* Set time filter
      FROM=100             /* Monitor from CPU second 1.00
      TO=300               /* Monitor to CPU second 3.00

## Stichprobennahme (Sampling) aktivieren

Bei der Sampling-Methode wird ein statistischer Ansatz verwendet, bei dem Daten durch Stichprobennahme gesammelt werden. Das Sampling reduziert die Menge der in die Ressourcendatei geschriebenen Daten erheblich und behält annähernd die gleichen CPU-Zeiten bei wie ohne Sampling.

Die Stichprobennahme steht bei der Profil-Erstellung (Profiling), aber nicht bei der Messung der Codeabdeckung (Code Coverage) zur Verfügung.

Allgemeine Informationen zur Stichprobennahme finden Sie unter Stichprobentechnik (Natural Profiler Sampling) im Kapitel Grundlegendes Konzept der Profiler Utility.

Um das Sampling zu aktivieren:

- Geben Sie die folgenden untergeordneten Schlüsselwörter ein, die der `INIT`-Funktion der Profiler Utility zugeordnet sind:

      SAMPLING=ON
      INTERVAL=nnn

  Dabei ist `nnn` das Stichprobenintervall in Mikrosekunden ist.

  Anmerkung
  Standardmäßig (wenn `SAMPLING` nicht angegeben ist) werden keine Stichproben der Daten genommen. Wenn `SAMPLING=ON` angegeben ist, aber kein `INTERVAL`, beträgt das Standard-Stichprobenintervall 100 Mikrosekunden.

## Benutzerdefinierte Ereignisse schreiben

Ein benutzerdefiniertes Ereignis kann aus einem Natural-Programm mithilfe des folgenden Natural-Statement generiert werden:

    CALL 'CMRDC' 'U' USER-DATA

Das erste Zeichen der `USER-DATA` wird als Subtyp des benutzerdefinierten Ereignisses behandelt. Die restlichen Zeichen sind der Text des benutzerdefinierten Ereignisses. Weitere Informationen finden Sie unter Benutzerdefinierte Ereignisse in der SYSRDC Utility-Dokumentation.

Anmerkungen:

1. Der Natural Profiler im Batch-Modus bietet eine Funktion, mit der Sie benutzerdefinierte Ereignisse aus dem JCL-Eingabestrom generieren können. Diese benutzerdefinierten Ereignisse werden immer unabhängig von den aktuellen Filtereinstellungen aufgezeichnet. Wenn die Profil-Erstellung angehalten wird, aktiviert die Profiler Utility die Profil-Erstellung, bevor sie das benutzerdefinierte Ereignis schreibt, und deaktiviert sie anschließend. Wenn die Probenahme aktiv ist, kann es vorkommen, dass ein benutzerdefiniertes Ereignis herausgefiltert wird.
2. Der Profiler muss initialisiert werden, bevor ein benutzerdefiniertes Ereignis geschrieben werden kann.

Die Funktion `FUNCTION=TEXT` der Profiler Utility wird verwendet, um benutzerdefinierte Ereignisse zu schreiben. Es gilt die folgende Syntax:

`FUNCTION=TEXT`
[`TEXT`=text]
[`TYPE`=character]

Syntax-Beschreibung:

Schlüsselwort für TEXT | Wert | Beschreibung
--- | --- | ---
`TEXT` | `text` | Der Text `text` wird dem Profiler-Trace als benutzerdefiniertes Ereignis hinzugefügt. Wenn mehrere `TEXT`-Schlüsselwörter angegeben sind, werden die entsprechenden Werte verkettet. Die maximale Textgröße beträgt 249 Bytes. Zusätzliche Zeichen werden abgeschnitten. Standardwert: keiner (Leerzeichen)
`TYPE` | `character` | Das alphanumerische Zeichen `character` gibt den Subtyp des benutzerdefinierten Ereignisses an. Der Subtyp ist Teil der ereignisspezifischen Daten. Der Ereignistyp eines benutzerdefinierten Ereignisses ist immer `U` gefolgt von einem Leerzeichen. Standardwert: Leerzeichen

Verwenden Sie die folgende Ereignisfiltereinstellung, wenn Sie nur die benutzerdefinierten Ereignisse überwachen möchten, die mit der `TEXT`-Funktion geschrieben wurden. Zusätzlich zu den `TEXT`-Funktionseinträgen werden auch die Session- und Pausenereignisse überwacht. Alle anderen Ereignisse, einschließlich benutzerdefinierter Ereignisse, die durch Aufrufe von `CMRDC` geschrieben werden, werden herausgefiltert.

    * Monitor only TEXT function entries
    FILTER=EVENT/* Set event filter
      EVENT=                /* No events
      STATEMENT=OFF         /* No statements
      FNAT=OFF              /* No FNAT

#### Beispiel für ein benutzerdefiniertes Ereignis

Das folgende Beispiel schreibt ein benutzerdefiniertes Ereignis mit dem Subtyp `J` und dem Text `Start profiling` in das Profiler-Ereignis-Trace.

    FUNCTION=TEXT            /* Write a user-defined event
      TEXT='Start profiling' /* User-defined event text
      TYPE='J'               /* User-defined event subtype

## Monitor-Session CMPRMIN

Standardmäßig verwendet die Profiler-Monitor-Session die gleichen dynamischen Natural-Parameter wie die Trace-Sitzung, die mit dem CMPRMIN-Eingabe-Dataset angegeben wurde. Ausnahme: Der Profilparameter `RDCSIZE` (Puffergröße für den Natural Data Collector) ist für die Monitor-Session auf Null (`0`) gesetzt. Mit dem `CMPRMIN`-Schlüsselwort der Profiler Utility-Funktion `INIT` oder `COVERAGE` kann ein separater dynamischer Parametereingabe-Dataset für die Profiler-Monitor-Session definiert werden. Wenn Sie den separaten Eingabe-Dataset für dynamische Parameter verwenden, beachten Sie Folgendes:

- Geben Sie für die Monitor-Session nur die Natural-Parameter an, die erforderlich sind. Geben Sie keine Parameter an, die für die Anwendungsausführung erforderlich sind (z. B. `RPC`).

- Geben Sie die Parameter `RDCSIZE` und `RDCEXIT` (User Exits für den Natural Data Collector) nur für die Trace-Session an. Die Angabe dieser Parameter für die Monitor-Session führt zu unnötigen Exit-Aufrufen und einer schlechteren Performance.

- Geben Sie den Parameter `PDPSIZE` (Profiler-Daten-Pool-Größe) nur für die Monitor-Session an. Jede Spezifikation im Eingabe-Dataset für dynamische Parameter der Trace-Session wird ignoriert.

Wenn die standardmäßige Einstellung des Natural-Profilparameters `ETID` (Adabas-Benutzerkennung) verwendet wird, kann es vorkommen, dass der folgende Fehler von der Profiler-Monitor-Session empfangen wird:

`NAT3048 Error during Open processing. DB/Subcode nn/8 - ETID=job-name.`. (Fehler während der `Open`-Kommandoverarbeitung).

Verwenden Sie in diesem Fall die folgenden Parameter für `CMPRMIN`:

    ETID=' ',DBCLOSE=ON

Alternativ können Sie einen `ETID`-Wert verwenden, der sich vom Jobnamen im separaten dynamischen Parametereingabe-Dataset für die Profiler-Monitor-Session unterscheidet.

Um einen dynamischen Parametereingabe-Dataset für die Profiler-Monitor-Session zu definieren:

- Geben Sie das folgende untergeordnete Schlüsselwort ein, das der Profiler Utility-Funktion `INIT` oder `COVERAGE` zugeordnet ist:

      CMPRMIN=data-set

  Dabei ist `data-set` der Name des dynamischen Parameter-Eingabe-Dataset für die Profiler-Monitor-Session.

#### Beispiel für z/OS:

    //CMSYNIN  DD  *
    PROFILER
    FUNCTION=INIT             /* Initialize profiling
      CMPRMIN=PRFPARMS        /* Monitor session parameter
      ...
    /*
    //* Trace Session Parameters
    //CMPRMIN  DD   *
    RDCSIZE=2,RDCEXIT=NATRDC1,...
    /*
    //* Monitor Session Parameters
    //PRFPARMS DD   *
    ETID=PROFILER,PDPSIZE=10000,...
    /*

## Monitor-Session CMSYNIN

Im Allgemeinen benötigt die Profiler-Monitor-Session keinen primären Kommandoeingabe-Dataset. Mit dem `CMSYNIN`-Schlüsselwort der Profiler Utility-Funktion `INIT` oder `COVERAGE` kann ein separater primärer Kommandoeingabe-Dataset für die Profiler-Monitor-Session definiert werden. Dies ist erforderlich, wenn Ihre Anwendung unter der Kontrolle von Natural Security läuft und Sie keine automatische Anmeldung wünschen, d.h. der Natural-Profilparameter `AUTO` (Automatische Anmeldung) ist auf `OFF` gesetzt. Geben Sie die gewünschten Anmeldeeinstellungen im primären Kommandoeingabe-Dataset für die Profiler-Monitor-Session an, gefolgt vom Profiler-Kommando, das die Profiler-Monitor-Session startet.

Geben Sie für das Profiling Folgendes an:

    library-name,user-id,password
    PROFILER MONITOR

Geben Sie für die Codeabdeckung Folgendes an:

    library-name,user-id,password
    PROFILER COVMON

Anmerkung
Wenn die obige Kommando-Syntax nicht angewendet wird, tritt der folgende Fehler auf: `Profiler Error-1 => PRBINIT : Profiler INIT function - No response from monitor session after 0.3 seconds.` (Profiler INIT-Funktion - Keine Antwort von der Monitor-Session nach 0,3 Sekunden.)

Um einen primären Kommandoeingabe-Dataset für die Profiler-Monitor-Session zu definieren:

- Geben Sie das folgende untergeordnete Schlüsselwort ein, das der Profiler Utility-Funktion `INIT` oder `COVERAGE` zugeordnet ist:

      CMSYNIN=data-set

  Dabei ist `data-set` der Name des primären Kommandoeingabe-Parameter-Dataset für die Profiler-Monitor-Session.

#### Beispiel für z/OS (mit AUTO=OFF gesetzt):

    //CMSYNIN  DD  *
    library-name,user-id,password
    PROFILER
    FUNCTION=INIT             /* Initialize profiling
      CMSYNIN=PRFSYNIN        /* Monitor session input data
      ...
    /*
    //* Monitor Session Input Data
    //PRFSYNIN DD   *
    library-name,user-id,password
    PROFILER MONITOR
    /*

## Batch-Natural RPC-Server profilieren

Die Profil-Erstellung oder die Messung der Codeabdeckung eines Batch-Natural RPC-Servers erfordert, dass das Systemkommando `PROFILER` und die Profiler-Eingabedaten mit dem Natural-Profilparameter `STACK` im RPC-Server-Job eingegeben werden. Die Profiler-Eingabe muss im zweiten Syntaxformat erfolgen (ohne Gleichheitszeichen und Kommas). Siehe auch Profiler Utility-Syntax in Syntax und Schlüsselwörter.

Anmerkung
Unter z/OS dürfen Sie die Language Environment-Option `POSIX(ON)` nicht verwenden. Wenn Sie SSL für die Kommunikation mit dem EntireX Broker verwenden möchten, müssen Sie Application Transparent Transport Layer Security (AT-TLS) verwenden.

Um die Profil-Erstellung eines Batch Natural RPC-Servers zu starten:

- Geben Sie das folgende Schlüsselwort ein, bevor die Profiler-Funktion `INIT` oder `COVERAGE` ausgeführt wird:

      RPC

Das Schlüsselwort `RPC` zeigt dem Profiler an, dass ein Natural-RPC-Server überwacht wird. Der Profiler überschreibt das Schlüsselwort `WAIT-EMPTY` der Initialisierung mit dem Wert Null (`0`), so dass die Profil-Erstellung immer fortgesetzt wird, wenn der Profiler-Daten-Pool leer ist und die Trace-Session noch aktiv ist.

Es wird empfohlen, einen separaten dynamischen Parametereingabe-Dataset (Monitor-Session `CMPRMIN`) für die Profiler-Monitor-Session zu verwenden, wenn Sie einen Batch Natural RPC-Server profilieren. Geben Sie den `RPC`-Parameter in diesem Dataset nicht an. Siehe Monitor-Session CMPRMIN.

Die Ereignisdaten des Batch Natural RPC-Servers werden in eine Profiler-Ressourcendatei geschrieben. Der Name und die Library der Ressourcendatei können mit Profiler-Schlüsselwörtern angegeben werden (siehe Profilierung initialisieren). Wir empfehlen Ihnen, den Natural RPC-Server zu stoppen, bevor der Profiler die Ressourcendatei weiterverarbeitet.

Wenn Sie ein Profil eines Natural-RPC-Servers erstellen, können Sie die Datensammlung mit den für die Profiler Utility bereitgestellten Programmen starten und anhalten.

Um die Profiler-Datensammlung in einer Client/Server-Umgebung zu starten und anzuhalten:

1. Kopieren Sie das Programm `PRFFCT` aus der System-Library `SYSPRFLR` in die Client-Library und die Anwendungsprogrammierschnittstelle `USR8210N` aus der System-Library `SYSEXT` in die Server-Library.

2. Führen Sie das Programm `PRFFCT` in der Client-Library aus.

   `PRFFCT` erwartet als Eingabe den Wert `START` oder `PAUSE`, um die entsprechende Funktion auszuführen. Wenn Sie den Wert `STATE` eingeben, wird der aktuelle Status der Datensammlung angezeigt.

   Weitere Informationen siehe Datensammlung starten und anhalten.

### Beispiel für Natural RPC Batch-Profilierung

Das folgende Beispiel für z/OS zeigt die Profiler-Eingabedaten für einen Batch Natural RPC-Server, der mit dem Natural-Profilparameter `STACK` angegeben wurde:

    STACK=(
    PROFILER RPC:
    TRACE:3:
    FUNCTION:INIT:
      TRACE-EVENT:OFF:
      TRACE-MON:3:
      CMPRMIN:CMPRMINX:
      RESOURCE:ON:
      RESOURCE-NAME:RPCTEST:
      RESOURCE-LIB:PRFDATA:
      REPLACE:YES:
    FILTER:EVENT:
      EVENT:ALL:
      STATEMENT:ON:
      FNAT:OFF:
    END-PROFILER;
    LOGON PRFDEMO
    )

## Profil-Erstellung einer Großrechner-Session aus Natural Studio

Sie können die Profiler Utility im Batch-Modus benutzen, um ein Profil einer Mainframe-Anwendung zu erstellen oder die Codeabdeckung für eine Großrechner-Anwendung auszuführen, die remote von Natural Studio auf einem Natural Development Server ausgeführt wird.

Dazu müssen Sie das Systemkommando `PROFILER` und die `PROFILER`-Eingabedaten mit dem dynamischen Natural-Profilparameter `STACK` angeben, wenn Sie Ihre Remote-Großrechner-Umgebung mappen. Die Profiler-Eingabe muss im zweiten Syntaxformat eingegeben werden (ohne Gleichheitszeichen und Kommas). Siehe auch Profiler Utility-Syntax in Syntax und Schlüsselwörter.

Sie können das Profiler-Schlüsselwort `INCLUDE` verwenden, um die Profiler-Eingabe aus einem Natural-Text-Objekt zu lesen und so die mit dem `STACK`-Parameter eingegebene Datenmenge zu reduzieren. Ein Beispiel finden Sie im Textobjekt `XNDV`, das in der System-Library `SYSPRFLR` ausgeliefert wird. In diesem Beispiel wird die Profil-Erstellung initialisiert und sofort die Überwachung gestartet.

Der Profiler überschreibt automatisch das Schlüsselwort `WAIT-EMPTY` der Initialisierung mit dem Wert Null (`0`), so dass die Profil-Erstellung immer fortgesetzt wird, wenn der Profiler-Daten-Pool leer ist und die Trace-Session noch aktiv ist.

Die Ereignisdaten der Natural Studio-Großrechner-Session werden in eine Profiler-Ressourcendatei geschrieben. Der Name und die Library der Ressourcendatei können mit Profiler-Schlüsselwörtern angegeben werden (siehe Profilierung initialisieren oder Initialisierung der Codeabdeckung (Code Coverage)). Wir empfehlen Ihnen, die Großrechner-Sitzung zu trennen, bevor Sie die Ressourcendatei auswerten.

Wenn Sie ein Profil einer Natural Studio-Großrechner-Sitzung erstellen, können Sie die Datensammlung mit den für die Profiler Utility mitgelieferten Programmen starten und anhalten (siehe entsprechenden Abschnitt).

Um die Profiler-Datenerfassung in einer Natural Studio-Großrechner-Sitzung zu starten oder anzuhalten:

1. Melden Sie sich bei der Library `SYSPRFLR` an.

2. Führen Sie das Programm `PRFSTART` aus, um die Sammlung zu starten.

3. Führen Sie das Programm `PRFPAUSE` aus, um die Sammlung anzuhalten.

### Regeln und Einschränkungen

Die folgenden Regeln und Einschränkungen gelten für die Profil-Erstellung einer Großrechner-Session aus Natural Studio:

- Die Profil-Erstellung mit der Profiler Utility im Batch-Modus funktioniert nicht, wenn Programme remote von NaturalONE ausgeführt werden. Verwenden Sie den NaturalONE Profiler, wenn Sie Großrechner-Programme profilieren möchten, die in einer NaturalONE-Umgebung ausgeführt werden.

- Die Profil-Erstellung einer Natural Studio-Großrechner-Session mit der Profiler Utility im Batch-Modus funktioniert nicht, wenn der Natural Development Server einen CICS-Adapter verwendet.

- Wenn die Profil-Erstellung mit dem `STACK`-Parameter gestartet wird, verwenden Sie die Profiler-Einstellung `TRACE=0`.

- Das Monitor-Tracing (`TRACE-MONITOR`) der Profiler-Session wird in die Natural Development Server-Ausgabe geschrieben.

### Beispiel für STACK für Mainframe Großrechner-Profiling

Das folgende Beispiel enthält eine `STACK`-Parameterangabe für eine Profiler-Dateneingabe, die dynamisch beim Mappen auf eine Remote-Großrechner-Umgebung von Natural Studio gesetzt wird:

    STACK=(PROFILER RESOURCE-LIB:PRFDATA:INCLUDE:XNDV)

Die Ressource wird in die Library `PRFDATA` geschrieben.

## Ereignisdaten konsolidieren

Mit der Profiler Utility-Funktion `CONSOLIDATE` können Sie Ereignisdaten konsolidieren.

Beachten Sie, dass die Natural Profiler Rich GUI-Schnittstelle ebenfalls eine Funktion zur Konsolidierung von Profiler-Ereignisdaten bietet.

Allgemeine Informationen zur Datenkonsolidierung finden Sie unter Datenkonsolidierung im Kapitel Grundlegendes Konzept der Profiler Utility.

Syntax von `CONSOLIDATE`:

`FUNCTION=CONSOLIDATE`
[`RESOURCE`={`ON`|`OFF`}]
[`RESOURCE-NAME`=resource-name]
[`RESOURCE-LIB`=library-name]
[`REPLACE`={`YES`|`NO`}]
[`TRANSACTION`={`ON`|`OFF`}]
[`IO-TIME`={`ON`|`OFF`}]
[`EXPORT`={`ON`|`OFF`}]
[`FORMAT`={`TEXT`|`COMMA`|`SEMICOLON`}]
[`TRACE-EVENT`={`ON`|`OFF`}]
[`TRACE-CONSOLIDATE`={`ON`|`OFF`}]

Syntax-Beschreibung:

Schlüsselwort für CONSOLIDATE | Wert | Beschreibung
--- | --- | ---
`RESOURCE` |  | Gibt an, ob die konsolidierten Ereignisdaten in eine konsolidierte Natural Profiler-Ressourcendatei (NPRC) geschrieben werden.
`ON` | Die konsolidierten Ereignisdaten werden in eine NPRC-Ressourcendatei geschrieben.
`OFF` | Die konsolidierten Ereignisdaten werden nicht in eine NPRC-Ressourcendatei geschrieben. Diese Einstellung ist nützlich, wenn Sie das Ereignis-Trace oder die Statistikdaten drucken oder die Daten exportieren möchten und die konsolidierte NPRC-Ressourcendatei nicht benötigen.
`RESOURCE-NAME` | `resource-name` | Der Name der Natural Profiler-Ressourcendatei (NPRF), die Sie konsolidieren möchten. Die Dateierweiterung `.nprf` wird automatisch hinzugefügt. Standardwert: Der Name der zuletzt erstellten NPRF-Ressourcendatei in der Library Bei `RESOURCE=ON` werden die konsolidierten Daten in eine NPRC-Ressourcendatei mit demselben Ressourcennamen geschrieben.
`RESOURCE-LIB` | `library-name` | Der Name der Natural-Library, die die NPRF-Ressourcendatei enthält, die Sie konsolidieren möchten. Standardwert: Der Name der aktuellen Library. Diese Library wird auch als Ziel-Library für die konsolidierte NPRC-Ressourcendatei verwendet.
`REPLACE` |  | Gibt an, ob eine vorhandene NPRC-Ressourcendatei ersetzt wird.
`YES` | Ersetzen einer vorhandene NPRC-Ressourcendatei mit demselben Namen.
`NO` | Kein Ersetzen einer vorhandene NPRC-Ressourcendatei mit demselben Namen. Eine Nachricht wird zurückgegeben, wenn bereits eine Ressourcendatei mit demselben Namen vorhanden ist. In diesem Fall wird keine Konsolidierung durchgeführt.
`TRANSACTION` |  | Gibt an, ob Transaktionskennungen zu den konsolidierten Ereignisdaten hinzugefügt werden.
`ON` | Transaktionskennungen werden zu den konsolidierten Ereignisdaten hinzugefügt. Weitere Informationen siehe Transaktionszusammenfassung. Anmerkung Die generierte NPRC-Ressourcendatei benötigt mehr Speicherplatz, wenn `ON` eingestellt ist.
`OFF` | Transaktionskennungen werden den konsolidierten Ereignisdaten nicht hinzugefügt.
`IO-TIME` |  | Gibt an, ob die E/A-Zeit (`IB`-Ereignis) und die Natural-RPC-Client-Zeit (`RW`-Ereignis) in den konsolidierten Daten enthalten sind.
`ON` | E/A- und Natural-RPC-Client-Zeit sind in den konsolidierten Daten enthalten.
`OFF` | E/A- und Natural-RPC-Client-Zeit sind nicht in den konsolidierten Daten enthalten. Diese Einstellung ist nützlich, wenn die Ereignisdaten aus der Profiler Utility im Online-Modus stammen und Sie planen, die Performance in NaturalONE oder mit der Profiler Utility-`READ`-Funktion zu analysieren. Für eine Performance-Analyse mit der Natural Profiler Rich GUI-Schnittstelle ist diese Einstellung nicht erforderlich, da diese eine ähnliche Funktion bietet.
`EXPORT` |  | Gibt an, ob die konsolidierten Ereignisdaten in die Arbeitsdatei (Work File) 7 geschrieben werden.
`ON` | In die Arbeitsdatei 7 schreiben.
`OFF` | Nicht in die Arbeitsdatei 7 schreiben.
`FORMAT` |  | Gibt das Format an, in dem die exportierten Daten in Arbeitsdatei 7 geschrieben werden.
`TEXT` | Daten im Freitextformat schreiben.
`COMMA` | Daten im CSV-Format mit einem Komma (`,`) als Trennzeichen schreiben.
`SEMICOLON` | Daten im CSV-Format mit einem Semikolon (;) als Trennzeichen schreiben.
`TRACE-EVENT` |  | Gibt an, ob das Profiler-Ereignis-Trace in die Standardausgabe geschrieben wird. Siehe Ereignis-Trace.
`ON` | Profiler-Ereignis-Trace schreiben.
`OFF` | Profiler-Ereignis-Trace nicht schreiben.
`TRACE-CONSOLIDATE` |  | Gibt an, ob der Profiler-Konsolidierungs-Trace in die Standardausgabe geschrieben wird. Siehe Konsolidierungs-Trace.
`ON` | Profiler-Konsolidierungs-Trace schreiben.
`OFF` | Profiler-Konsolidierungs-Trace nicht schreiben.

### Beispiel für eine Konsolidierung

Im folgenden Beispiel wird die Profiler-Ressource `Test.nprf` in der Library `PRFDATA` konsolidiert und die konsolidierten Daten werden in die Profiler-Ressource Test.nprc geschrieben. E/A- und Natural-RPC-Client-Zeit sind in den konsolidierten Daten enthalten.

Darüber hinaus werden die konsolidierten Daten im CSV-Format (semikolongetrennte Werte) in Arbeitsdatei 7 geschrieben.

Die Ereignis- und Konsolidierungs-Traces sind ausgeschaltet.

    FUNCTION=CONSOLIDATE    /* Consolidate Profiler data
      RESOURCE=ON           /* Write to resource
      RESOURCE-NAME='Test'  /* Resource name
      RESOURCE-LIB=PRFDATA  /* Resource library
      REPLACE=YES           /* Replace resource
      TRANSACTION=OFF       /* Do not add transaction identifiers
      IO-TIME=ON            /* Include I/O and RPC client times
      EXPORT=ON             /* Write to Work File 7
      FORMAT=S              /* CSV format with semicolon separator
      TRACE-EVENT=OFF       /* No event trace
      TRACE-CONSOLIDATE=OFF /* No consolidation trace

## Ereignisdaten auswerten

Wenn das Profil einer Natural-Anwendung erstellt wird, schreibt die Natural Profiler Utility die Ereignisdaten in eine NPRF-Ressourcendatei. Konsolidierte Daten werden in einer NPRC-Ressourcendatei und Abdeckungsdaten in einer NCVF-Ressourcendatei gespeichert. Die `READ`-Funktion der Profiler Utility liest und wertet die Profiler-Ressourcendaten aus und schreibt die Ergebnisse in die Standardausgabe oder in eine Natural-Arbeitsdatei. Die durchgeführten Auswertungen hängen, wie in der folgenden Tabelle beschrieben, vom Typ der gelesenen Ressourcendatei ab:

Typ der Ressourcendatei | Auswertung | Beschreibung
--- | --- | ---
NPRF | Ereignis-Trace | Chronologische Liste der Profiler-Ereignisdaten.
Programm-Trace | Programmablauf der profilierten Anwendung.
Statistik | Statistik der Profil-Erstellung und der NPRF-Ressourcendatei.
NPRC | Konsolidierungs-Trace | Liste der konsolidierten Daten mit Trefferzahlen und zusammengefasster verstrichener (elapsed) Zeit und CPU-Zeit.
Programmzusammenfassung | Tabelle der ausgeführten Natural-Objekte. Die Tabelle zeigt, welche Ereignisse während der Objektausführung aufgetreten sind und welche CPU-Zeit für die Ausführung des Objekts aufgewendet wurde.
Zeilenzusammenfassung | Tabelle der ausgeführten Natural-Quellcode-Zeilen. Die Tabelle zeigt, wie viele Ereignisse während der Zeilenausführung aufgetreten sind und wie viel CPU- und verstrichene (elapsed) Zeit bei der Ausführung der Zeile aufgewendet wurde.
Transaktionszusammenfassung | Tabelle der ausgeführten Transaktionen. Die Tabelle zeigt, wie viele Ereignisse während der Transaktionsausführung aufgetreten sind und die Antwortzeit (verstrichene (elapsed) Zeit) der Transaktionen.
Statistik | Statistikdaten des Profiling, der Konsolidierung und der NPRC-Ressourcendatei.
NCVF | Statement-Abdeckung | Liste der in den Quellcode-Zeilen abgedeckten Statements. Die Liste zeigt den Prozentsatz der Statement-Abdeckung für jede Statement-Zeile in dem Quellcode der aufgerufenen Programme.
Programmabdeckung | Tabelle der Codeabdeckungsergebnisse ausgeführter Natural-Objekte. Die Programmabdeckungstabelle listet alle Natural-Objekte auf, die während des Abdeckungslaufs ausgeführt wurden. Für jedes Objekt zeigt es den Prozentsatz der Abdeckung, die Anzahl der abgedeckten und nicht abgedeckten ("missed") Statements und die Gesamtzahl der Statements.
Statistik | Statistikdaten für Profil-Erstellung, Abdeckung und die NCVF-Ressourcendatei.

Dieser Abschnitt behandelt die folgenden Themen:

- Lesefunktion (READ) der Profiler Utility

- Beispiel für READ

- Ereignis-Trace

- Konsolidierungs-Trace

- Programm-Trace

- Programmzusammenfassung

- Zeilenzusammenfassung

- Transaktionszusammenfassung

- Programmabdeckung

- Statement-Abdeckung

- Microsoft Excel-Vorlage zur Visualisierung der Abdeckungsergebnisse benutzen

- Statistiken

### Lesefunktion (READ) der Profiler Utility

Die `READ`-Funktion der Profiler Utility liest und wertet die Ressourcendaten aus.

Syntax von `READ`:

`FUNCTION=READ`
[`RESOURCE-NAME`=resource-name]
[`RESOURCE-LIB`=library-name]
[`RESOURCE-TYPE`={`NPRF`|`NPRC`|`NCVF`}]
[`EVENT`={`ON`|`OFF`}]
[`PROGRAM`={`ON`|`OFF`}]
[`LINE`={`ON`|`OFF`}]
[`TRANSACTION`={`ON`|`OFF`}]
[`STATISTICS`={`ON`|`OFF`}]
[`PRINT`={`ON`|`OFF`}]
[`EXPORT`={`ON`|`OFF`}]
[`FORMAT`={`TEXT`|`COMMA`|`SEMICOLON`}]

Syntax-Beschreibung:

Schlüsselwort für READ | Wert | Beschreibung
--- | --- | ---
`RESOURCE-NAME` | `resource-name` | Der Name der NPRF-, NPRC- oder NCVF-Ressourcendatei, die Sie lesen möchten. Wenn keine Dateierweiterung angegeben ist, wird die mit dem Schlüsselwort `RESOURCE-TYPE` angegebene Erweiterung automatisch hinzugefügt. Standardwert: Der Name der zuletzt erstellten NPRF-, NPRC- oder NCVF-Ressourcendatei in der Library, abhängig von der `RESOURCE-TYPE`-Angabe.
`RESOURCE-LIB` | `library-name` | Der Name der Natural-Library, die die NPRF-, NPRC- oder NCVF-Ressource enthält, die Sie lesen möchten. Standardwert: Der Name der aktuellen Library.
`RESOURCE-TYPE` |  | Gibt den Standard-Ressourcentyp (Dateierweiterung) an, der verwendet werden soll, wenn keine Erweiterung mit `RESOURCE-NAME` angegeben ist.
`NPRF` | Der Standard-Ressourcentyp ist NPRF mit der Erweiterung `.nprf`.
`NPRC` | Der Standard-Ressourcentyp ist NPRC mit der Erweiterung `.nprc`.
`NCVF` | Der Standard-Ressourcentyp ist NCVF mit der Erweiterung `.ncvf`.
`EVENT` |  | Gibt an, ob der Natural Profiler Ereignisse auswertet. Siehe auch Ereignis-Trace, Konsolidierungs-Trace und Statement-Abdeckung.
`ON` | NPRF: Das Natural Profiler-Ereignis-Trace schreiben. NPRC: Das Natural Profiler-Konsolidierungs-Trace schreiben. NCVF: Das Ergebnis des Statement-Abdeckung-Trace schreiben.
`OFF` | Ereignisse nicht auswerten.
`PROGRAM` |  | Gibt an, ob der Natural Profiler Programme auswertet. Siehe auch Programm-Trace, Programmzusammenfassung und Programmabdeckung.
`ON` | NPRF: Das Natural Profiler-Programm-Trace schreiben. NPRC: Die Natural Profiler-Programmzusammenfassung schreiben. NCVF: Die Programmabdeckungstabelle schreiben.
`OFF` | Programme nicht auswerten.
`LINE` |  | Diese Option ist nur für NPRC-Ressourcen verfügbar. Gibt an, ob der Natural Profiler ausgeführte Quellcodezeilen auswertet. Siehe auch Zeilenzusammenfassung.
`ON` | Die Natural Profiler-Zeilenzusammenfassung schreiben.
`OFF` | Keine ausgeführten Quellcodezeilen auswerten.
`TRANSACTION` |  | Diese Option ist nur für NPRC-Ressourcen verfügbar. Gibt an, ob der Natural-Profiler Transaktionen auswertet. Weitere Informationen siehe Transaktionszusammenfassung.
`ON` | Transaktionen auswerten, um eine Transaktionszusammenfassung zu generieren und transaktionsbezogene Werte in der Programmzusammenfassung und der Zeilenzusammenfassung anzuzeigen.
`OFF` | Keine Transaktionen auswerten.
`STATISTICS` |  | Gibt an, ob der Natural Profiler Statistiken schreibt. Siehe auch Profiler-Statistikdaten. Anmerkung Statistikdaten für die Natural-Codeabdeckung werden unter Linux und Windows nicht erfasst.
`ON` | Statistiken schreiben.
`OFF` | Keine Statistiken schreiben.
`PRINT` |  | Gibt an, ob das Ergebnis in die Standardausgabe geschrieben wird.
`ON` | In die Standardausgabe schreiben.
`OFF` | Nicht in die Standardausgabe schreiben.
`EXPORT` |  | Gibt an, ob die ausgewerteten Daten in die Arbeitsdatei 7 geschrieben werden.
`ON` | In die Arbeitsdatei 7 schreiben.
`OFF` | Nicht in die Arbeitsdatei 7 schreiben.
`FORMAT` |  | Gibt das Format an, in dem die exportierten Daten in Arbeitsdatei 7 geschrieben werden.
`TEXT` | Die Daten im Freitextformat schreiben.
`COMMA` | Die Daten im CSV-Format mit einem Komma (`,`) als Trennzeichen schreiben.
`SEMICOLON` | Die Daten im CSV-Format mit einem Semikolon (`;`) als Trennzeichen schreiben.

### Beispiel für READ

Das folgende Beispiel liest die Natural Profiler-Ressource `Test.nprf` in der Library `PRFDATA` und schreibt das Ereignis-Trace, das Programm-Trace und die Profiler-Statistiken in die Standardausgabe und in die Arbeitsdatei 7 im Textformat.

    FUNCTION=READ           /* Read Profiler Data
      RESOURCE-NAME='Test'  /* Resource name
      RESOURCE-LIB=PRFDATA  /* Resource library
      RESOURCE-TYPE=NPRF    /* Use resource type NPRF
      EVENT=ON              /* Print event trace
      PROGRAM=ON            /* Print program trace
      STATISTICS=ON         /* Print statistics
      PRINT=ON              /* Write to standard output
      EXPORT=ON             /* Write to Work File 7
      FORMAT=TEXT           /* Export in text format

### Ereignis-Trace

Wenn `EVENT=ON` für eine NPRF-Ressourcendatei angegeben wird, wird das Profiler-Ereignis-Trace generiert.

Das Ereignis-Trace zeigt die Daten jedes Natural-Ereignisses, das während der Ausführung der Anwendung aufgetreten ist. Das Trace kann referenziert werden, wenn detaillierte Informationen zu einem Ereignis erforderlich sind. Wenn beispielsweise während der Anwendungsausführung ein Natural-Fehler aufgetreten ist, zeigt das Ereignis-Trace die entsprechende Fehlernummer und Meldung an.

Wenn das Ereignis-Trace in die Standardausgabe (`PRINT=ON`) geschrieben oder im Textformat exportiert wird (`EXPORT=ON`, `FORMAT=TEXT`), ähnelt sie dem Ereignis-Trace, das von der Profiler-Monitor-Session geschrieben wurde, während die Anwendung profiliert wurde (siehe Ereignis-Trace). Wenn die Daten im CSV-Format (kommagetrennte Werte) exportiert werden, enthalten sie alle vom Profiler bereitgestellten Datenfelder (siehe Gesammelte Daten).

> Beispiel für ein Ereignis-Trace

>   Das folgende Beispiel zeigt einen Auszug aus einem Ereignis-Trace:

>       Natural Profiler Event Trace
>       ----------------------------
>            Count Time              CPU-Time (ms) Ev Lev Library  Program  Line CC-Lib   CC-Name  Statement  Local-Data
>                0 10:20:58.219911        63.318   MP 003 SYSPRFD  PRBINIT  8350                   Call       Monitor pause requested
>              102 10:20:58.277586        76.106   PL 000                   0000                              Execute SYSEDMD/MENU
>              103 10:20:58.277591        76.139   PS 001 SYSEDMD  MENU     0000                   PgmStart   00010/02430 Type: P
>              103 10:20:58.277594        76.151   NS 001 SYSEDMD  MENU     0250                   Compute    Assign/Compute/Move
>              103 10:20:58.277596        76.155   NS 001 SYSEDMD  MENU     0270                   Fetch      Fetch
>              104 10:20:58.277598        76.169   DB 001 SYSEDMD  MENU     0270                   Fetch      00010/02430 S1
>       ...

>   Erläuterungen:

>   - Die Spalte Count zeigt die Nummer des Ereignisses an. Monitor Pause (`MP`)-Ereignisse und Natural Statement (`NS`)-Ereignisse werden nicht gezählt und erhalten die Nummer des vorherigen Ereignisses.

>   - Die Spalten Time und CPU-Time zeigen die Ereigniszeit bzw. den CPU-Zeitstempel der Ereignisausführung an.

>   - Das Ereignis mit der Nummer `104` ist ein Database Before (`DB`)-Ereignis, das durch ein Adabas S1-Kommando verursacht wird, das für die Datei `00010/02430` ausgegeben wurde und durch ein `FETCH`-Statement in der Zeile `0270` des Natural-Objekts `MENU` ausgelöst wurde.

>   Weitere Erläuterungen zu den Trace-Spalten und Ereignistypen finden Sie in den Abschnitten Event-Trace und Gesammelte Ereignisse und Daten.

### Konsolidierungs-Trace

Wenn `EVENT=ON` für eine NPRC-Ressourcendatei angegeben wird, wird das Natural Profiler-Konsolidierungs-Trace generiert. Das Konsolidierungs-Trace wird auch generiert, wenn `CONSOLIDATE=ON` und `TRACE-CONSOLIDATE=ON` für die INIT-Funktion der Profiler Utility gesetzt sind oder wenn `TRACE-CONSOLIDATE=ON` für die Profiler Utility-Funktion `CONSOLIDATE` gesetzt ist.

Das Konsolidierungs-Trace zeigt allgemeine Ereignisdaten, zusammengefasste Werte der verstrichenen (elapsed) Zeit und CPU-Zeit sowie die Trefferanzahl des konsolidierten Datensatzes. Wenn zwei Trace-Einträge die gleichen allgemeinen Ereignisdaten zeigen, haben sie unterschiedliche ereignisspezifische Daten, die nicht im Konsolidierungs-Trage angezeigt werden.

Die konsolidierten Datensätze dienen als Grundlage für weitere Auswertungen wie die NaturalONE-Hot Spots oder die Datenauswertung und Programmanalyse der Profiler Rich GUI-Schnittstelle. Das Konsolidierungs-Trace kann verwendet werden, um die konsolidierten Daten zu validieren.

Wenn das Konsolidierungs-Trace in die Standardausgabe (`PRINT=ON`) geschrieben wird, ähnelt es dem Konsolidierungs-Trace, das von der Profiler-Datenkonsolidierung geschrieben wurde (siehe Ereignisdaten konsolidieren). Wenn die Daten exportiert werden, enthalten sie alle vom Profiler bereitgestellten konsolidierten Datenfelder.

> Beispiel für ein Konsolidierungs-Trace:

>   Das folgende Beispiel zeigt einen Auszug aus einem Konsolidierungs-Trace:

>       Natural Profiler Consolidation Trace
>       ------------------------------------
>           Count Transact Ev User     Lev Library  Program  Line CC-Lib   CC-Name  Statement   Hit-Count  Elapsed(ms)      CPU(ms)
>               1          DA PRFO82D  000                   0000                                       1       75.692        0.870
>               2          DA PRFO82D  000                   0000                                       1        0.002        0.004
>               3          DA PRFO82D  000                   0000                                       1        0.006        0.025
>               4          NS PRFO82D  006 SYSLIBS  A82CLS   0010 SYSAOSSU C-COPYRT Reset              43        0.043        0.118
>               5          NS PRFO82D  006 SYSTEM   NOMSTCS  4360                   End                 1        0.000        0.003
>               6          PL PRFO82D  006 SYSTEM   NOMSTCS  0970                   Callnat             1        0.008        0.058
>               7          PL PRFO82D  006 SYSTEM   NOMSTCS  1020                   Perform             1        0.004        0.017
>       ...

>   Erläuterungen:

>   - Die Spalte Count zeigt die Nummer des konsolidierten Datensatzes.

>   - Die Spalte Transact zeigt die Transaktionskennung.

>     Die Transaktionskennung beginnt mit `1` und wird mit jedem `IA`- (nach Terminal-E/A) oder `RI`-Ereignis (eingehende RPC-Nachricht) erhöht. Transaktionskennungen sind nur verfügbar, wenn die Daten mit der Option `TRANSACTION=ON` konsolidiert werden.

>   - Der konsolidierte Datensatz `4` zeigt, dass die `RESET`-Anweisung in der Zeile `0010` des Copycode `C-COPYRT` (im Natural-Objekt `A82CLS` enthalten) 43 Mal ausgeführt wurde und eine verstrichene (elapsed) Gesamtzeit von `0,043` Millisekunden (ms) und eine Gesamt-CPU-Zeit von `0,118` ms verbrauchte.

>   - Die Anwendung lief auf einer z/OS-Maschine mit zIIP (IBM System z Integrated Information Processor). Unter dieser Bedingung kann die CPU-Zeit höher sein als die verstrichene (elapsed) Zeit.

>   Weitere Erläuterungen zu den Trace-Spalten und Ereignistypen finden Sie in den Abschnitten Event-Trace und Gesammelte Ereignisse und Daten.

### Programm-Trace

Wenn `PROGRAM=ON` für eine NPRF-Ressourcendatei angegeben wird, wird das Profiler-Programm-Trace erstellt. Das Programm-Trace zeigt den Programmfluss der profilierten Anwendung. Im Allgemeinen zeigt der Programmablauf ausschließlich Programm- und Session-Ereignisse an (eine Liste möglicher Ereignistypen finden Sie unter Gesammelte Ereignisse und Daten).

Wenn der Programmablauf in die Standardausgabe (`PRINT=ON`) geschrieben oder im Textformat exportiert wird (`EXPORT=ON`, `FORMAT=TEXT`), werden die Programmnamen entsprechend der Programmebene eingerückt (siehe Beispiel unten), um einen schnellen Überblick über die Anwendungsaufrufstruktur zu erhalten.

Wenn die Daten im CSV-Format (kommagetrennte Werte) exportiert werden, werden die Programmnamen nicht eingerückt. Zusätzlich zur Ausgabe im Textformat enthalten die exportierten Daten den CPU-Zeitstempel und die zusammengefasste Adabas-Zeit.

> Beispiel für einen Programm-Trace

>   Das folgende Beispiel zeigt einen Auszug eines Programm-Trace und die Summen der Anwendungsausführung:

>       Natural Profiler Program Trace
>       ------------------------------
>       Time            Ev Library  CC-Name  Line Lev Program  Events
>       10:20:58.309812 PL                   0000 000
>       10:20:58.309817 PS SYSEDMD           0000 001 .OPTTEST  D=4 N=2
>       10:20:58.357694 PL SYSEDMD           5620 001 .OPTTEST
>       10:20:58.357704 PS SYSEDMD           0000 002 ..CALLMON3 N=3
>       10:20:58.385263 PL SYSEDMD           0980 002 ..CALLMON3
>       10:20:58.385274 PS SYSEDMD           0000 003 ...OP3DISC  D=3 N=4
>       10:20:58.412207 PL SYSEDMD           1670 003 ...OP3DISC
>       10:20:58.412221 PS SYSEDMD           0000 004 ....OPTINFO  N=57
>       10:20:58.443203 PL SYSEDMD           5830 004 ....OPTINFO
>       10:20:58.443210 PS SYSEDMD           0000 005 ....:OPTPARM1 D=3 N=19
>       10:20:58.449549 PL SYSEDMD           1960 005 ....:OPTPARM1
>       10:20:58.449555 PS SYSEDMD           0000 006 ....:.OPTPARM2 D=3 N=10
>       10:20:58.458286 PL SYSEDMD           0560 006 ....:.OPTPARM2
>       10:20:58.458300 PS SYSEDMD           0000 007 ....:..OPTPARM3 N=16
>       10:20:58.458390 PL SYSEDMD           1530 007 ....:..OPTPARM3
>       10:20:58.458408 PS SYSLIBS           0000 008 ....:...NAT41004 D=10 C=6 N=7345
>       10:20:58.471017 PT SYSLIBS           5235 008 ....:...NAT41004
>       10:20:58.471017 PR SYSEDMD           1530 007 ....:..OPTPARM3 N=2898
>       10:20:58.473293 PL SYSEDMD           1530 007 ....:..OPTPARM3
>       10:20:58.473297 PS SYSLIBS           0000 008 ....:...NAT41004 D=5 C=6 N=1416
>       10:20:58.475581 PT SYSLIBS           5235 008 ....:...NAT41004
>       10:20:58.475581 PR SYSEDMD           1530 007 ....:..OPTPARM3 N=466
>       10:20:58.475957 PT SYSEDMD           2190 007 ....:..OPTPARM3
>       10:20:58.475957 PR SYSEDMD           0560 006 ....:.OPTPARM2 N=283
>       10:20:58.476187 PT SYSEDMD           0860 006 ....:.OPTPARM2
>       10:20:58.476187 PR SYSEDMD           1960 005 ....:OPTPARM1 N=42
>       10:20:58.476222 PT SYSEDMD           7510 005 ....:OPTPARM1
>       10:20:58.476222 PR SYSEDMD           5830 004 ....OPTINFO  D=3 N=10
>       10:20:58.497926 PL SYSEDMD           6080 004 ....OPTINFO
>       10:20:58.521954 PR SYSEDMD           1670 003 ...OP3DISC  N=241
>       10:21:11.205102 PR SYSEDMD           0980 002 ..CALLMON3 D=7 N=6070
>       10:21:41.704996 PR SYSEDMD           5620 001 .OPTTEST  D=8 I=3 N=26
>       10:21:41.731229 PT SYSEDMD           7370 001 .OPTTEST
>       10:21:41.731229 PR                   0000 000          D=14 I=1
>       10:21:42.248348 ST                   0000 000

>       Totals
>       ------
>       Ev Event                    Count
>       S  Session ................ 1
>       P  Program ................ 5297
>       D  Database Call .......... 2140
>       I  Terminal I/O ........... 12
>       C  External Program Call .. 6510
>       E  Runtime Error .......... 43
>       N  Natural Statement ...... 857384
>       R  RPC Request............. 0
>       U  User-Defined Event ..... 0
>       M  Monitor Pause .......... 2

>   Erläuterungen:

>   - Für jedes aufgeführte Ereignis wird der Zeitpunkt des Ereignisses, die aktive Library, das Programm (Natural-Objekt), der Copycode, die Zeilennummer und die Programmebene angezeigt.

>   - Dem Programmnamen folgt die Anzahl der Ereignisse, die von einem Programmereignis bis zum nächsten Programmereignis aufgetreten sind.

>   - Ereignisse, die zu einer Ereignisgruppe gehören, werden unter Verwendung der maximalen Anzahl der entsprechenden Ereignistypen zu einer Anzahl zusammengefasst. Beispiel: Ein Database Before-(`DB`)- und ein Database After-(`DA`)-Ereignis werden zu einem Datenbankereignis (`D=1`) zusammengefasst.

>   - Im obigen Beispiel wurde das Natural-Objekt `OPTTEST` auf Ebene `1` gestartet. Dieses Programm ruft das Subprogramm `CALLMON3` auf, das weitere Subprogramme aufruft. Die höchste Stufe 8 wird erreicht, wenn das Subprogramm `NAT41004` ausgeführt wird. Während der ersten Ausführung führt dieses Subprogramm 10 Datenbankaufrufe (`D=10`), 6 externe Programmaufrufe (`C=6`) und 7345 Natural-Statements (N=7345) durch.

>   - Der Abschnitt `Totals` (Summen) am Ende des Programm-Trace zeigt die maximale Anzahl jeder Ereignisgruppe. Zum Beispiel: Die Summe von 2140 Datenbankaufrufe entspricht 2140 Database Before-(`DB`)- und 2140 Database After-(DA)-Ereignissen.

>   - Die Summen der Ereignisgruppen Session (`S`) und Program (`P`) sind nur unter `Totals` (Summen) aufgeführt; sie sind nicht neben dem Programmnamen aufgeführt.

>   Weitere Erläuterungen zu den Trace-Spalten finden Sie im Abschnitt Ereignis-Trace.

>   Erläuterungen zu Ereignistypen und zugehörigen Ereignisgruppen finden Sie im Ereignisse.

### Programmzusammenfassung

Wenn `PROGRAM=ON` für eine NPRC-Ressourcendatei angegeben ist, wird die Profiler-Programmzusammenfassung generiert.

Die Programmzusammenfassung zeigt für jedes Natural-Objekt, wie viele Natural-Ereignisse aufgetreten sind, die gesamte CPU-Zeit (in Millisekunden) und den Prozentsatz der CPU-Zeit, die das Natural-Objekt bezogen auf die gesamte CPU-Zeit aufgewendet hat.

Monitor-Pause-Ereignisse und Ereignisse auf Ebene 0 werden nicht für die Programmzusammenfassung berücksichtigt. Ereignisse, die zu einer Ereignisgruppe gehören, werden zu einer Zählung zusammengefasst: siehe Ereignisse.

Programmstarts und Ladeanforderungen werden separat aufgeführt.

Wenn die Daten im CSV-Format (kommagetrennte Werte) exportiert werden, wird die Anzahl jedes Ereignistyps aufgelistet. Darüber hinaus werden die verstrichene (elapsed) Zeit und die Adabas-Zeiten (absolute und prozentuale Werte) angezeigt. Die exportierten Zeitwerte werden in Mikrosekunden angezeigt.

> Beispiel für eine Programmzusammenfassung

>   Das folgende Beispiel zeigt den Auszug einer Programmzusammenfassung:

>       Natural Profiler Program Summary
>       --------------------------------
>       Library  Program      Start      Load  Database       I/O  External     Error Statement      User CPU-Time (ms)  CPU %
>       SYSEDMD  ADA-CL          41         0        40         0        41         0       621         0         3.785   0.14
>       SYSEDMD  ADA-RC          45         0        44         0        45         0       545         0         4.704   0.17
>       SYSEDMD  AOS-CL         115        97        15         0         0         0      2507         0        42.890   1.63
>       SYSEDMD  AOS-OP         169       154        22         0         0         0      6975         0        70.286   2.68
>       SYSEDMD  BYTE             1         0         0         0         0         0        11         0         0.034   0.00
>       SYSEDMD  CALLMON3         1         5        23         0         0         0      7089         0        20.001   0.76
>       SYSEDMD  CALLNOM          6         6        19         0         0         0        18         0         1.342   0.05
>       SYSEDMD  CALLNOPM         2         2         4         0         0         0        16         0         0.395   0.01
>       SYSEDMD  CALLNOPN         1         1         4         0         0         0         8         0         0.244   0.00
>       SYSEDMD  CALLNOPS         3         4        23         0         0         1        31         0         1.841   0.07
>       SYSEDMD  DISNOP           1         7         6         0         0         0       515         0         2.260   0.08
>       SYSEDMD  DISNO4I          1        47         3         0         1         0      8075         0        25.516   0.97
>       SYSEDMD  DISNO4IS        57         0         0         0       624         0     36877         0       105.650   4.03
>       SYSEDMD  DISNRS           1         0         0         0        44         0       511         0         3.343   0.12
>       SYSEDMD  DISNSP           1        18        15         0         0         0      1850         0         6.074   0.23
>       SYSEDMD  DISNTMZ          1         4        11         0         0         0       324         0         2.309   0.08
>       SYSEDMD  MENU             1         1         3         0         0         0         2         0         0.235   0.00
>       SYSEDMD  MONACSH          1         6         6         0         0         0      1217         0         3.470   0.13
>       SYSEDMD  MONADA           1      3176        71         0         0         0    272180         0       680.214  25.98
>       SYSEDMD  MONAREP          1         9        28         0         0         0      1964         0         6.378   0.24
>       ...
>       Total                  5294      5293      2122         7      6510        43    857384         0      2617.326 100.00

>   Erläuterungen:

>   - Das Natural-Objekt `MONADA` verbrauchte die meiste CPU-Zeit: 680,214 ms, was 25,98 Prozent der gesamten CPU-Zeit entspricht.

>   - `MONADA` wurde einmal gestartet, es lud `3176` andere Natural-Objekte, führte `71` Datenbankaufrufe und `272180` Natural-Statements durch. Es gab keine Eingabe/Ausgabe, keinen externen Aufruf und keinen Fehler im Programm.

>   - Am Ende der Programmzusammenfassung werden die Gesamtzahlen der Profil-Erstellung aufgelistet.

### Zeilenzusammenfassung

Wenn `LINE=ON` für eine NPRC-Ressourcendatei angegeben wird, wird die Profiler-Zeilenzusammenfassung generiert.

Die Zeilenzusammenfassung zeigt für jede Quellcodezeile in einem Natural-Objekt die Anzahl der aufgetretenen Natural-Ereignisse (Hit-Count/Trefferzahl), die CPU- und die verstrichene (elapsed) Zeit (in Millisekunden und Prozent), die für die Zeile aufgewendet wurde. Der Prozentsatz der Zeiten wird im Verhältnis zu den Gesamtzeiten der Anwendung berechnet.

Die Zeilenzusammenfassung zählt keine Monitor-Pause-Ereignisse und Ereignisse auf Ebene 0.

Wenn die Daten im CSV-Format (kommagetrennte Werte) exportiert werden, wird die Anzahl jedes Ereignistyps aufgelistet. Zusätzlich werden die Adabas-Zeiten (absolute und prozentuale Werte) angezeigt. Die exportierten Zeitwerte werden in Mikrosekunden angezeigt.

> Beispiel für eine Zeilenzusammenfassung

>   Das folgende Beispiel zeigt den Auszug einer Zeilenzusammenfassung:

>       Natural Profiler Line Summary
>       --------------------------------
>       Library  Program  Line CC-Lib   CC-Name  Hit-Count       CPU (ms)  CPU %  Elapsed (ms)  Ela %
>       PRFTEST  XINT     0000                            1         0.016   0.46         0.003   0.01
>       PRFTEST  XINT     0140                            1         0.005   0.14         0.001   0.00
>       PRFTEST  XINT     0150                            1         0.006   0.17         0.002   0.01
>       PRFTEST  XINT     0160                            1         0.004   0.11         0.001   0.00
>       PRFTEST  XINT     0170                           23         0.128   3.75         0.029   0.18
>       PRFTEST  XINT     0180                           10         0.049   1.43         0.012   0.07
>       PRFTEST  XINT     0190                           10         0.054   1.58         0.010   0.06
>       ...
>       Total                                           371         3.408 100.00        15.992 100.00

>   Erläuterungen:

>   - Die Zeile `0170` im Natural-Objekt `XINT` verbrauchte `0,128` ms der CPU-Zeit und `0,029` ms der verstrichenen (elapsed) Zeit. Dies entspricht `3,75` Prozent der gesamten CPU-Zeit und `0,18` Prozent der gesamten verstrichenen (elapsed) Zeit. `23` Ereignisse (Hit-Count/Trefferzahl) wurden in der Zeile ausgeführt.

>   - Am Ende der Zeilenzusammenfassung werden die Gesamtzahlen der Profil-Erstellung aufgelistet.

### Transaktionszusammenfassung

Eine Transaktion ist der Code, der zwischen zwei aufeinanderfolgenden Terminal-Ein-/Ausgabe-Vorgängen ausgeführt wird. Die verstrichene (elapsed) Zeit, die für die Ausführung einer Transaktion aufgewendet wurde, wird als Antwortzeit (Response Time) bezeichnet.

Die vom Profiler generierte Transaktionszusammenfassung zeigt, wie viele Natural-Ereignisse bei jeder Transaktion aufgetreten sind, die Antwortzeit (in Millisekunden) und den Prozentsatz der Antwortzeit, die die Transaktion bezogen auf die gesamte Antwortzeit aufgewendet hat.

> Erforderliche Voraussetzungen für Transaktionsbewertungen

>   Die Profiler-Daten müssen mit der `CONSOLIDATE`-Funktion auf `TRANSACTION=ON` konsolidiert werden, damit die konsolidierten Datensätze in der NPRC-Ressourcendatei Transaktionsbezeichner enthalten, die für die Auswertung der Transaktionsantwortzeit erforderlich sind.

>   `TRANSACTION=ON` wird für die READ-Funktion angegeben.

> Für Transaktionen ausgewertete Ereignisdaten

>   Im Allgemeinen bezieht sich ein Terminal-Ein-/Ausgabe-Ereignis auf eine Transaktion. Die Anzahl der Terminal-Ein-/Ausgabe-Ereignisse ist nicht in der Standardausgabe aufgeführt (für `PRINT=ON`).

>   Daten, die im CSV-Format (kommagetrennte Werte) exportiert werden, enthalten die Anzahl jedes Ereignistyps, einschließlich Terminal-Eingabe/Ausgabe. Darüber hinaus enthält die Datenliste die CPU-Zeit und die Adabas-Zeiten (absolute und Prozentwerte). Exportierte Zeitwerte werden in Mikrosekunden angezeigt.

>   Die Transaktionszusammenfassung berücksichtigt keine Before Terminal E/A (`IB`)-Ereignisse, RPC Wait for Client-Ereignisse (`RW`), Monitor Pause (`MP`)-Ereignisse und Ereignisse auf Ebene 0. Ereignisse, die zu einer Ereignisgruppe gehören, werden zu einer Zählung zusammengefasst.

>   Erläuterungen zu Ereignistypen und zugehörigen Ereignisgruppen finden Sie im Abschnitt Ereignisse.

> Geänderte Zeilen- und Programmzusammenfassung

>   Wenn `TRANSACTION=ON` für die `READ`-Funktion einer NPRC-Ressourcendatei angegeben wird, berücksichtigen die Programmzusammenfassung und die Zeilenzusammenfassung auch den Transaktionsbezeichner (Identifier) und aggregieren die Programm- und Positionswerte für jede Transaktion separat. In der Transaktionszeilenzusammenfassung gibt die Spalte `ID` die Programmzeile an, in der die Transaktion gestartet wurde.

> Beispiel für eine Transaktionszusammenfassung

>   Das folgende Beispiel zeigt eine Transaktionszusammenfassung:

>       Natural Profiler Transaction Summary
>       ------------------------------------
>       Transact TA-Lib   TA-Prog  TA-CC TA-Line   Program  Database  External     Error Statement      User  Elapsed (ms)  Time%
>              1                                         1         0         1         0         0         0         0.829   0.50
>              2 SYSPRFLR PRFMENM           0020         9        13         8         0         0         0        17.618  10.65
>              3 SYSEDM   MOPTTEST          0020         4         0         0         0         0         0         6.167   3.72
>              4 SYSEDM   OPTWLS80          0470         0         0         0         0         0         0         1.108   0.66
>              5 SYSEDM   OPTWLS80          0470         2         0         0         0         0         0         1.133   0.68
>              6 SYSEDM   OPTTEST           1750         1         0         0         0         0         0         1.180   0.71
>              7 SYSEDM   MOPTTEST          0020        27        33        30         0         0         0        94.236  56.96
>              8 SYSEDM   OPTTEST           5590         1         0         0         0         0         0         1.185   0.71
>              9 SYSEDM   MOPTTEST          0020        37        33        56         0         0         0        37.311  22.55
>             10 SYSEDM   OPTTEST           5760         1         0         0         0         0         0         1.096   0.66
>             11 SYSEDM   MOPTTEST          0020         6         0         6         0         0         0         2.164   1.30
>             12 SYSPRFLR PRFMENM           0020         2         0         3         0         0         0         1.394   0.84
>       Total                                           86        79       103         0         0         0       165.421 100.00

>   Erläuterungen am Beispiel von Transaktion `7`:

>   - Transaktion `7` verbrauchte die längste (verstrichene) Antwortzeit: 94,236 Millisekunden (ms), was 56,96 Prozent der gesamten Antwortzeit entspricht.

>   - Transaktion `7` startete eine E/A-Vorgang in der Library `SYSEDM` (`TA-Lib`-Spalte), Programm `MOPTTEST` (`TA-Prog`), Programmzeile `0020` (`TA-Line`).

>   - Transaktion `7` hat auf `27` Programme zugegriffen und `33` Datenbankaufrufe und `30` externe Programmaufrufe durchgeführt.

>   - Im obigen Beispiel sind alle Zähler für Statement-Ereignisse `0`, da Statement-Ereignisse während diesem Profiler-Lauf nicht gesammelt wurden.

>   - Am Ende der Transaktionszusammenfassung werden die Gesamtzahlen (`Total`) der profilierten Transaktionen aufgelistet.

### Programmabdeckung

Die Programmabdeckungstabelle wird generiert, wenn `PROGRAM=ON` für eine NCVF-Ressourcendatei angegeben ist.

Die Programmabdeckungstabelle zeigt die Codeabdeckungsergebnisse für jedes aufgerufene Natural-Objekt. Wenn die Tabelle im Textformat angegeben wird, werden nur die GP-Abdeckungsergebnisse (einschließlich Copycodes) angezeigt. Im CSV-Format (kommagetrennte Werte) zeigt die Tabelle Zeilen, die Copycode-Werte enthalten, zusätzliche Spalten mit Quellcodezählern (Copycodes nicht enthalten) und Informationen zu `INCLUDE`-Statements.

Im Textformat enthält die Tabelle die Anzahl der Abdeckungen für jede aufgerufene Library und für die gesamte Anwendung.

Die Tabelle enthält die folgenden Spalten:

Spalte | Beschreibung
--- | ---
Evaluation | Der Auswertungstyp. Mögliche Typen sind:
Program | Für Programmabdeckungsdaten.
Event (Ereignis) | Für Statement-Abdeckungsdaten.
Statistics | Für Profiler-Statistikdaten.
Object Count | Die Anzahl der katalogisierten Objekte (GPs), die in der Tabelle aufgeführt sind.
Object Type | Der Typ des Natural-Objekts, z.B. Programm und Subprogramm.
Library | Die Natural-Library, die das Objekt enthält.
Object | Der Name des Natural-Objekts.
Copycode ID | Der eindeutige Bezeichner der Copycode-Instanz im katalogisierten Objekt (GP). Das Programm erhält die Copycode-ID `0`.
Copycode Library | Die Library, aus der der Copycode eingefügt wird.
Copycode Name | Der Name des Copycode.
GP Coverage% | Der Prozentsatz der Objektabdeckung, wobei `INCLUDE`-Statements aufgelöst werden.
GP Covered | Die Anzahl der abgedeckten (ausgeführten) Statements, wobei I`NCLUDE`-Statements aufgelöst werden.
GP Missed | Die Anzahl der "missed" (nicht ausgeführten) Statements im Objekt, wobei `INCLUDE`-Statements aufgelöst werden.
GP Total | Die Gesamtzahl aller ausführbaren Statements im Objekt, wobei `INCLUDE`-Statements aufgelöst werden.
Src Coverage% | Der Prozentsatz der Objektabdeckung, wobei `INCLUDE`-Statements nicht aufgelöst werden.
Src Covered | Die Anzahl der abgedeckten (ausgeführten) Statements, wobei `INCLUDE`-Statements nicht aufgelöst werden.
Src Missed | Die Anzahl der "missed" (nicht ausgeführten) Statements im Objekt, wobei `INCLUDE`-Statements nicht aufgelöst werden.
Src Total | Die Gesamtzahl aller ausführbaren Statements im Objekt, wobei `INCLUDE`-Statements nicht aufgelöst werden.
First Statement | Die ID des ersten Statements des Objekts oder Copycodes.
INCLUDE CC-ID | Nur bei Copycode. Die Copycode-ID des Objekts oder des Copycode, der den Copycode enthält.
INCLUDE Object | Nur bei Copycode. Der Name des Objekts oder des Copycode, der den Copycode enthält.
INCLUDE Line | Nur bei Copycode. Die Zeilennummer des `INCLUDE`-Statement, das den Copycode enthält.

#### Beispiel für die Programmabdeckung

Das folgende Beispiel zeigt das Ergebnis der Programmabdeckung im Textformat

    Program Coverage
    ----------------
    Library  Object   Ty Coverage%  Covered    Missed    Total
    COVDEMO  TESTCOVN N      84.0%       37         7       44
    COVDEMO  TESTCOVP P      69.2%        9         4       13
    COVDEMO  -------- --     80.7%       46        11       57
    Totals   -------- --     80.7%       46        11       57

Erläuterungen:

- Die Anwendung greift auf zwei Objekte zu: Das `TESTCOVN`-Subprogramm (`N`) und das `TESTCOVP`-Programm (`P`).

- In `TESTCOVN` gibt es `44` ausführbare Statements (Objektcode-Anweisungen), von denen `37` abgedeckt (ausgeführt) und `7` nicht ausgeführt wurden ("missed"), was eine Gesamtabdeckung von `84,0%` ergibt.

- Die aufsummierten Werte der beiden Objekte, auf die in der Library `COVDEMO` zugegriffen wird, zeigen eine Abdeckung von `80,7%`.

- Die Gesamtabdeckung beträgt ebenfalls `80,7%`, weil die Objekte nur auf eine Library zugreifen.

### Statement-Abdeckung

Die Statement-Abdeckung wird generiert, wenn `EVENT=ON` für eine NCVF-Ressourcendatei angegeben wird.

Für die Statement-Abdeckung liest die Profiler Utility den Quellcode der überwachten Objekte. Zuerst sucht sie den Quellcode in der Library, die die Natural Profiler-Ressource enthält. Wenn der Quellcode in dieser Library nicht gefunden wird, wird er in der Library gesucht, die mit den Profiler-Daten angegeben ist. Wenn der Quellcode auch dort nicht gefunden wird oder wenn der Quellcode nicht mit den gesammelten Daten übereinstimmt, werden im Statement-Abdeckungsreport Quellcodezeilen nicht gedruckt. Die Profiler Utility löst `INCLUDE`-Statements auf und fügt den Quellcode des entsprechenden Copycodes in das inkludierende Programm ein. Wenn die `INCLUDE`-Struktur nicht aufgelöst werden kann, werden die Copycodes separat gedruckt.

Wenn ein Quellcode nach der Ausführung der Abdeckung geändert wurde, kann die Profiler Utility nicht mehr die vollständigen Informationen bereitstellen. Um dies zu verhindern, kopieren Sie die Ressourcendatei zusammen mit den zugehörigen Programmquellen in eine andere Library. Wenn die Profiler Utility die Ressource liest, werden die Quellcodes aus der Ressource-Library genommen und eine Änderung der ursprünglichen Quellcodes hat keinen Einfluss auf die Statement-Abdeckung.

Die Statement-Abdeckung zeigt den Prozentsatz der Statements, die für jede Quellcodezeile der aufgerufenen Programme abgedeckt werden. Wenn das Ergebnis im Textformat geschrieben ist, werden für jedes in der Statistik aufgeführte Objekt die Objektabdeckungswerte vor den Statement-Abdeckungsdaten angezeigt. Wenn das Ergebnis im CSV-Format (kommagetrennte Werte) geschrieben wird, werden zusätzliche Informationen zur Abdeckung der Statement-Abdeckung bereitgestellt.

Die Tabelle enthält die folgenden Spalten:

Spalte | Beschreibung
--- | ---
Evaluation | Der Auswertungstyp. Mögliche Typen sind:
Program | Für Programmabdeckungsdaten.
Event (Ereignis) | Für Statement-Abdeckungsdaten.
Statistics | Für Profiler-Statistikdaten.
Object Count | Die Anzahl der in der Tabelle aufgeführten Objekte (GPs).
Library | Die Natural-Library, die die Objekte enthält.
Object | Der Name des Natural-Objekts.
Copycode ID | Der eindeutige Bezeichner der Copycode-Instanz im zugehörigen katalogisierten Objekt. Das Programm erhält die Copycode-ID `0`.
Copycode Library | Die Library, die den Copycode enthält (wenn Copycode aktiv ist).
Copycode Name | Der Name des Copycodes (wenn Copycode aktiv ist).
Line | Die Zeilennummer im Natural Source-Objekt, z. B. `0120`.
Source | Die Natural-Quellcodezeile, die eine Statement-Definition enthält, z. B. `MOVE #A TO #B`.
Coverage% | Der Prozentsatz der Statement-Abdeckung der Zeile.
Covered | Die Anzahl der in der Zeile abgedeckten (ausgeführten) Statements.
Missed | Die Anzahl der "missed" (nicht ausgeführten) Statements in der Zeile.
Total | Die Gesamtzahl aller ausführbaren Statements (Objektcode-Anweisungen) in der Zeile.
Item Coverage | Gibt an, welche Statement-Elemente (Objektcode-Anweisungen) in der Zeile abgedeckt oder nicht abgedeckt wurden ("missed"). Jedes Statement wird entweder durch `1` oder `0` dargestellt, wobei `1` ein abgedecktes Statement und `0` ein nicht abgedecktes ("missed") Statement anzeigt. Zum Beispiel: Ein Wert von `x100` zeigt an, dass nur das erste von drei Statements in der Zeile abgedeckt ist.
Mark | Zeigt den Abdeckungsstatus der Zeile an. Die Spalte `Mark` kann verwendet werden, um die Abdeckungsergebnisse in Tools wie Microsoft Excel zu visualisieren. Mögliche `Mark`-Werte sind unter Microsoft Excel-Vorlage zur Visualisierung der Abdeckungsergebnisse benutzen aufgeführt.

#### Beispiel für Statement-Abdeckung:

Im folgenden Beispiel wird angenommen, dass die Entwicklungsabteilung eine neue Version des `TESTCOVN`-Subprogramms an die Qualitätssicherungsabteilung geliefert hat. Nach dem Ausführen der Testprogramme zeigt die Statement-Abdeckung des Subprogramms das folgende Ergebnis (Textformat):

    Statement Coverage
    ------------------
    M Cov% CC-Lib   CC-Name  Line Source
    *                        0010 * Test function Coverage
    *                        0020 * Subprogram TESTCOVN
    +                        0030 DEFINE DATA
    +                        0040 PARAMETER
    +                        0050 1 FUNC     (I2)  /* Function
    +                        0060 1 RET-CODE (I4)  /* Return code
    +                        0070 END-DEFINE
    *                        0080 *
    *                        0090 /* Return 0 by default
    C 100%                   0100 RESET RET-CODE
    *                        0110 *
    C 100%                   0120 DECIDE ON FIRST VALUE OF FUNC
    P  50%                   0130   VALUE 0
    M   0%                   0140     PRINT 'Test function 0'
    P  66%                   0150   VALUE 1
    C 100%                   0160     PRINT 'Test function 1'
    C 100%                   0170   VALUE 2
    C 100%                   0180     PRINT 'Test function 2'
    C 100%                   0190   VALUE 3
    C 100%                   0200     PRINT 'Test function 3'
    C 100%                   0210   VALUE 4
    C 100%                   0220     PRINT 'Test function 4'
    C 100%                   0230   VALUE 5
    C 100%                   0240     PRINT 'Test function 5'
    C 100%                   0250   VALUE 6
    C 100%                   0260     PRINT 'Test function 6'
    C 100%                   0270   VALUE 7
    C 100%                   0280     PRINT 'Test function 7'
    C 100%                   0290   VALUE 8
    C 100%                   0300     PRINT 'Test function 8'
    P  33%                   0310   VALUE 9
    M   0%                   0320     PRINT 'New test function 9'
    C 100%                   0330   NONE VALUE
    M   0%                   0340     RET-CODE := 1 /* Unsupported function
    +                        0350 END-DECIDE
    *                        0360 *
    C 100%                   0370 END

Erläuterungen:

- Die Spalte `Mark` (`M`) zeigt an, ob eine Zeile abgedeckt (`C` = Covered), nicht abgedeckt (`M` = Missed) oder teilweise abgedeckt (`P` = Partially) ist.

- Keine Testfälle decken die Funktionen `Test function 0` und `New test function 9` ab (bezeichnet mit `M` und `0%` Abdeckung). Der Fall `NONE VALUE` wird ebenfalls nicht abgedeckt.

- Alle anderen Testfälle sind abgedeckt (bezeichnet mit `C` und `100%` Abdeckung).

- Ein Natural `VALUE`-Statement entspricht mehreren Objektcode-Statements. Die Abdeckung von `50%` und `60%` für `VALUE 0`- und `VALUE 1`-Statements zeigt an, dass nur ein Teil dieser Objektcode-Statements abgedeckt ist.

  Dies liegt daran, dass eines der generierten Objektcode-Statements aus technischen Gründen zum vorangehenden Statement und die anderen zum aktuellen `VALUE`-Statement gehören.

Infolge dieser Abdeckungsanalyse müssen die Testfälle so angepasst werden, dass auch die `Test function 0` und die `Test function 9` (und möglicherweise der Fehlerfall mit einem nicht unterstützten Funktionscode) abgedeckt sind.

### Microsoft Excel-Vorlage zur Visualisierung der Abdeckungsergebnisse benutzen

Voraussetzungen: Microsoft Excel und Natural für Windows oder Natural für Linux.

Wenn Sie das Abdeckungsergebnis mit Microsoft Excel analysieren möchten, können Sie die Microsoft Excel-Vorlage verwenden, die mit Natural für Windows und Natural für Linux geliefert wird. Führen Sie dazu die folgenden Schritte aus:

1. Führen Sie die Profiler `READ`-Funktion aus und schreiben Sie die Ausgabedaten im CSV-Format (kommagetrennte Werte) in Arbeitsdatei 7 (`Work File 7`). Zum Beispiel:

       FUNCTION=READ           /* Read Profiler Data
         RESOURCE-NAME='Test'  /* Resource name
         RESOURCE-LIB=PRFDATA  /* Resource library
         RESOURCE-TYPE=NCVF    /* Use resource type NCVF
         EVENT=ON              /* Print statement coverage
         PROGRAM=ON            /* Print program coverage
         STATISTICS=ON         /* Print statistics
         PRINT=ON              /* Write to standard output
         EXPORT=ON             /* Write to Work File 7
         FORMAT=COMMA          /* Export in CSV format

2. Falls Ihr Microsoft Excel Semikolons als Trennzeichen benötigt, geben Sie Folgendes an:

       FORMAT=SEMICOLON      /* Export in CSV format

3. Exportieren Sie die Daten von Arbeitsdatei 7 mit einem beliebigen Tool (z. B. FTP) als CSV-formatierte Datei in eine Windows-Umgebung.

4. Öffnen Sie die CSV-Datei mit Microsoft Excel.

5. Ordnen Sie die Daten neu an, so dass sich jeder Auswertungstyp (Programm, Ereignis, Statistik) auf einem eigenen Arbeitsblatt in der Microsoft Excel-Datei befindet.

6. Öffnen Sie die gelieferte Vorlage `TESTCOV.XLSX` mit Microsoft Excel. Die Vorlage ist im Unterverzeichnis `RES` (Ressourcen) der Natural-System-Library `SYSPRFLR` enthalten.

7. Kopieren Sie für jedes Arbeitsblatt das Format aus der Vorlage in Ihr Microsoft Excel:

   - Klicken Sie auf die obere linke Ecke der Tabelle in der Vorlage, um alle Daten in der Tabelle zu markieren.

   - Klicken Sie auf die Microsoft Excel-Funktion Copy format.

   - Klicken Sie auf die obere linke Ecke der Tabelle in Ihrem Arbeitsblatt, um das Format zu kopieren.

     Jetzt sind alle Einträge wie in der Vorlage formatiert. Die Quellcodezeilen sind wie folgt gefärbt und markiert:

     Farbe | Markierung | Beschreibung
     --- | --- | ---
     Grün | `C` | Alle Statements in der Zeile sind abgedeckt ("Covered").
     Gelb | `P` | Die Statements in der Zeile sind teilweise abgedeckt ("Partially").
     Rosa | `M` | Alle Statements in der Zeile werden nicht abgedeckt ("Missed").
     Grau | `*` | Ein Kommentar oder eine leere Zeile.
     Rot | `E` | Fehler aufgetreten. Zum Beispiel, wenn die Abdeckungsanalyse eine Zeilennummer gesammelt hat, aber die entsprechende Quellcodezeile nicht gefunden wird.
     Keine (weiß) | `+` | Alle anderen Zeilen, z.B. Fortsetzungszeilen eines Statement.

#### Beispiel für ein Microsoft Excel-Arbeitsblatt

Das folgende Beispiel zeigt einen Arbeitsblattauszug der Codeabdeckung für das Programm `TESTCOVP` mit inkludiertem Copycode `TESTCOVC` ohne die Spalten, die den Objektnamen und die Library enthalten:

Erläuterungen:

- Die Quellcodezeilen des Copycode `TESTCOVC` sind in den Quellcode des Programms `TESTCOVP` direkt nach dem entsprechenden `INCLUDE`-Statement eingefügt.

- Die (rosa) Zeilen `40` bis `70` des Copycodes enthalten nicht abgedeckte ("missed") Statements, was bedeutet, dass sie im Testlauf nicht ausgeführt wurden.

- Alle anderen Zeilen (grün), die ausführbare Statements enthalten, sind abgedeckt.

- Ein `FOR`-Statement entspricht vier Objektcode-Statements. Alle vier Statements werden, wie in `x1111` in der Spalte Item Coverage angezeigt, behandelt.

### Statistiken

Wenn `STATISTICS=ON` angegeben wird, werden die Profiler-Statistiken aufgelistet.

Wenn die Daten im CSV-Format (kommagetrennte Werte) exportiert werden, werden die Eigenschaften und Werte der Profiler-Statistiken als separate Spalten zum Ereignis- oder Konsolidierungs-Trace hinzugefügt. Wenn Abdeckungsdaten im CSV-Format exportiert werden, werden die Statistikwerte in zusätzlichen Zeilen hinzugefügt, die durch den Wert `Statistics` in der Spalte `Evaluation` gekennzeichnet sind.

> Beispiel für Statistik:

>   Das folgende Beispiel zeigt einen Auszug aus den Statistikdaten einer NPRC-Ressourcendatei:

>       ***************************************************************************
>       * 11:02:39          ***** NATURAL PROFILER UTILITY *****         2015-08-05
>       * User SAGTEST1                - Statistics -                       RESDATA
>       *
>       * General Info
>       * Machine class ...................... MAINFRAME
>       * Environment ........................ Batch
>       ...
>       * Profiler Resource File
>       * Resource name ...................... EDM-MONITOR.nprc
>       * Resource type ...................... Natural Profiler Resource Consolidated
>       * Resource allocation date ........... 2015-07-27 10:36:19.6
>       * Resource size (bytes) .............. 565160
>       ...
>       *
>       * Monitor Session
>       * Monitor start time ................. 2015-07-27 10:20:57.2
>       * Monitor end time ................... 2015-07-27 10:21:42.8
>       * Monitor elapsed time (sec) ......... 45.519604
>       *
>       * Trace Session
>       * First library ...................... SYSEDMD
>       * First program ...................... MENU
>       * Highest level ...................... 10
>       * Trace start time ................... 10:20:58.219911
>       * Trace end time ..................... 10:21:42.248348
>       * Trace elapsed time (sec) ........... 44.028437
>       ...
>       * Data Processing
>       * Number of events ................... 895936
>       ...
>       * Data Consolidation
>       * Consolidation ...................... ON
>       * Consolidation records .............. 21624
>       * Consolidation elapsed time (sec) ... 15.643516
>       * Consolidation factor ............... 41.4
>       * Consolidation records/block ........ 191.3
>       * Bytes/consolidation record ......... 25.8
>       *
>       ...
>       ***************************************************************************

>   Erläuterungen:

>   - Die Ressource `EDM-MONITOR.nprc` wurde am 27.07.2015 um 10:36:19 Uhr zugewiesen und hat eine Größe von 565160 Bytes.

>   - Die profilierte Anwendung lief am selben Tag um 10:20:58 Uhr für 44,0 Sekunden und startete mit dem Programm `MENU` in der Library `SYSEDMD`.

>   - Die profilierte Anwendung generierte insgesamt 895936 Natural-Ereignisse. Die Datenkonsolidierung dauerte 15,6 Sekunden und reduzierte die Anzahl der Datensätze auf 21624, was einem Konsolidierungsfaktor von 41,4 entspricht.

>   Alle bereitgestellten Statistikinformationen werden im Abschnitt Profiler-Statistikdaten erläutert.

## Profiler-Ressourcendateien verwalten

Im Allgemeinen werden Profiler-Ressourcen mit der Natural Utility SYSMAIN, NaturalONE oder Natural Studio als NPRF-, NPRC- oder NCVF-Dateien aufgeführt. Diese Tools bieten auch Funktionen zum Kopieren, Umbenennen und Löschen von Ressourcendateien.

Die Natural Profiler Rich GUI-Schnittstelle listet auch die Profiler-Ressourcen auf und bietet eine Funktion zum Löschen einer Profiler-Ressourcendatei.

Darüber hinaus können Sie Profiler Utility-Funktionen verwenden, um Profiler-Ressourcendateien aufzulisten und zu löschen.

Dieser Abschnitt behandelt die folgenden Themen:

- Profiler-Ressourcendateien auflisten

- Löschen einer Ressourcendatei

### Profiler-Ressourcendateien auflisten

Die Funktion `LIST` der Profiler Utility listet die Profiler-Ressourcendateien einer bestimmten Natural-Library sowie das Datum und die Uhrzeit auf, zu der die Ressourcendateien zugeordnet wurden.

Syntax von `LIST`:

`FUNCTION=LIST`
[`RESOURCE-LIB`=library-name]
[`RESOURCE-TYPE`={`NPRF`|`NPRC`|`NCVF`}]
[`PRINT`={`ON`|`OFF`}]
[`EXPORT`={`ON`|`OFF`}]
[`FORMAT`={`TEXT`|`COMMA`|`SEMICOLON`}]

Syntax-Beschreibung:

Schlüsselwort für LIST | Wert | Beschreibung
--- | --- | ---
`RESOURCE-LIB` | `library-name` | Der Name der Natural-Library, die die Profiler-Ressourcendateien enthält, die Sie auflisten möchten. Standardwert: Der Name der aktuellen Library.
`RESOURCE-TYPE` |  | Gibt den Typ der aufzulistenden Ressourcendateien an: NPRF, NPRC oder NCVF. Standardeinstellung: Alle Typen werden aufgelistet, wenn hier kein Wert angegeben ist.
`NPRF` | Listet nur NPRF-Ressourcendateien (Natural Profiler Resource File) auf.
`NPRC` | Listet nur NPRC-Ressourcendateien (Natural Profiler Resource Consolidated) auf.
`NCVF` | Listet nur NCVF-Ressourcendateien (Natural Code Coverage File) auf.
`PRINT` |  | Gibt an, ob das Ergebnis in die Standardausgabe geschrieben wird.
`ON` | In die Standardausgabe schreiben.
`OFF` | Nicht in die Standardausgabe schreiben.
`EXPORT` |  | Gibt an, ob das Ergebnis in Natural-Arbeitsdatei (`Work File`) 7 geschrieben wird.
`ON` | In Natural-Arbeitsdatei 7 schreiben.
`OFF` | Nicht in Natural-Arbeitsdatei 7 schreiben.
`FORMAT` |  | Gibt das Format an, in dem die exportierten Daten in Arbeitsdatei 7 geschrieben werden.
`TEXT` | Daten im Freitextformat schreiben.
`COMMA` | Daten im CSV-Format schreiben mit einem Komma (`,`), das als Trennzeichen verwendet wird.
`SEMICOLON` | Daten im CSV-Format schreiben mit einem Semikolon (`;`), das als Trennzeichen verwendet wird.

> Beispiel für LIST:

>   Das folgende Beispiel listet die NPRF-Profiler-Ressourcendateien der Library `PRFDATA` auf. Die Liste wird in die Standardausgabe und in die Arbeitsdatei 7 im Textformat geschrieben.

>       FUNCTION=LIST           /* List Profiler resource files
>         RESOURCE-LIB=PRFDATA  /* Resource library
>         RESOURCE-TYPE=NPRF    /* List NPRF resource files
>         PRINT=ON              /* Write to standard output
>         EXPORT=ON             /* Write to Work File 7
>         FORMAT=TEXT           /* Export in text format

>   Ausgabe:

>       Natural Profiler Resources
>       --------------------------
>       Library: PRFDATA
>       Resource type: nprf

>       Count Date       Time     Name
>           1 2015-06-15 14:32:18 Hello1.nprf
>           2 2015-06-26 18:39:57 QDTest1.nprf
>           3 2015-06-24 22:00:35 QETest1.nprf
>           4 2015-06-30 14:32:42 Studio.nprf
>           5 2015-07-02 15:02:32 Test.nprf

>       Number of nprf resources in library PRFDATA: 5

### Löschen einer Ressourcendatei

Wenn Sie eine große Ressourcendatei löschen oder ersetzen, kann es vorkommen, dass Sie die folgende Fehlermeldung erhalten:

`Error - NAT3047 Maximum value for Adabas parameter NISNHQ was exceeded.`

(Fehler - NAT3047 Maximalwert für den Adabas-Parameter NISNHQ wurde überschritten.)

In diesem Fall haben Sie drei Möglichkeiten:

1. Bitten Sie Ihren Datenbankadministrator, den Wert des Adabas-Parameters `NISNHQ` zu erhöhen.

2. Benutzen Sie die Delete-Funktion der Profiler Rich GUI-Schnittstelle. Sie verwendet die gleiche Technik wie die `DELETE`-Funktion der Profiler Utility.

3. Benutzen Sie die `DELETE`-Funktion der Profiler Utility, um ein "unsauberes" Löschen der Ressource durchzuführen. Diese Funktion löscht die Ressource nicht in einem einzigen großen Schritt, sondern in Blöcken (mit einem Ende der Transaktion nach jedem Block). Wenn die `DELETE`-Funktion aus irgendeinem Grund fehlschlägt, müssen Sie sie wiederholen, um inkonsistente Daten zu beseitigen.

   Syntax von `DELETE`:

   `FUNCTION=DELETE`
   [`RESOURCE-NAME`=resource-name]
   [`RESOURCE-TYPE`={`NPRF`|`NPRC`|`NCVF`|`NPRK`|`NONE`}]
   [`RESOURCE-LIB`=library-name]

   Syntax-Beschreibung:

   Schlüsselwort für DELETE | Wert | Beschreibung
   --- | --- | ---
   `RESOURCE-NAME` | `resource-name` | Der Name der Profiler-Ressourcendatei, die Sie löschen möchten. Mögliche Erweiterungen sind `.nprf` (Natural Profiler resource file), `.nprc` (Natural Profiler resource consolidated), .ncvf (Natural code coverage file) oder `.nprk` (Natural Profiler resource key). Wenn keine Erweiterung angegeben wurde, wird die mit dem Schlüsselwort `RESOURCE-TYPE` angegebene Erweiterung automatisch hinzugefügt. Standardwert: keiner Wenn `RESOURCE-TYPE=NPRK` angegeben ist und kein `RESOURCE-NAME`, wird der Name der Profiler-Ressourcendatei, die den NaturalONE Profiler-Schlüssel enthält, als Ressourcenname verwendet.
   `RESOURCE-TYPE` |  | Der Standard-Ressourcentyp (Erweiterung), der gelöscht werden soll, wenn keine Erweiterung mit `RESOURCE-NAME` angegeben ist. Standardwert: `NPRF`
   `NPRF` | Der Standard-Ressourcentyp ist NPRF mit der Erweiterung `.nprf`.
   `NPRC` | Der Standard-Ressourcentyp ist NPRC mit der Erweiterung `.nprc`.
   `NCVF` | Der Standard-Ressourcentyp ist NCVF mit der Erweiterung `.ncvf`.
   `NPRK` | Der Standard-Ressourcentyp ist NPRK mit der Erweiterung `.nprk`.
   `NONE` | Die Ressource mit dem Kurznamen `resource-name` wird gelöscht.
   `RESOURCE-LIB` | `library-name` | Der Name der Natural-Library, die die Ressource enthält, die Sie löschen möchten. Standardwert: Der Name der aktuellen Library

#### Beispiel für DELETE

    FUNCTION=DELETE         /* Delete a Profiler resource file
      RESOURCE-NAME='Test'  /* Resource name
      RESOURCE-TYPE=NPRF    /* Resource type
      RESOURCE-LIB=PRFDATA  /* Resource library

## Profiler-Eingaben aus Natural-Textobjekten einfügen

Der Profiler kann Eingabedaten von einem Natural-Textobjekt lesen. Die Syntax der Daten im Natural-Textobjekt ist die gleiche wie für den primären Kommandoeingabedatensatz CMSYNIN (siehe Syntax und Schlüsselwörter).

Um Profiler-Eingabedaten aus einem Natural-Textobjekt zu inkludieren:

- Geben Sie die folgenden Profiler-Schlüsselwörter ein:

      INCLUDE-LIB=library-name
      INCLUDE=object-name

  Die Schlüsselwortsyntax wird in Profiler Utility-Schlüsselwörter erklärt.

Die Daten im Natural-Textobjekt werden den Profiler-Eingabedaten in der Zeile nach dem `INCLUDE`-Schlüsselwort hinzugefügt. Die Profiler-Eingabedaten können mehrere `INCLUDE`-Schlüsselwörter enthalten, und die zugehörigen Natural-Textobjekte können auch `INCLUDE`-Schlüsselwörter enthalten. Wenn ein Natural-Textobjekt ein `END-PROFILER`-Schlüsselwort enthält, wird die Profiler Utility beendet und alle verbleibenden Daten in dem (den) Natural-Textobjekt(en) werden ignoriert.

In der Natural-System-Library `SYSPRFLR` werden Textobjekte ausgeliefert, deren Namen mit `X` beginnen, und die als Profiler-Eingabe verwendet werden können. Die einzelnen Profiler-Funktionen, die sie ausführen, werden in den Quellcodes dieser Objekte beschrieben.

Wir empfehlen, keine Objekte in der System-Library `SYSPRFLR` zu ändern, da sie überschrieben oder entfernt werden können, wenn eine neue Natural-Version installiert wird. Kopieren Sie die erforderlichen Objekte in eine User Library, bevor Sie sie bearbeiten.

### Beispiele für INCLUDE

Das folgende Beispiel fügt den Inhalt des Natural-Textobjekts `MYPROF` aus der Library `MYLIB` zu den Profiler-Eingabedaten hinzu:

    INCLUDE-LIB=MYLIB
    INCLUDE=MYPROF

Im folgenden Beispiel wird der Inhalt des Natural-Textobjekts `XINIT` aus der Library `SYSPRFLR` zu den Profiler-Eingabedaten hinzugefügt. Das Objekt initialisiert und startet die Profil-Erstellung ohne Konsolidierung und ohne Statement-Ereignissammlung. Darüber hinaus wird die Profiler Utility beendet, so dass nach dem `INCLUDE`-Schlüsselwort keine weitere Profiler-Eingabe erwartet wird.

    INCLUDE=XINIT

## Ereignisverfolgung (Event-Trace)

Der Natural Profiler sammelt detaillierte Informationen über jedes Natural-Ereignis, das auftritt, während eine Natural-Anwendung ausgeführt wird. Diese Daten können in der Ereignisverfolgung (Event-Trace) eingesehen werden.

Die für die Natural-Code-Abdeckung geschriebenen Traces werden im Abschnitt Ablaufverfolgung (Tracing) beim Messen der Natural-Codeabdeckung beschrieben.

Die Profiler Utility bietet die folgenden Optionen zum Schreiben einer Profiler-Ereignisverfolgung:

- Schreiben des Trace in die Standardausgabe der Profiler-Monitor-Session (`MONPRINT`-Dataset), während die Anwendung profiliert wird.

- Schreiben des Trace in die Standardausgabe, während die NPRF-Daten konsolidiert werden. In diesem Fall zeigt die Ereignisverfolgung die Delta-Werte der verstrichenen (elapsed) Zeit und der CPU-Zeit anstelle von ereignisspezifischen Daten.

- Schreiben des Trace beim Lesen einer Profiler NPRF-Ressourcendatei mit der Profiler Utility-Funktion `READ`.

Anmerkung
Die Ereignisverfolgung (Event-Trace) kann auch in NaturalONE aufgelistet werden.

Um die die Ereignisverfolgung zu aktivieren:

- Geben Sie das folgende untergeordnete Schlüsselwort der `INIT`-Funktion der Profiler Utility ein:

      TRACE-EVENT=ON

  Geben Sie das folgende untergeordnete Schlüsselwort der `CONSOLIDATE`-Funktion der Profiler Utility ein:

      TRACE-EVENT=ON

  Geben Sie das folgende untergeordnete Schlüsselwort der `READ`-Funktion der Profiler Utility ein:

      EVENT=ON

Die Profiler-Ereignisverfolgung enthält die folgenden Spalten:

Spalte | Beschreibung
--- | ---
Count | Ereigniszähler.
Time | Zeitpunkt des Ereignisses. Einheit: Stunde:Minute:Sekunde.Mikrosekunden
CPU-Time | Session-CPU-Zeit. Einheit: Mikrosekunden
Ev | Ereignistyp. Siehe Gesammelte Ereignisse und Daten.
Lev | Programmebene.
Library | Programm-Library.
Program | Programmname (Natural-Objekt) .
Line | Zeilennummer des ausgeführten Programm-Statement.
CC-Lib | Copycode-Library (wenn Copycode aktiv ist).
CC-Name | Copycode-Name (wenn Copycode aktiv ist).
Statement | Natural-Statement, das zurzeit ausgeführt wird. Aus technischen Gründen gibt es keine Eins-zu-Eins-Beziehung zwischen einem Natural-Quellcode-Statement und dem entsprechenden Objektcode im katalogisierten Objekt. Daher können sich die in der Profiler-Ereignisverfolgung aufgeführten Anweisungen von den Anweisungen im Quellcode unterscheiden.
Local-Data | Ereignisspezifische Daten wie die Adabas-Datenbankkennung (DBID) und die Dateinummer (FNR). Diese Daten werden nur für die Funktionen INIT und READ der Profiler Utility angezeigt.
Elapsed (ms) | Verstrichene Zeit für die Verarbeitung des Ereignisses. Einheit: Millisekunden Diese Daten werden nur für die `CONSOLIDATE`-Funktion der Profiler Utility angezeigt.
CPU-Delta | CPU-Zeit, die für die Verarbeitung des Ereignisses aufgewendet wurde. Einheit: Millisekunden

#### Beispiel für eine Ereignisverfolgung (Event Trace)

Im folgenden Beispiel druckt die Funktion `READ` der Profiler Utility das Event Trace aus:

    FUNCTION=READ               /* Read event data
      EVENT=ON                  /* Write event trace

Das Event Trace wird in die Standardausgabe geschrieben:

    Count Time              CPU-Time (ms) Ev Lev Library  Program  Line CC-Lib   CC-Name  Statement  Local-Data
        0 17:38:17.200951          42.324 MP 003 SYSPRFLR PRBINIT  8370                   Call       Monitor pause requested
        0 17:38:17.204508          43.471 MP 003 SYSPRFLR PRBSTART 1760                   Call       Start of block filter
       11 17:38:17.218379          48.874 DB 000                   0000                              00010/00032 S1
       12 17:38:17.218941          48.897 DA 000                   0000                              00010/00032 S1   Rsp: 0
       13 17:38:17.218944          48.910 PL 000                   0000                              Execute PRFDEMO/XPROF
       14 17:38:17.218945          48.916 PS 001 PRFDEMO  XPROF    0000                   PgmStart   00010/00032 Type: P
       15 17:38:17.218956          48.979 IB 001 PRFDEMO  XPROF    0300                   Input      Out: 133 In: 0
       16 17:38:17.219235          49.046 IA 001 PRFDEMO  XPROF    0300                   Input      Out: 133 In: 80
       17 17:38:17.219258          49.182 DB 001 PRFDEMO  XPROF    0370                   Callnat    00010/00032 S1
       18 17:38:17.220426          49.211 DA 001 PRFDEMO  XPROF    0370                   Callnat    00010/00032 S1   Rsp: 0
       19 17:38:17.220427          49.216 DB 001 PRFDEMO  XPROF    0370                   Callnat    00010/00032 S1
       ...

## Ablaufverfolgung (Tracing) beim Messen der Natural-Codeabdeckung

Beim Messen der Natural-Codeabdeckung (Code Coverage) stehen zwei Trace-Optionen zur Verfügung:

- Die Ereignisverfolgung (Event Trace) listet alle überwachten Ereignisse auf. Dies sind standardmäßig die Ereignisse Program Start (`PS`) und Natural Statement (`NS`). Wenn der Profiler das GP liest, schreibt er außerdem einen Ereignisverfolgungseintrag für jedes im GP gefundene Statement. Diese Einträge werden durch den Pseudo-Ereignistyp `GP` angezeigt.

- Die Codeabdeckungsverfolgung (Coverage Trace) listet alle Datensätze auf, die in die Natural-Abdeckungsressourcendatei (Natural Coverage Resource File) geschrieben werden.

Wenn die Abdeckungsressource mit der Profiler Utility-Funktion `READ` gelesen wird, ist die folgende Trace-Option verfügbar:

- Die interne Datenverfolgung listet alle Datensätze auf, die aus der Natural-Abdeckungsressourcendatei gelesen werden.

Um die Ablaufverfolgung für die Codeabdeckung zu aktivieren:

1. Aktivieren Sie die Ereignisverfolgung, indem Sie das folgende untergeordnete Schlüsselwort der `COVERAGE`-Funktion der Profiler Utility angeben:

       TRACE-EVENT=ON

2. Aktivieren Sie die Ablaufverfolgung für die Codeabdeckung, indem Sie das folgende untergeordnete Schlüsselwort der `READ`-Funktion der Profiler Utility angeben:

       TRACE-COVERAGE=ON

3. Aktivieren Sie die interne Ablaufverfolgung, indem Sie das folgende untergeordnete Schlüsselwort der `READ`-Funktion der Profiler Utility angeben:

       TRACE=9

Die folgende Tabelle beschreibt die in den Ablaufverfolgungen (Traces) aufgeführten Eigenschaften und gibt mit (X) an, für welchen Trace-Typ die Daten bereitgestellt werden.

Event Trace = Ereignisverfolgung, Coverage Trace = Codeablaufverfolgung, Internal Trace = Interne Ablaufverfolgung:

Eigenschaft | Event Trace | Coverage Trace | Internal Trace | Beschreibung
--- | --- | --- | --- | ---
Count | X | X | X | Der Ereigniszähler.
Ev | X | X | X | Der Ereignistyp. Siehe Gesammelte Ereignisse und Daten. Der Pseudo-Ereignistyp `GP` zeigt ein im GP gelesenes Statement an.
Library | X | X | X | Der Name der Natural-Library, die das Programm/Objekt enthält.
Program/Object | X | X | X | Der Name des Natural-Programms/Objekts.
Ty | - | X | X | Der Objekttyp, z.B. `P`, für Programm.
CC-Lib | X | X | X | Der Name der Natural-Library, die den Copycode enthält (wenn Copycode aktiv ist).
CC-Name | X | X | X | Der Name des Copycodes.
Line | X | X | X | Die Nummer der Quellcodezeile.
Statement | X | X | - | Das ausgeführte Natural-Statement. Aus technischen Gründen gibt es keine Eins-zu-Eins-Beziehung zwischen einem Natural-Quellcode-Statement und dem entsprechenden Objektcode im katalogisierten Objekt. Daher können sich die in der Profiler-Ereignisverfolgung aufgeführten Statements von den Statements in der Quelle unterscheiden. Für die Codeabdeckung wird der Statement-Objektcode nicht in der Ressourcendatei gespeichert. Daher kann er nur während der Datensammlung aufgelistet werden.
GP-Offset | X | - | - | Der Offset im GP. Er identifiziert eindeutig das Statement-Element zum Zeitpunkt der Ausführung.
Size | X | - | - | Die Größe des Statement im GP.
CC-ID | - | X | X | Die Copycode-ID. Sie identifiziert die Copycode-Instanz im GP eindeutig. Das Programm erhält die Copycode-ID `0`.
Par-CC | - | X | X | Nur für Copycode. Die übergeordnete Copycode-ID, die die Copycode-ID des Objekts/Copycodes ist, das/der den aktuellen Copycode enthält.
INCL | - | X | - | Nur für Copycode. Die Zeilennummer des `INCLUDE`-Statement, das den Copycode enthält.
FirstS | - | X | X | Die Kennung (ID) des ersten Statement des Objekts oder Copycodes.
Stmts | - | X | X | Die Gesamtzahl der ausführbaren Statements im Objekt, wobei alle `INCLUDE`-Statements aufgelöst werden.
Item | X | X | X | Die Elementkennung (Item ID) des Statement. Sie identifiziert eindeutig das Statement in der Ressourcendatei.
Cover | X | X | X | Das Abdeckungskennzeichen (Flag) des Statement: (`0` oder `1`). Wenn das GP gelesen wird, werden alle Flags mit `0` initialisiert. Immer wenn ein Statement ausgeführt wird, wird das Flag auf `1` gesetzt.
Same | X | - | - | Wenn das GP gelesen wird, zeigt es an, wie viele nachfolgende Statements den gleichen Objektcode und die gleiche Zeilennummer haben. Diese Statements werden verworfen. Immer wenn ein verworfenes Statement überwacht wird, wird das Statement, das sich vor dem verworfenen Statement befindet, als abgedeckt markiert. Die Spalte zeigt den GP-Offset des markierten Statement.

#### Beispiel für einen Coverage Trace

Im folgenden Beispiel schreibt die Funktion `COVERAGE` der Profiler Utility die Abdeckungsverfolgung:

    FUNCTION=COVERAGE           /* Initialize code coverage
      TRACE-COVERAGE=ON         /* Write coverage trace

Das Coverage Trace wird in die Standardausgabe der Profiler-Monitor-Session (`MONPRINT`-Dataset) geschrieben:

                            Natural Coverage Trace
                            ----------------------
    Count Ev Library  Program  Ty CC-Lib   CC-Name  Line Statement  CC-ID Par-CC INCL  FirstS  Stmts    Item Cover
        1 PI COVDEMO  TESTCOVN N                                        0      0 0000       1     44         1
        2 NS COVDEMO  TESTCOVN                      0130 Compute        0                                  4 0
        3 NS COVDEMO  TESTCOVN                      0140 Print          0                                  5 0
        4 NS COVDEMO  TESTCOVN                      0150 Goto           0                                  6 0
        5 NS COVDEMO  TESTCOVN                      0310 If             0                                 39 0
        6 NS COVDEMO  TESTCOVN                      0310 Compute        0                                 40 0
        7 NS COVDEMO  TESTCOVN                      0320 Print          0                                 41 0
        8 NS COVDEMO  TESTCOVN                      0340 Compute        0                                 43 0
        9 NS COVDEMO  TESTCOVN                      0100 Reset          0                                  1 1
       10 NS COVDEMO  TESTCOVN                      0120 Reset          0                                  2 1
       11 NS COVDEMO  TESTCOVN                      0130 If             0                                  3 1
       12 NS COVDEMO  TESTCOVN                      0150 If             0                                  7 1
    ...

## Interner Trace

Das Profiler-interne Trace schreibt Profiler-Meldungen wie z.B. Fehler oder Warnungen.

Das interner Trace kann für Folgendes aktiviert werden:

- Die Profiler-Monitor-Sessions (Datensammlung/Data Collection). Die Daten werden in die Standardausgabe der Monitor-Session geschrieben.

- Die Profiler-Datenverarbeitungsfunktionen. Die Daten werden in die Standardausgabe geschrieben.

- Die Profiler Rich GUI-Schnittstelle bietet ein aufklappbares Feld für die interne Trace-Aktivierung. Die Daten werden in die Standardausgabe geschrieben.

Um die interne Ablaufverfolgung für die Profiler-Trace-Session oder die Datenverarbeitungsfunktionen zu aktivieren:

- Geben Sie das folgende Profiler-Schlüsselwort ein:

      TRACE=n

  Dabei ist n die Trace-Ebene (siehe Trace-Ebenen).

  Anmerkungen:

  1. Standardmäßig (wenn `TRACE` nicht angegeben ist) wird Trace-Ebene 2 (Warnungen) verwendet.
  2. Die Ablaufverfolgung wird aktiviert, sobald das Schlüsselwort `TRACE` angegeben ist. Es wird daher empfohlen, das `TRACE`-Schlüsselwort möglichst bald anzugeben.
  3. Wenn Sie die Profiler Utility mehrmals in dem Job ausführen, müssen Sie bei jeder Ausführung das Schlüsselwort `TRACE` angeben.

Um die interne Ablaufverfolgung für die Profiler-Monitor-Session zu aktivieren:

- Geben Sie das folgende untergeordnete Schlüsselwort der `INIT`- oder der `COVERAGE`-Funktion der Profiler Utility ein:

      TRACE-MONITOR=n

  Dabei ist n die Trace-Ebene (siehe Trace-Ebenen).

  Anmerkung
  Standardmäßig (wenn `TRACE-MONITOR` nicht angegeben ist) wird Trace-Ebene 3 (Statistik) verwendet.

### Trace-Ebenen

Die Trace-Ebene, die von den Profiler Trace- und Monitor-Sessions und von den Profiler-Datenverarbeitungsfunktionen verwendet werden, sind in der folgenden Tabelle aufgeführt. Im Allgemeinen enthält eine höhere Trace-Ebene auch die Informationen der unteren Trace-Ebenen. Wenn Sie beispielsweise Trace-Ebene 3 (Statistik) auswählen, werden auch Fehlermeldungen und Warnungen protokolliert.

Wir empfehlen, mindestens Trace-Ebene 2 (Warnungen) zu verwenden, damit Fehlermeldungen und Warnungen protokolliert werden. Für die Profiler-Monitor-Session ist Trace-Ebene 3 (Statistik) eine gute Wahl. Dann werden die Statistiken des Profiler-Laufs gedruckt (siehe Profiler-Statistiken). Höhere Trace-Ebenen für die Monitor-Session können extrem ausführlich sein und die Ausgabe kann mit dem Ereignis-Trace (falls aktiviert) vermischt werden.

Trace-Ebene | Name | Beschreibung
--- | --- | ---
0 | No trace | Die interne Ablaufverfolgung des Profilers ist deaktiviert.
1 | Error | Fehlermeldungen werden protokolliert.
2 | Warning | Warnungen werden protokolliert.
3 | Statistics | Trace-Session: Die Werte, die für die Profiler Utility -Funktion `INIT` oder `COVERAGE` verwendet werden, werden gedruckt. Monitor-Session: Die Profiler-Statistikdaten werden gedruckt. Datenkonsolidierung: Die Profiler-Statistikdaten werden einschließlich der Konsolidierungsstatistiken gedruckt.
4 | Function | Nachrichten für verwendete Profiler Utility-Schlüsselwörter (`FUNKTION`, `FILTER` usw.) werden protokolliert.
5 | Block | Die Statistiken für jeden Datenblock, der in die Profiler-Ressourcendatei geschrieben wurde, werden gedruckt.
6 | Details | Detaillierte Informationen werden protokolliert.
7 |  | Nicht benutzt.
8 |  | Nicht benutzt.
9 | Data | Abdeckungsressourcendaten beim Lesen einer NCVF-Abdeckungsressourcendatei verfolgen.
10 | Internal | Interne Verwendung.

#### Beispiel

Im folgenden Beispiel wird das interne Trace des Profilers für die Trace-Session auf Ebene `4` (Funktion) gesetzt:

    * Set Profiler internal trace
    TRACE=4                     /* Trace level

Ausgabe der Profiler-Trace-Session für Trace-Ebene 4:

    PRBMAIN : Profiler trace level: 4
    PRBMAIN : Profiler On-Error: Terminate
    ***************************************************************************
    * 15:45:14          ***** NATURAL PROFILER UTILITY *****         2014-12-17
    * User SAGPRFD1               - Function INIT -                     PRBINIT
    *
    * Keyword              Wert
    * -------------------- ----------------------------------------------------
    * Resource             ON
    * Resource-Lib         SAGPROF
    * Resource-Name        Test01.nprf
    * Replace              Y
    * Wait-Full            60
    * Wait-Empty           60
    * Sampling             OFF
    * Consolidate          OFF
    * Trace-Monitor        5
    * Trace-Event          OFF
    * Trace-Consolidate    OFF
    * -------------------- ----------------------------------------------------
    ***************************************************************************
    PRBINIT : Profiler INIT function - Start monitor session.
    PRBINIT : Profiler INIT function - Monitor session started. Time: 1.0 sec.
    PRBINIT : Set trace session Id ...: 0000000000000001
    PRBINIT : Set monitor session Id .: 0000000100000000
    PRBINIT : Trace session successfully initialized.
    PRBFEVEN: Event filter: SI ST DB DA PL PS PT PR IB IA E CB CA U RS RI RO NS
    PRBSTART: Profiling started.
    PRBMAIN : Profiler - End of input.
    ***************************************************************************
    ...
    Output of the application
    ...

## Profiler-Statistikdaten

Zusätzlich zu den Ereignisdaten sammelt der Profiler statistische Daten, die in die Profiler-Ressourcendatei geschrieben werden.

Die Profiler Utility bietet die folgenden Optionen zum Schreiben und Anzeigen von Profiler-Statistikdaten:

- Statistikdaten in die Standardausgabe der Profiler-Monitor-Session (`MONPRINT`-Dataset) schreiben, während die Anwendung profiliert wird oder die Messung der Codeabdeckung durchgeführt wird.

- Statistikdaten in die Standardausgabe schreiben, während die Daten konsolidiert werden.

- Statistikdaten schreiben, während eine Profiler-Ressourcendatei mit der Profiler Utility-`READ`-Funktion gelesen wird.

- Eine Ressource über die Natural Profiler Rich GUI-Schnittstelle auswählen, um die entsprechenden Eigenschaften und Statistiken anzuzeigen.

Um Profiler-Statistikdaten zu schreiben, führen Sie einen der folgenden Schritte aus:

- Geben Sie das folgende untergeordnete Schlüsselwort der `INIT`- oder der `COVERAGE`-Funktion der Profiler Utility ein:

      TRACE-MONITOR=3

  oder eine höhere Trace-Ebene (siehe Trace-Ebenen). Trace-Ebene 3 ist auch die Standardebene für die Profiler-Monitor-Session.

- Geben Sie das folgende Schlüsselwort ein, bevor Sie die `CONSOLIDATE`-Funktion der Profiler Utility starten:

      TRACE=3

  oder eine höhere Trace-Ebene (siehe Trace-Ebenen).

- Geben Sie das folgende untergeordnete Schlüsselwort der `READ`-Funktion der Profiler Utility ein:

      STATISTICS=ON

Die Profiler-Statistikdaten werden in Kategorien angezeigt, wobei die Eigenschaften eines ähnlichen Typs zusammengefasst werden. Folgende Kategorien stehen zur Verfügung:

- Allgemeine Informationen

- Profiler-Ressourcendatei

- Monitor-Session

- Trace-Session

- Datenverarbeitung

- Ereignistyp-Statistiken

- Monitor-Pause-Statistiken

- Datenkonsolidierung

- Abdeckung (Coverage)

- Transaktionen

Anmerkung
Die im folgenden Abschnitt aufgeführten Eigenschaften sind die Eigenschaften, die der Profiler in allen Umgebungen bereithält. Die Profiler-Statistiken enthalten nur die Eigenschaften, die für den aktuellen Lauf relevant sind. Daher werden nicht alle im Abschnitt aufgeführten Eigenschaften in jedem Fall angezeigt.

### Allgemeine Informationen

Informationen zur Umgebung und Natural Profiler anzeigen.

Eigenschaft | Beschreibung
--- | ---
Machine class | Der Name der Maschinenklasse, auf der die Natural-Anwendung läuft.
Environment | Die Umgebung, in der die Natural-Anwendung läuft, z.B. NaturalONE, Batch oder RPC.
Codepage | Die Codepage, die während der Überwachung der Natural-Anwendung verwendet wurde.
User | Die Kennung (ID) des Benutzers, der die Anwendung ausführt (Wert der Systemvariablen `*USER`). Bei einem Batch-Job kann es der Name des Jobs sein.
Profiler version | Die interne Version des Profilers. NaturalONE-Umgebung: Die Version des Profilers auf dem Server.
Profiler revision | Die interne Revision des Profilers.
Profiler revision date | Datum und Uhrzeit der Erstellung der Profiler-Revision.
Profiler client version | NaturalONE-Umgebung: Die Version des Profiler-Clients.
Profiler trace library | NaturalONE-Umgebung: Der Name der Natural-Library, die das interne Profiler-Trace und das Profiler-Ereignis-Trace enthält.
Profiler trace level | Die Ebene des internen Trace des Profilers.
Profiler trace member | NaturalONE-Umgebung: Der Name des Natural-Textobjekts, das das interne Profiler-Trace enthält.
Profiler event trace | Zeigt an, ob die Profiler-Ereignisverfolgung aktiviert wurde (`ON`/`OFF`).
Profiler event trace member | NaturalONE-Umgebung: Der Name des Natural-Textobjekts, das die Profiler-Ereignisverfolgung enthält.
Utility trace level | NaturalONE-Umgebung: Die Ebene des Natural Utility Trace.

### Profiler-Ressourcendatei

Informationen zu Profiler-Ressourcendateien anzeigen.

Eigenschaft | Einheit | Beschreibung
--- | --- | ---
Resource name |  | Der Name der Natural Profiler-Ressourcendatei.
Resource type |  | Der Typ der Natural Profiler-Ressourcendatei: Natural Profiler Resource File (NPRF), Natural Profiler Resource Consolidated (NPRC) oder Natural Code Coverage File (NCVF).
Resource short name |  | Großrechner: Der Kurzname der Natural Profiler-Ressourcendatei.
Resource library |  | Der Name der Natural-Library, die die Natural Profiler-Ressourcendatei enthält.
Resource DBID |  | Die Datenbankkennung (DBID) der Natural-Library, die die Natural Profiler-Ressourcendatei enthält.
Resource FNR |  | Die Dateinummer (FNR) der Natural-Library, die die Natural Profiler-Ressourcendatei enthält.
Resource allocation date | yyyy-mm-dd hh:ii:ss.t | Datum und Uhrzeit, wann die Natural Profiler-Ressourcendatei angelegt wurde.
Resource size | Bytes | Die Größe der Natural Profiler-Ressourcendatei. Umfasst die Ressourcen-Headers, die Ereignisdaten und die Statistikdaten. Die Ressourcengröße wird unabhängig davon berechnet, ob die Ressource angelegt wird oder nicht.
Resource block size | Bytes | Die maximale Größe eines Ressourcenblocks. Ein Ressourcenblock besteht aus einem Ressourcenblock-Header und einem Datenblock.
Resource version |  | Die Version des Natural Profiler-Ressourcen-Layouts.

### Monitor-Session

Statistiken der Profiler-Monitor-Session anzeigen.

Eigenschaft | Einheit | Beschreibung
--- | --- | ---
Monitor start time | yyyy-mm-dd hh:ii:ss.t | Datum und Uhrzeit des Starts der Monitor-Session.
Monitor end time | yyyy-mm-dd hh:ii:ss.t | Datum und Uhrzeit des Endes der Monitor-Session.
Monitor elapsed time | sec | Die gesamte verstrichene Zeit, die von der Monitor-Session verbraucht wurde.

### Trace-Session

Statistikdaten der Profiler-Trace-Session anzeigen. Die Profiler-Trace-Session beinhaltet auch die Anwendungsausführung.

Eigenschaft | Einheit | Beschreibung
--- | --- | ---
First library |  | Die erste Library, die überwacht wurde. Die Libraries `SYSTEM`, `SYSLIB*` und `SYSPRF*` werden ignoriert.
First program |  | Das erste Programm, das überwacht wurde.
Highest level |  | Höchste Ebene der überwachten Natural-Objekte.
Trace start time | hh:ii:ss.microsec | Die Startzeit der Ablaufverfolgung. Bei NaturalONE ist dies die Zeit des `SI`-Ereignisses (Session Initialization). Im Batch-Modus ist die Sitzung bereits initialisiert, wenn die Überwachung gestartet wird. Daher ist die Startzeit die Zeit des ersten Ereignisses (normalerweise ein Monitor-Pause-Ereignis).
Trace end time | hh:ii:ss.microsec | Die Endezeit der Ablaufverfolgung. Dies ist im Allgemeinen die Zeit des `ST`-Ereignisses (Session Termination).
Trace elapsed time | sec | Die verstrichene Zeit, die von der Trace-Session von der Startzeit bis zur Endezeit verbraucht wird.
Application CPU time | ms | Die gesamte CPU-Zeit, die von der Anwendung verbraucht wird.
Monitor CPU time | ms | Die gesamte CPU-Zeit, die der Natural Data Collector verbraucht. Diese Zeit wird bei einem Natural-Linux- oder Windows-Server nicht erfasst.
Total CPU time | ms | Die gesamte CPU-Zeit, die von der Trace-Session verbraucht wird. Es ist die Summe der CPU-Zeit der Anwendung und der CPU-Zeit des Monitors.
Sampling interval | microsec | Die Stichprobenintervallzeit (CPU-Zeit in Mikrosekunden). Der Wert Null (`0`) bedeutet, dass keine Stichprobennahme aktiv war.
Data pool empty |  | Die Anzahl der Profiler-Leseanforderungen, die den Profiler-Daten-Pool leer (und eine Session aktiv) vorfanden.
Data pool empty after full |  | Die Anzahl der Profiler-Leseanforderungen, die den Profiler-Daten-Pool leer vorfanden, obwohl er zuvor voll war. Wenn dieser Zähler größer als `0` ist, ist der Profiler-Daten-Pool zu klein, was zu einer schlechten Performance führt.
Data pool overflow |  | Die Anzahl der Profiler-Daten-Pool-Überläufe (mit verlorenen Daten). Daten-Pool-Überläufe sollten nicht mehr auftreten. Diesen Wert gibt es nur noch aus Gründen der Abwärtskompatibilität mit früheren Versionen von Natural.
No session active |  | Die Anzahl der Leseanforderungen, bei denen der Profiler-Daten-Pool leer und keine Trace-Session aktiv war. Dies kann nur bei Profiler-Leseanforderungen geschehen, die vor der Session-Initialisierung oder nach Beendigung der Session eingereicht wurden.

### Datenverarbeitung

Statistiken über die Datenverarbeitung, Komprimierung und Übertragung anzeigen.

Eigenschaft | Einheit | Beschreibung
--- | --- | ---
Number of events |  | Die Gesamtzahl der Ereignisse.
Highest event number |  | Die höchste Ereigniszahl, wie sie vom Natural Data Collector angegeben wurde. Beachten Sie, dass der Natural Data Collector nur Nicht-Statement-Ereignisse zählt, wenn er von NaturalONE aufgerufen wird. Im Batch-Modus hängt es vom Statement-Filter ab, ob Statement-Ereignisse gezählt werden oder nicht.
Number of data blocks |  | Die Anzahl der Ereignisdatenblöcke, die an NaturalONE gesendet oder in die Ressource geschrieben werden.
Utility buffer size | Bytes | Die Größe des Utility-Puffers, der für die Datenübertragung vom Server zu NaturalONE verwendet wird. Im Allgemeinen enthält der Puffer die Header-Informationen und funktionsspezifischen Daten.
Data block size | Bytes | Die maximale Menge an Ereignisdaten, die in einem Aufruf vom Server zu NaturalONE übertragen werden kann. Die gleiche Datenblockgröße wird zum Speichern der Ereignisdaten in der Ressourcendatei verwendet.
RDC data length | Bytes | Die Gesamtgröße der vom Natural Data Collector erhaltenen Daten.
Uncompressed data length | Bytes | Die Gesamtgröße der Profiler-Daten im unkomprimierten Format.
Compressed data length | Bytes | Die Gesamtgröße der komprimierten Daten, die an NaturalONE gesendet oder in die Profiler-Ressourcendatei geschrieben werden.
Identical bytes trimmed left |  | Die Anzahl der identischen Bytes, die bei der Vorwärtsdatenkomprimierung links abgeschnitten wurden.
Blanks trimmed right |  | Die Anzahl der Leerzeichen, die bei der rückwärts gerichteten Datenkomprimierung rechts abgeschnitten wurden.
Compression header length | Bytes | Die Gesamtgröße der Komprimierungs-Header, die mit jedem komprimierten Ereignisdatensatz gespeichert werden.
Compression rate | Prozent | Der Prozentsatz der Datenreduktion durch die Komprimierung. Je höher die Komprimierungsrate, desto weniger Daten müssen übertragen oder gespeichert werden. Die Formel der Komprimierungsrate wird unten beschrieben.
Events/block |  | Die durchschnittliche Anzahl der Ereignisse, die in einem Ereignisdatenblock enthalten sind.
Bytes/event |  | Die durchschnittliche Länge eines komprimierten Ereignisdatensatzes in Bytes. Diese Eigenschaft ist nicht für konsolidierte oder Abdeckungsdaten verfügbar.

Die Komprimierungsrate wird mittels folgender Formel berechnet:

`CompressionRate := 100 ×` | `BytesTrimmedLeft + BytesTrimmedRight - CompressionHeaderLength` `UncompressedDataLength`

### Ereignistyp-Statistiken

Statistiken der Ereignistypen anzeigen.

Eigenschaft | Beschreibung
--- | ---
Unknown event | Die Anzahl der unbekannten Ereignisse.
Session initialization | Die Anzahl der Session-Initialisierungsereignisse.
Session termination | Die Anzahl der Session-Beendigungsereignisse.
Program load | Die Anzahl der Programmlade-Ereignisse.
Program start | Die Anzahl der Programmstart-Ereignisse.
Program termination | Die Anzahl der Programmbeendigungsereignisse.
Program resume | Die Anzahl der Programmwiederaufnahme-Ereignisse.
Program information | Die Anzahl der Programm-Informationsereignisse.
Before database call | Die Anzahl der Vor-Datenbankaufruf-Ereignisse.
After database call | Die Anzahl der Nach-Datenbankaufruf-Ereignisse.
Before terminal I/O | Die Anzahl der Vor-Terminal-E/A-Ereignisse.
After terminal I/O | Die Anzahl der Nach-Terminal-E/A-Ereignisse.
Before external program call | Die Anzahl der Vor-Externem-Programmaufruf-Ereignisse.
After external program call | Die Anzahl der Nach-Externem-Programmaufruf-Ereignisse.
Runtime error | Die Anzahl der Laufzeitfehler-Ereignisse.
Natural statement | Die Anzahl der Natural Statement-Ereignisse. Aus technischen Gründen können mehrere Natural-Statements zu einem Statement-Ereignis zusammengeführt werden, und umgekehrt kann ein Natural-Statement mehrere Statement-Ereignisse abdecken.
Outbound RPC message | Die Anzahl der ausgehenden RPC-Nachrichtenereignisse.
Inbound RPC message | Die Anzahl der eingehenden RPC-Nachrichtenereignisse.
Start RPC request execution | Die Anzahl der RPC-Ausführungsanforderungsstart-Ereignisse.
RPC Wait for Client | Die Anzahl der RPC-Wartet-auf-Client-Ereignisse.
User trace call | Die Anzahl der benutzerdefinierten Ereignisse.
Monitor pause | Die Anzahl der Monitor-Pause-Ereignisse.
Monitor filter | Die Anzahl der Monitor-Filter-Ereignisse. Filter-Ereignisse werden nicht aufgezeichnet.

### Monitor-Pause-Statistiken

Statistiken der Monitor-Pausentypen-Ereignissen anzeigen.

Eigenschaft | Beschreibung
--- | ---
Pause - unknown type | Die Anzahl der Monitor-Pause-Ereignisse mit unbekanntem Pausentyp.
Pause - requested | Die Anzahl der angeforderten Monitor-Pause-Ereignisse.
Pause - start of block filter | Die Anzahl der Monitor-Pause-Ereignisse, die durch den Start eines Blockfilters verursacht werden (Library-, Programm-, Zeilen-, FNAT-, Ereignisanzahl- oder Zeit-Filter).
Pause - data pool full | Die Anzahl der Monitor-Pause-Ereignisse, die durch einen vollen Daten-Pool verursacht werden.
Pause - data pool overflow | Die Anzahl der Monitor-Pause-Ereignisse, die durch einen Daten-Pool-Überlauf verursacht werden.

### Datenkonsolidierung

Statistiken der Datenkonsolidierung anzeigen.

Eigenschaft | Einheit | Beschreibung
--- | --- | ---
Consolidation |  | Gibt an, ob die Profiler-Daten konsolidiert sind (`ON`/`OFF`). Bei der Konsolidierung werden ähnliche Ereignisse in einem Konsolidierungsdatensatz zusammengefasst.
Consolidation records |  | Die Gesamtzahl der Konsolidierungsdatensätze. Im Allgemeinen umfasst ein Konsolidierungsdatensatz mehrere Ereignisse.
Consolidation elapsed time | Sekunden | Die verstrichene Zeit in Sekunden, die für die Datenkonsolidierung mit der Profiler Utility-Funktion `CONSOLIDATE` erforderlich ist. Dieser Wert wird nicht angegeben, wenn die Konsolidierung während der Datensammlung durchgeführt wird (Profiler Utility-Funktion `INIT`). In diesem Fall ist die für die Konsolidierung erforderliche Zeit in der Monitor elapsed time enthalten.
Consolidation factor |  | Die durchschnittliche Anzahl der Ereignisse, die zu einem Konsolidierungsdatensatz zusammengefasst sind. Je höher der Konsolidierungsfaktor, desto besser die Konsolidierung.
    ConsolidationFactor := NumberOfEvents / ConsolidationRecords
Consolidation records/block |  | Die durchschnittliche Anzahl der Konsolidierungsdatensätze, die in einem Datenblock enthalten sind.
Bytes/consolidation record |  | Die durchschnittliche Länge in Bytes eines komprimierten Konsolidierungsdatensatzes.
Consolidate I/O time |  | Gibt an, ob die E/A- und Natural RPC-Client-Zeit in den konsolidierten Daten enthalten sind.

### Abdeckung (Coverage)

Statistiken zur Natural-Codeabdeckung anzeigen.

Anmerkung
Statistikdaten zur Natural-Codeabdeckung werden nur auf dem Großrechner gesammelt.

Eigenschaft | Beschreibung
--- | ---
Coverage | Zeigt an, ob die Natural-Codeabdeckung durchgeführt wird(`ON`/`OFF`).
Missed statements recorded | Zeigt an, ob nicht abgedeckte ("missed") Statements aufgezeichnet werden (`ON`/`OFF`).
Coverage records | Die Gesamtzahl der Abdeckungsdatensätze. Dies sind Programminformationen und Natural-Statement-Aufzeichnungen.
Program information records | Die Anzahl der in die Ressourcendatei geschriebenen Programminformationsdatensätze. Jeder Programminformationsdatensatz enthält programm- und copycode-bezogene Informationen.
Coverage records/block | Die durchschnittliche Anzahl der Abdeckungsdatensätze, die in einem Datenblock enthalten sind.
Bytes/coverage record | Die durchschnittliche Länge in Bytes eines komprimierten Abdeckungsdatensatzes.
Programs covered | Die Anzahl der abgedeckten Programme.
Programs NOC-ed | Die Anzahl der abgedeckten Programme, die mit dem Natural Optimizer Compiler kompiliert wurden.
Statement coverage | Der Prozentsatz der Statements aller aufgerufenen Programme, die von der Anwendung abgedeckt wurden.
Statements covered | Die Anzahl der abgedeckten (ausgeführten) Statements.
Statements total | Die Gesamtzahl der ausführbaren Statements aller Programme, auf die zugegriffen wird.

### Transaktionen

Statistikdaten der ausgeführten Transaktionen anzeigen.

Anmerkung
Transaktionsstatistikdaten sind nur verfügbar, wenn Profiler-Daten mit der auf `TRANSACTION=ON` gesetzten `CONSOLIDATE`-Funktion konsolidiert wurden.

Eigenschaft | Einheit | Beschreibung
--- | --- | ---
Transaction |  | Gibt an, ob Transaktionsidentifikatoren zu den konsolidierten Datensätzen hinzugefügt werden (`ON`/`OFF`). Transaktionsidentifikatoren sind erforderlich, um die Antwortzeit für Transaktionen auszuwerten.
Number of transactions |  | Die Gesamtzahl der verarbeiteten Transaktionen. Eine Transaktion ist der Code, der zwischen zwei aufeinanderfolgenden Terminal-E/A-Vorgängen ausgeführt wird.
Total response time | Sekunden | Die gesamte verstrichene (elapsed) Zeit, die für die Verarbeitung aller Transaktionen aufgewendet wurde.
Average response time | Sekunden | Die durchschnittlich aufgewendete verstrichene (elapsed) Zeit pro Transaktion.
Max response time | Sekunden | Die maximale (höchste) verstrichene (elapsed) Zeit, die für die Verarbeitung von Transaktionen aufgewendet wird.
ID max response time |  | Der Transaktionsidentifikator der Transaktion mit der höchsten verstrichenen (elapsed) Zeit. Zusätzlich zum Transaktionsidentifikator gibt die Statistik den Programmnamen, den Copycode-Namen (falls vorhanden) und die Programmzeile an, von der aus der Terminal-E/A-Vorgang ausgegeben wurde.

Weitere Informationen zur Auswertung von Transaktionen finden Sie unter Transaktionszusammenfassung.

### On this page

- Voraussetzungen für Profiler Utility im Batch-Modus
- Profiler Utility aufrufen und beenden
- Syntax und Schlüsselwörter
- Gesammelte Ereignisse und Daten
- Profilierung initialisieren
- Initialisierung der Codeabdeckung (Code Coverage)
- Datensammlung starten und anhalten
- Filter zur Begrenzung der gesammelten Daten benutzen
- Stichprobennahme (Sampling) aktivieren
- Benutzerdefinierte Ereignisse schreiben
- Monitor-Session CMPRMIN
- Monitor-Session CMSYNIN
- Batch-Natural RPC-Server profilieren
- Profil-Erstellung einer Großrechner-Session aus Natural Studio
- Ereignisdaten konsolidieren
- Ereignisdaten auswerten
- Profiler-Ressourcendateien verwalten
- Profiler-Eingaben aus Natural-Textobjekten einfügen
- Ereignisverfolgung (Event-Trace)
- Ablaufverfolgung (Tracing) beim Messen der Natural-Codeabdeckung
- Interner Trace
- Profiler-Statistikdaten