NOCSTAT-Kommando

#### Search Results

Search

# NOCSTAT-Kommando

Bei Programmen, die mit dem Natural Optimizer Compiler optimiert wurden, können bestimmte Statements beim Katalogisieren direkt in Maschinencode umgewandelt werden. Dadurch kann beim Ausführen der optimierten Objekte mit Natural zur Laufzeit die Leistung erheblich verbessert werden.

Das `NOCSTAT`-Kommando analysiert katalogisierte Objekte und liefert statistische Informationen, die bei der Entscheidung helfen, ob Programm-Statements von der Optimierung durch den Natural Optimizer Compiler profitieren und, wenn ja, in welchem Umfang sie optimiert werden können.

Wenn ein Programm katalogisiert wird (mit `STOW`, `CATALL`), erzeugt der Natural Optimizer Compiler einen internen (Pseudo-)Objektcode basierend auf den Statements des Source-Programms. In den meisten Fällen wird ein Statement des Source-Programms in ein Statement der Pseudocode-Instruktion umgewandelt. Für komplexe Statements, wie `FOR` und `REPEAT`, werden jedoch mehrere Pseudocode-Instruktionen generiert. Die `NOCSTAT`-Analysen basieren auf den generierten Pseudocode-Instruktionen. Daher kann die Anzahl der in den statistischen Reports aufgeführten Statements die Anzahl der Statements im Source-Programm übersteigen.

Folgende Themen werden behandelt:

- NOCSTAT aufrufen

- Reports generieren

- Report-Formate

- Batch-Ausführung

## NOCSTAT aufrufen

Um das Natural-Kommando NOCSTAT zu benutzen:

- Geben Sie das Direktkommando `NOCSTAT` ein.

  Der `NOCSTAT`-Hauptbildschirm wird angezeigt (Beispiel):

      16:41:00             ***** NATURAL NOCSTAT COMMAND *****             2017-11-24

      Name .................. ________
      Library ............... SAGTEST_

      NOCable Objects only .. _

      Output Report ......... X Statement Category
                              _ Statement Type
                              _ Code Profile

      Output Destination .... X Screen
                              _ CSV to Work File
                              _ XML to Work File
                                with XSL ________________________________

      Progress Control ...... X
      Download to PC ........ _

      Command ===>

      Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
            Help        Exit                                                  Canc

Um Hilfe zu Feldern zu erhalten, können Sie entweder ein Fragezeichen (?) in das betreffende Feld eingeben und ENTER drücken oder den Cursor in das Feld stellen und PF1 drücken. Drücken Sie PF3, um `NOCSTAT` zu beenden.

## Reports generieren

Sie können statistische Reports für ein einzelnes Programm oder eine Gruppe von Programmen generieren. Wenn Sie mehr als ein Programm auf einmal analysieren, werden die Reports in Serie erstellt. Wenn Sie einen Report fertig angesehen haben, drücken Sie ENTER, um den nächsten Report anzuzeigen.

Der Bildschirm `NATURAL NOCSTAT COMMAND` bietet die folgenden Optionen:

