Natural Optimizer Compiler で最適化されたプログラムの場合、カタログ時に特定のステートメントをマシンコードに直接変換することができます。 その結果、最適化されたオブジェクトをランタイム時に Natural で実行すると、パフォーマンスを大幅に向上させることができます。
NOCSTAT
コマンドでは、カタログされたプログラミングオブジェクトが分析され、統計情報が示されます。これは、プログラムステートメントに NOC による最適化の利点があるかどうか、ある場合はどの程度最適化できているかを判断する場合に役立ちます。
プログラムがカタログされる場合(STOW
、CATALL
)、Natural コンパイラによって、ソースプログラム内のステートメントに基づいて内部(中間)オブジェクトコードが生成されます。 ほとんどの場合、1 つのソースステートメントは 1 つの中間コード命令に変換されます。 ただし、FOR
や REPEAT
などの複雑なステートメントの場合、複数の中間コード命令が生成されます。 NOCSTAT
分析は、生成された中間コード命令に基づきます。 そのため、統計レポートで示されるステートメントの数は、ソースプログラム内のステートメントの数を超える場合があります。
このドキュメントでは、次のトピックについて説明します。
NOCSTAT コマンドを呼び出すには
ダイレクトコマンド「NOCSTAT
」を入力します。
NOCSTAT
のメイン画面が表示されます。
14:02:01 ***** NATURAL NOCSTAT COMMAND ***** 2000-09-04 Name .................. ________ Library ............... SAGTEST_ NOCable Objects only .. _ Output Report ......... X Statement Category _ Statement Type _ Code Profile Output Destination .... X Screen _ CSV to Work File 1 _ XML to Work File 1 with XSL ________________________________ Progress Control ...... X Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc |
フィールド固有のヘルプ情報を表示するには、関連するフィールドに疑問符を入力して ENTER キーを押すか、カーソルを目的のフィールドに置いて PF1 キーを押します。 NOCSTAT
を終了するには、PF3 キーを押します。
単一のプログラムまたは一連のプログラムの統計レポートを生成できます。 複数のプログラムを一度に分析する場合、レポートは連続して生成されます。 1 つのレポートを見終わったら、ENTER キーを押して次のレポートを表示します。
NOCSTAT
のメインメニューには、以下のオプションがあります。
フィールド | 説明 | |
---|---|---|
Name |
名前または名前の範囲を入力して、調査するプログラムを指定します。 | |
value は、1 つ以上の文字の任意の組み合わせです。
|
||
value |
単一のプログラム。 | |
* |
すべてのプログラム。 | |
value* |
名前が value で始まるすべてのプログラム。
|
|
value> |
名前が value 以上であるすべてのプログラム。
|
|
value< |
名前が value. 以下であるすべてのプログラム。
|
|
Library |
ライブラリの名前を入力するか、範囲を指定します。上記の[Name]フィールドの説明と同じ内容が適用されます。
現在のライブラリがデフォルトです。 |
|
NOCable Objects only |
このオプションをマークすると、すでに NOC でコンパイルされているプログラムは除外されます。
マークしないと、 |
|
Output Report |
任意のオプションをマークして、カテゴリ、タイプ、またはコードプロファイルでステートメントを選択します。
以下の「ステートメントカテゴリ」、「ステートメントタイプ」、および「コードプロファイル」を参照してください。 |
|
Output Destination |
以下のオプションのいずれかをマークして、出力フォーマットおよび出力先を指定します。 | |
Screen | オンライン表示。 | |
CSV to Work File 1 |
コンマ区切りの値のスプレッドシートを生成します。 ファイル拡張子 .csv を使用して、その後の処理用にワークファイルを PC に直接書き込みます。
Entire Connection がインストールされている場合は、レポートを PC のみにルーティングできます。 |
|
XML to Work File 1 |
XML ドキュメントを生成します。 ファイル拡張子 ".xml" を使用して、その後の処理用にワークファイルを PC に直接書き込みます。
フィールド[with XSL]に値を入力した場合は、XML 出力ドキュメントの先頭に処理命令が追加されます。 <?xml-stylesheet type="text/xsl" href=" value "?> 入力する value は、スタイルシートの絶対 URL または相対 URL である必要があります。次に例を示します。 nocstat.xsl または http://natural.software-ag.de/nocstat.xsl XSLT 対応ブラウザによる表示またはバッチ XSLT 実行による変換の際に、ドキュメントは処理命令によって、指定したスタイルシートに従って変換されます。 この機能の一般的な使用例は、出力 XML の HTML ページへの変換です。 Natural では、2 つの XSLT スタイルシートが、テキストメンバ 以下で説明するように、 ファイル拡張子が Entire Connection がインストールされている場合は、レポートを PC のみにルーティングできます。 |
|
Progress Control |
ワークファイル 1 出力先にのみ適用されます。
このオプションをマークすると、生成されるレポートにリストされるプログラムごとに短いメッセージがオンライン表示されます。 |
以下で説明する 3 つの出力フォーマットから選択して、分析対象ステートメントについて NOCSTAT
によって提供される統計を表示できます。 NOC ですでに最適化されているプログラムおよび最適化を検討するプログラムについて、異なるレポートレイアウトが生成されます。 以下のサンプルレポートで相違点を示します。 レポート処理を中断して NOCSTAT
のメニューに戻るには、PF3 キーを押します。
以下に参考情報を示します。
オプション Statement Category
で生成される統計レポートには、ステートメントのさまざまなカテゴリと対応するオカレンス数、およびプログラムが NOC で最適化されているかどうかに応じて、すでに最適化されているか最適化に適しているステートメントの総数がリストされます。
14:07:17 ***** NATURAL NOCSTAT COMMAND ***** 2000-09-04 Library SAGTEST Name NOCTEST1 Type Program MCG Options: (ON,OVFLW,INDX,MIX,IO) Database Loop: 0 Database Simple: 0 SORT / WORK I/O: 29 FOR / REPEAT: 0 Screen / Printer: 59 String Manipulation: 6 Arith / Logical: 0 Program Calls: 3 Control Transfer: 49 Block Start: 25 Set Environment: 2 System Functions: 0 Miscellaneous: 0 Total Statements: 949 NOC optimized: 762 ( Ratio: 80 % ) Longest NOC Run: 180 Statements |
14:13:01 ***** NATURAL NOCSTAT COMMAND ***** 2000-09-04 Library SAGTEST Name NOCTEST2 Type Program No NOC NOCable -------- -------- Database Loop: 0 0 Database Simple: 0 0 SORT / WORK I/O: 0 0 FOR / REPEAT: 0 5 Screen / Printer: 57 0 String Manipulation: 4 8 Arith / Logical: 0 491 Program Calls: 3 0 Control Transfer: 19 69 Block Start: 15 0 Set Environment: 0 0 System Functions: 0 0 Miscellaneous: 0 0 Total Statements: 672 NOC optimizable: 573 ( Ratio: 85 % ) Longest NOC Run: 192 Statements |
列 | 説明 |
---|---|
No NOC |
最適化に適していないステートメント。 |
NOCable |
最適化に適しているステートメント。 |
フィールド | |
Database Loop |
処理ループを生成するデータベースステートメントの数。FIND 、READ など。
|
Database Simple |
処理ループを生成しないデータベースステートメント。STORE 、UPDATE 、DELETE 、GET など。
|
SORT / WORK I/O |
SORT およびワークファイルステートメント。
|
FOR / REPEAT |
ループを生成するステートメント。 |
Screen / Printer |
画面およびプリンタ I/O。WRITE 、DISPLAY 、INPUT など。
|
String Manipulation |
文字列ステートメント。EXAMINE 、COMPRESS など。
|
Arith / Logical |
算術および論理ステートメント。MOVE 、COMPUTE 、IF など。
|
Program Calls |
サブルーチンまたはサブプログラムへの制御の転送。PERFORM 、CALLNAT 、FETCH など。
|
Control Transfer |
プログラム内のジャンプ。ESCAPE BOTTOM 、FOR 、REPEAT ループなど。
|
Block Start |
コードブロックを区別する非実行ステートメント。DEFINE SUBROUTINE 、AT END など。 これらのステートメントは実行されないため、最適化されません。
|
Set Environment |
環境を設定するステートメント。SET CONTROL 、SET GLOBALS 、SET KEY など。
|
System Functions |
TOTAL 、SUM 、COUNT 、MAX 、MIN 、*COUNT などのステートメント。
|
Miscellaneous |
最適化には関連せず、したがって NOC では無視される中間コードステートメント。 |
合計 | |
Total Statements |
プログラムで見つかったステートメントの総数。 上記の NOCSTAT コマンドの概要で説明したように、この数は実際のソースステートメントとは一致しない場合があります。
|
NOC optimized |
最適化されているプログラムの場合、上記の NOCSTAT コマンドの概要で説明したように、これらは NOC でマシンコードに最適化された実際の中間コードステートメントです。
|
NOC optimizable |
最適化されていないプログラムの場合、これは最適化される可能性があるステートメントの数です。 いくつかの要因は NOCSTAT プログラムで考慮されないため、この数字は実際の数よりも若干多い場合があります。 例えば、5 つ以上の配列がある SUBSTRING ステートメントは最適化されませんが、"最適化可能" として示されます。
|
Ratio |
Total Statements と NOC optimized ステートメントまたは Total Statements と NOC optimizable ステートメント間の関係(パーセント)。 |
Longest NOC Run |
NOC で最適化されているプログラム:
連続する最適化されているステートメントの数 - フラグメントシーケンスが少ないほど、パフォーマンスは向上します。 |
最適化されていないプログラム:
プログラムが最適化された場合に予期される連続するステートメントの数。 |
オプション "Statement Type" で生成される統計レポートには、単一のステートメントと対応するオカレンス数、および最適化されたオブジェクトに対して生成された NOC コーディングがリストされます。
09:21:45 ***** NATURAL NOCSTAT COMMAND ***** 2000-09-06 Library SAGTEST Name NOCTEST1 Type Program Statement Number ------------------------ -------- DB AT CONDITION 6 READ/WRITE WORK FILE 29 EXAMINE 6 WRITE 51 INPUT 3 NEWPAGE 2 REINPUT 3 FIND 1 READ 2 NOC CODE 760 BLOCK START 18 ON ERROR 1 END 1 STOP 2 RETURN 3 RETURN INLINE 15 ESCAPE ROUTINE 3 ESCAPE ROUTINE IMMEDIATE 1 MORE |
09:23:15 ***** NATURAL NOCSTAT COMMAND ***** 2000-09-06 Library SAGTEST Name NOCTEST2 Type Program Statement No NOC NOCable ------------------------ -------- -------- DB AT CONDITION 6 0 MOVE/COMPUTE/ASSIGN 0 371 EXAMINE 4 0 COMPRESS 0 7 WRITE 47 0 INPUT 2 0 NEWPAGE 2 0 REINPUT 6 0 FIND 1 0 READ 1 0 HISTOGRAM 1 0 ELSE/CLOSE LOOP 0 55 LOOPEND FOR/REPEAT 0 5 BLOCK START 8 0 ON ERROR 1 0 END 1 0 STOP 2 0 RETURN 2 0 MORE |
オプション "Code Profile" で生成される統計レポートには、最適化に適したソースプログラム内のカテゴリでグループ化されたステートメントの連続するシーケンスが表示されるか、最適化されたプログラムに対して生成された NOC コーディングがリストされます。 オカレンスは強調表示されます。
09:59:04 ***** NATURAL NOCSTAT COMMAND ***** 2000-09-06 Library SAGTEST Name NOCTEST1 Type Program Line Statement ----- ------------------------- 0000 ON ERROR 0000 MCG OPTIONS 0045 MCG OPTIONS 0050 NOC CODE 0050 NOC CODE 0050 NOC CODE 0050 NOC CODE 1110 SET KEY 1140 NOC CODE 1140 NOC CODE 1145 NOC CODE 1145 NOC CODE 1150 NOC CODE 1150 NOC CODE 1155 NOC CODE 1155 NOC CODE 1160 NOC CODE 1160 NOC CODE MORE |
10:01:36 ***** NATURAL NOCSTAT COMMAND ***** 2000-09-06 Library SAGTEST Name NOCTEST2 Type Program Line Statement ----- ------------------------- 0000 ON ERROR 0000 MCG OPTIONS 0100 MOVE/COMPUTE/ASSIGN <-- NOCable 0100 MOVE/COMPUTE/ASSIGN <-- NOCable 0100 MOVE/COMPUTE/ASSIGN <-- NOCable 1920 MOVE/COMPUTE/ASSIGN <-- NOCable 1920 FOR <-- NOCable 1920 MOVE/COMPUTE/ASSIGN <-- NOCable 1920 FOR/REPEAT IF <-- NOCable 1930 COMPRESS <-- NOCable 1940 LOOPEND FOR/REPEAT <-- NOCable 1960 MOVE/COMPUTE/ASSIGN <-- NOCable 1960 MOVE/COMPUTE/ASSIGN <-- NOCable 1970 MOVE/COMPUTE/ASSIGN <-- NOCable 1970 MOVE/COMPUTE/ASSIGN <-- NOCable 1980 MOVE/COMPUTE/ASSIGN <-- NOCable 1980 MOVE/COMPUTE/ASSIGN <-- NOCable 1990 MOVE/COMPUTE/ASSIGN <-- NOCable MORE |
バッチモードで NOCSTAT レポートを処理するジョブの例を以下に示します。 ジョブの実行後、標準的な転送ツールを使用して、生成されたワークファイルをさらに処理するためにホストから PC に転送できます。
//NOCBATCH JOB (NOC,,,30),CLASS=K,MSGCLASS=X 00000100 //NATEX EXEC PGM=NATBAT31,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
* $$ JOB JNM=NOCTST,CLASS=5,DISP=D * $$ LST CLASS=Q,DISP=D // JOB NOCTST // ASSGN SYS001,DISK,VOL=xxxxxx,SHR // DLBL CMWKF01,'NOCSTAT.FILE.ONE',0 // EXTENT SYS001,xxxxxx,1,0,1,150 // EXEC NAT234BA,SIZE=NAT314BA,PARM='SYSRDR' IM=D,OBJIN=R /* ADARUN DBID=185 /* NOCSTAT *;library;X; ; ; ;X; . FIN /* /&
/.BAT234 LOGON NAT,1 / SYSFILE SYSOUT=NAT314.OUT / SYSFILE SYSLST=NAT314.LST /SKIP .NOP000 ====================================================================== NAME : E.NAT314 S T A R T B A T C H N A T U R A L ====================================================================== /.NOP000 REMARK / OPTION DUMP=YES,MSG=FL / FILE NOCSTAT.OUT,LINK=W01 / FILE ADAUSER ,LINK=DDCARD / FILE $SAG.ADA623.MOD ,LINK=BLSLIB00 / SYSFILE TASKLIB=MOD234 / SYSFILE SYSDTA=(SYSCMD) / FILE NAT314.CMPRMIN,LINK=CMPRMIN / DCLJV NATJV1,LINK=*NATB2JV / FILE $NAT.ADALNK.PARMS,LINK=DDLNKPAR / REMARK %%%%%%%%%% BATCH-PHASE %%%%%%%%%%%%%% / EXEC NAT314 NOCSTAT *,ADE,X, , , ,X, , ,X . FIN