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:
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.
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 Standardwert ist die aktuelle Library. |
|
|
Markieren Sie diese
Option, um Programme auszuschließen, die bereits mit dem Natural Optimizer
Compiler kompiliert sind.
Andernfalls wählt das Kommando
|
|
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:
Benutzen Sie die Dateinamenserweiterung
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:
Benutzen Sie die Dateinamenserweiterung
Um Reports an einen PC weiterleiten zu können, muss Entire Connection installiert sein. Wird im Feld <?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: Wie weiter unten beschrieben, enthält
Laden Sie die Style Sheets mit der
Dateinamenserweiterung |
|
Progress
Control
|
Gilt nur in einer
Online-Umgebung und wenn eine der folgenden Optionen für die Verarbeitung
gewählt wird:
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:
|
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:
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.
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 |
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 |
Spalte | Erklärung |
---|---|
No NOC |
Nicht zur Optimierung mit NOC geeignete Statements. |
NOCable |
Zur Optimierung mit NOC geeignete Statements:
Anmerkung: |
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. |
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.
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 |
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 |
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.
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 |
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 |
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.
//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