Feld | Erklärung
--- | ---
`Name` | Geben Sie einen Namen oder einen Namensbereich ein, um das oder die Programme anzugeben, die Sie prüfen möchten:
`value` ist ein beliebiges einzelnes Zeichen oder eine Kombination aus mehreren Zeichen.
`value` | Einzelnes Programm.
`*` | Alle Programme.
`value*` | Alle Programme, deren Namen mit `value` beginnen.
`value>` | Alle Programme, deren Namen größer gleich `value` sind.
`value<` | Alle Programme, deren Namen kleiner gleich `value` sind.
`Library` | Geben Sie den Namen einer Library oder einen Namensbereich ein: Weitere Eingaben wie zuvor beim Feld `Name` beschrieben. Standardwert ist die aktuelle Library.
`NOCable` `Objects only` | Markieren Sie diese Option, um Programme auszuschließen, die bereits mit dem Natural Optimizer Compiler kompiliert sind. Andernfalls wählt das Kommando `NOCSTAT` standardmäßig alle Natural-Programme aus, die in den Feldern `Name` und `Library` angegeben sind, inklusive der mit NOC kompilierten Programme.
`Output Report` | Markieren Sie eine der Optionen, um Statements nach Kategorie, Typ oder Codeprofil auszuwählen. Siehe Statement-Kategorie, Statement-Typ und Codeprofil weiter unten.
`Output Destination` | Markieren Sie eine der Optionen, um das Format und den Zielort der Ausgabe festzulegen:
`Screen` | Der Report wird im Bildschirm angezeigt oder die Reportdaten werden in die Druckdatei (Print File) 7 geschrieben, wenn `Download to PC` für die Verarbeitung gewählt ist.
`CSV to` `Work File` | Erzeugt Tabellenkalkulationen (Speadsheets) mit kommagetrennten Werten. Die Reportdaten werden in eine der folgenden Dateien geschrieben: Arbeitsdatei (Work File) 7 bei Online-Betrieb und gewählter Option und `Download to PC`. Arbeitsdatei (Work File) 1 in allen anderen Fällen. Benutzen Sie die Dateinamenserweiterung `.csv`, um die Arbeitsdatei zur Weiterverarbeitung direkt auf Ihren PC zu schreiben. Um Reports an einen PC weiterleiten zu können, muss Entire Connection installiert sein.
`XML to` `Work File` | Generiert XML-Dokumente. Die Reportdaten werden in eine der folgenden Dateien geschrieben: Arbeitsdatei (Work File) 7 im Online-Betrieb und bei gewählter Option `Download to PC`. Arbeitsdatei (Work File) 1 in allen anderen Fällen. Benutzen Sie die Dateinamenserweiterung `.txt`, um die Arbeitsdatei direkt auf Ihren PC zu schreiben, und ändern Sie die Dateinamenserweiterung anschließend in `.xml` für die Weiterverarbeitung. Um Reports an einen PC weiterleiten zu können, muss Entire Connection installiert sein. Wird im Feld `with XSL` ein Wert eingegeben, dann wird oben im XML-Ausgabedokument eine Verarbeitungsanweisung hinzugefügt:
    <?xml-stylesheet type="text/xsl" href="
    value "?>
Der eingegebenen Wert value sollte die absolute oder relative URL des Style Sheet sein, z.B.:
    nocstat.xsl
oder
    http://natural.software-ag.de/nocstat.xsl
Die Verarbeitungsanweisung bewirkt, dass das Dokument gemäß dem angegebenen Style Sheet umgeformt wird, wenn es mit einem XSLT-fähigen Browser betrachtet oder in einem XSLT-Batch-Lauf umgeformt wird. Eine typische Verwendung dieser Funktion ist die Umwandlung des ausgegebenen XML in eine HTML-Seite. Zusammen mit Natural werden zwei XSLT Style Sheets als Textobjekte ausgeliefert: `NOCSTLS1` und `NOCSTLS2`, beide in der Natural Library `SYSEXUEX` in der Systemdatei `FNAT`. Wie weiter unten beschrieben, enthält `NOCSTLS1` Formatierungsanweisungen für den Report-Typ Statement-Kategorie und `NOCSTLS2` für den Report-Typ Statement-Typ. Laden Sie die Style Sheets mit der Dateinamenserweiterung `.xsl` in dasselbe Verzeichnis, in dem die XML-Arbeitsdateien gespeichert werden.
`Progress Control` | Gilt nur in einer Online-Umgebung und wenn eine der folgenden Optionen für die Verarbeitung gewählt wird: `CSV to Work File`, `XML to Work File`, `Download to PC`. Wird eine dieser Optionen gewählt, erschient bei jedem im generierten Report aufgelisteten Programm eine kurze Meldung.
`Download to PC` | Gilt nur, wenn Entire Connection installiert ist und wenn Sie im Online-Betrieb mit Druck-/Arbeitsdatei (Print/Work File) 7 arbeiten und diese als die PC-Datei definiert ist (siehe Parameter `WORK` und `PRINT`). Zum Herunterladen der Reportausgabe auf einen PC mittels Entire Connection können Sie benutzen: Druckdatei (Print File) 7 für das Ausgabeziel Bildschirm (`Screen`). Arbeitsdatei (Work File) 7 für die Ausgabe im Format CSV oder XML.

## Report-Formate

Sie können zwischen drei nachfolgend beschriebenen Ausgabeformaten wählen, um die Statistiken anzuzeigen, die `NOCSTAT` für die analysierten Statements liefert.

