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

Beginn der AnweisungslisteUm 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 (Spreadsheets) mit kommagetrennten Werten.

Die Reportdaten werden in eine der folgenden Dateien geschrieben:

  1. Arbeitsdatei (Work File) 7 bei Online-Betrieb und gewählter Option und Download to PC.

  2. 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:

  1. Arbeitsdatei (Work File) 7 im Online-Betrieb und bei gewählter Option Download to PC.

  2. 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 eingegebene 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:
  1. CSV to Work File,

  2. XML to Work File,

  3. 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:

  1. Druckdatei (Print File) 7 für das Ausgabeziel Bildschirm (Screen).

  2. 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

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 Optimizer 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 konnte. 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