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 (Speadsheets) 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 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: 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 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. |
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