Für Programme, die bereits mit dem Natural Optimizer Compiler optimiert wurden, und für Programme, die für eine Optimierung in Frage kommen, werden unterschiedliche Report-Layouts erstellt. Die unten stehenden Beispiel-Reports zeigen den Unterschied.

Drücken Sie PF3, um die Report-Bearbeitung zu unterbrechen und zum Bildschirm `NATURAL NOCSTAT COMMAND` zurückzukehren.

Nachfolgend finden Sie Informationen zu:

- Statement-Kategorie

- Statement-Typ

- Codeprofil

### Statement-Kategorie

Der mit der Option `Statement Category` generierte Statistik-Report listet verschiedene Kategorien von Statements mit der entsprechenden Anzahl der Ausprägungen und die Gesamtzahl der bereits optimierten oder zur Optimierung geeigneten Statements, je nachdem, ob das Programm mit dem Natural Optimizer Compiler optimiert wurde oder nicht.

#### Beispiel für ein Programm ohne NOC-Optierung:

    11:49:46             ***** NATURAL NOCSTAT COMMAND *****             2017-05-29
                    Library SAGTEST  Name NOCTEST1 Type Program

                          No NOC      NOCable
                         --------     --------
          Database Loop:        0            0
        Database Simple:        0            0
        SORT / WORK I/O:        0            0
           FOR / REPEAT:        0            1
       Screen / Printer:        1            0
    String Manipulation:        6           34
        Arith / Logical:        0          996
          Program Calls:       20            0
       Control Transfer:        2          182
            Block Start:        1            0
        Set Environment:        7            0
       System Functions:        2            0
          Miscellaneous:        0            1

                    Total Statements:     1254
                     NOC optimizable:     1214  ( Ratio:  96 % )
                     Longest NOC Run:      216  Statements

#### Beispiel für ein mit NOC optimiertes Programm:

    11:51:25             ***** NATURAL NOCSTAT COMMAND *****             2017-05-29
                    Library SAGTEST  Name NOCTEST1 Type Program

         MCG Options: (ON,OVFLW,INDX,MIX,IO)

          Database Loop:        0
        Database Simple:        0
        SORT / WORK I/O:        0
           FOR / REPEAT:        0
       Screen / Printer:        1
    String Manipulation:       36
        Arith / Logical:        0
          Program Calls:       20
       Control Transfer:        2
            Block Start:        1
        Set Environment:        7
       System Functions:        2
          Miscellaneous:        1

       Total Statements:     1255
          NOC optimized:     1185  ( Ratio:  94 % )
        Longest NOC Run:      136  Statements

#### Spalten und Felder im Report:

Spalte | Erklärung
--- | ---
`No NOC` | Nicht zur Optimierung mit NOC geeignete Statements.
`NOCable` | Zur Optimierung mit NOC geeignete Statements: Anmerkung Die Anzahl der mit NOC optimierbaren (`NOCable`) Statements ist nur eine vernünftige Annahme, kann aber nicht als absolut zuverlässiger Wert betrachtet werden. Dies liegt daran, dass das `NOCSTAT`-Kommando nicht alle analytischen Abfragen und gelegentlich auch sehr komplexe Code-Untersuchungen durchführen kann, die definitiv entscheiden, ob ein Statement mit dem Natural Optimizer Compiler optimiert werden kann.
Feld |
`Database Loop` | Die Anzahl der Datenbank-Statements, die eine Verarbeitungsschleife erzeugen, z.B. `FIND` und `READ`.
`Database Simple` | Datenbank-Statements, die keine Verarbeitungsschleife erzeugen, z.B. `STORE`, `UPDATE`, `DELETE` und `GET`.
`SORT / WORK I/O` | `SORT` und `WORKFILE`-Statements.
`FOR / REPEAT` | Statements, die Verarbeitungsschleifen erzeugen.
`Screen / Printer` | Statements für Bildschirm- und Drucker-Ein-/Ausgaben, z.B. `WRITE`, `DISPLAY` und `INPUT`.
`String Manipulation` | Statements zur Zeichenketten-Manipulation, z.B. `EXAMINE` und `COMPRESS`.
`Arith / Logical` | Arithmetische und logische Statements, z.B. `MOVE`, `COMPUTE` und `IF`.
`Program Calls` | Statements zur Übergabe der Steuerung an eine Subroutine oder ein Subprogramm, z.B. `PERFORM`, `CALLNAT` und `FETCH`.
`Control Transfer` | Statements zur Durchführung von Sprüngen innerhalb des Programms, z.B. `ESCAPE BOTTOM`, `FOR` und `REPEAT` Schleifen.
`Block Start` | Nicht-ausgeführte Statements, die Code-Blöcke abgrenzen, z.B. `DEFINE SUBROUTINE` und `AT END`. Diese Statements werden niemals optimiert, weil sie nie ausgeführt werden.
`Set Environment` | Statements zum Einstellen der Umgebung, z.B. `SET CONTROL`, `SET GLOBALS` und `SET KEY`.
`System Functions` | Statements wie zum Beispiel `TOTAL`, `SUM`, `COUNT`, `MAX`, `MIN` und `*COUNT`.
`Miscellaneous` | Pseudo-Code-Statements, die für die Optimierung nicht relevant sind und deshalb vom Natural Optimier Compiler ignoriert werden.
Gesamtzahlen |
`Total Statements` | Gesamtzahl der im Programm gefundenen Statements. Es ist möglich, dass diese Zahl nicht der Zahl der tatsächlich im Quellcode befindlichen Statements entspricht (wie schon in der Einleitung zum `NOCSTAT`-Kommando weiter oben beschrieben).
`NOC optimized` | Bei einem optimierten Programm sind dies die tatsächlichen Pseudo-Code-Statements (wie schon in der Einleitung zum `NOCSTAT`-Kommando weiter oben beschrieben), die NOC-optimiert in Maschinencode kompiliert worden sind.
`NOC optimizable` | Bei nicht optimierten Programmen ist dies die mögliche Zahl der Statements, die optimiert werden konnten. Die Zahl kann etwas höher sein als die tatsächliche Zahl, da bestimmte Faktoren im `NOCSTAT`-Programm nicht berücksichtigt werden. So kann zum Beispiel ein `SUBSTRING`-Statement, das mehr als vier Ausprägungen hat, als "optimierbar" angezeigt werden, obwohl es nicht optimiert wird.
`Ratio` | Verhältnis zwischen `Total Statements` und `NOC-optimized Statements` oder `Total Statements` und `NOC-optimizable statements` in Prozent.
`Longest NOC Run` | Mit NOC optimiertes Programm: Die Anzahl an zusammenhängenden optimierten Statements - je weniger Fragment-Sequenzen, desto besser die Leistung.
Nicht mit NOC optimiertes Programm: Die Anzahl an zu erwartenden zusammenhängenden Statements, wenn das Programm optimiert wäre.

### Statement-Typ

Der mit der Option `Statement Type` generierte Statistik-Report listet einzelne Statements mit der entsprechenden Anzahl der Ausprägungen und die für optimierte Objekte generierte NOC-Kodierung.

#### Beispiel für ein Programm ohne NOC-Optierung:

    12:29:23             ***** NATURAL NOCSTAT COMMAND *****             2017-05-29
                    Library SAGTEST  Name NOCTEST1 Type Program

           Statement            No NOC   NOCable
    ------------------------   --------  --------
    MOVE/COMPUTE/ASSIGN               0       615
    EXAMINE                           6         0
    SEPARATE                          0        30
    COMPRESS                          0         4
    MOVE TO SYSTEM FUNCTION           2         0
    CALLNAT/PERFORM EXTERNAL         17         0
    MOVE EDITED                       1         0
    ELSE/CLOSE LOOP                   0       182
    ON ERROR                          1         0
    END                               1         0
    STOP                              1         0
    IF                                0        51
    IF IN REPEAT UNTIL                0         1
    REPEAT                            0         1
    RESET                             0        74
    IF                                0       255
    FETCH                             3         0
    IGNORE                            0         1
    STACK TOP CMD/DATA                2         0
    MCG OPTIONS                       1         0
    OPTIONS                           1         0
    SET CONTROL                       4         0

#### Beispiel für ein mit NOC optimiertes Programm:

    12:31:30             ***** NATURAL NOCSTAT COMMAND *****             2017-05-29
                    Library SAGTEST  Name NOCTEST1 Type Program
         MCG Options: (ON,OVFLW,INDX,MIX,IO)
           Statement            Number
    ------------------------   --------
    EXAMINE                           6
    SEPARATE                         30
    MOVE TO SYSTEM FUNCTION           2
    CALLNAT/PERFORM EXTERNAL         17
    MOVE EDITED                       1
    NOC CODE                       1183
    ON ERROR                          1
    END                               1
    STOP                              1
    FETCH                             3
    IGNORE                            1
    STACK TOP CMD/DATA                2
    MCG OPTIONS                       2
    OPTIONS                           1
    SET CONTROL                       4

### Codeprofil

Der mit der Option `Code profile` generierte Statistik-Report zeigt zusammenhängende Sequenzen von Statements, gruppiert nach Kategorien in einem Source-Programm, das für die Optimierung geeignet ist, oder listet die für ein optimiertes Programm erzeugte NOC-Kodierung. Ausprägungen werden hervorgehoben angezeigt.

#### Beispiel für ein Programm ohne NOC-Optierung:

    12:38:52             ***** NATURAL NOCSTAT COMMAND *****             2017-05-29
                    Library SAGTEST  Name NOCTEST1 Type Program

    Line   Statement
    -----  -------------------------
    0000   ON ERROR
    0000   MCG OPTIONS
    0000   OPTIONS
    0295   CALLNAT/PERFORM EXTERNAL
    0295   MOVE/COMPUTE/ASSIGN       <-- NOCable
    0295   MOVE/COMPUTE/ASSIGN       <-- NOCable
    0295   MOVE/COMPUTE/ASSIGN       <-- NOCable
    0295   MOVE/COMPUTE/ASSIGN       <-- NOCable
    0740   MOVE/COMPUTE/ASSIGN       <-- NOCable
    0745   IF                        <-- NOCable
    0750   MOVE/COMPUTE/ASSIGN       <-- NOCable
    0755   MOVE/COMPUTE/ASSIGN       <-- NOCable
    0760   CALLNAT/PERFORM EXTERNAL
    0765   IF                        <-- NOCable
    0770   MOVE/COMPUTE/ASSIGN       <-- NOCable
    0775   ELSE                      <-- NOCable
    0780   MOVE/COMPUTE/ASSIGN       <-- NOCable
    0810   RESET                     <-- NOCable
    MORE

#### Beispiel für ein mit NOC optimiertes Programm:

    12:39:47             ***** NATURAL NOCSTAT COMMAND *****             2017-05-29
                    Library SAGTEST  Name NOCTEST1 Type Program

    Line   Statement
    -----  -------------------------
    0000   MCG OPTIONS
    0005   MCG OPTIONS
    0000   OPTIONS
    0295   CALLNAT/PERFORM EXTERNAL
    0295   NOC CODE
    0295   NOC CODE
    0295   NOC CODE
    0295   NOC CODE
    0740   NOC CODE
    0745   NOC CODE
    0750   NOC CODE
    0755   NOC CODE
    0760   CALLNAT/PERFORM EXTERNAL
    0765   NOC CODE
    0770   NOC CODE
    0775   NOC CODE
    0780   NOC CODE
    0810   NOC CODE
    MORE

## Batch-Ausführung

Nachfolgend finden Sie Job-Beispiele für die Verarbeitung von `NOCSTAT`-Reports im Batch-Modus, um eine CSV-Arbeitsdatei zu erstellen. Nach erfolgter Job-Ausführung können die erzeugten Arbeitsdateien mit Standard-Transfer-Tools vom Host-Rechner auf einen PC zur Weiterverarbeitung übertragen werden.

#### Beispiel-Job :

      //NOCBATCH JOB  (NOC,,,30),CLASS=K,MSGCLASS=X                           00000100
      //NATEX EXEC PGM=NATvrsBA,REGION=6200K,PARM=('IM=D')                    00000200
      //STEPLIB  DD DISP=SHR,DSN=TESTNAT.LOAD                                 00000300
      //CMPRINT  DD SYSOUT=X                                                  00000400
      //CMWKF01  DD DSN='NOC.NOCSTAT.OUT',DISP=(NEW,CATLG),                   00000500
                    SPACE=(CYL,(1,1)),UNIT=SYSDA,VOL=SER=SAG001               00000600
      //SYSOUT   DD SYSOUT=X                                                  00000700
      //CMSYNIN  DD *                                                         00000800
      NOCSTAT                                                                 00000900
      *,library,,X,,,,X                                                       00001000
      .                                                                       00001100
      FIN                                                                     00001200
      /*                                                                      00001300

### On this page

- NOCSTAT aufrufen
- Reports generieren
- Report-Formate
- Batch-Ausführung