バージョン 4.2.5
 —  Natural Optimizer Compiler  —

NOCSTAT コマンド

Natural Optimizer Compiler で最適化されたプログラムの場合、カタログ時に特定のステートメントをマシンコードに直接変換することができます。 その結果、最適化されたオブジェクトをランタイム時に Natural で実行すると、パフォーマンスを大幅に向上させることができます。

NOCSTAT コマンドでは、カタログされたプログラミングオブジェクトが分析され、統計情報が示されます。これは、プログラムステートメントに NOC による最適化の利点があるかどうか、ある場合はどの程度最適化できているかを判断する場合に役立ちます。

プログラムがカタログされる場合(STOWCATALL)、Natural コンパイラによって、ソースプログラム内のステートメントに基づいて内部(中間)オブジェクトコードが生成されます。 ほとんどの場合、1 つのソースステートメントは 1 つの中間コード命令に変換されます。 ただし、FORREPEAT などの複雑なステートメントの場合、複数の中間コード命令が生成されます。 NOCSTAT 分析は、生成された中間コード命令に基づきます。 そのため、統計レポートで示されるステートメントの数は、ソースプログラム内のステートメントの数を超える場合があります。

このドキュメントでは、次のトピックについて説明します。


NOCSTAT の呼び出し

Start of instruction setNOCSTAT コマンドを呼び出すには

フィールド固有のヘルプ情報を表示するには、関連するフィールドに疑問符を入力して ENTER キーを押すか、カーソルを目的のフィールドに置いて PF1 キーを押します。 NOCSTAT を終了するには、PF3 キーを押します。 

Top of page

レポートの生成

単一のプログラムまたは一連のプログラムの統計レポートを生成できます。 複数のプログラムを一度に分析する場合、レポートは連続して生成されます。 1 つのレポートを見終わったら、ENTER キーを押して次のレポートを表示します。 

NOCSTAT のメインメニューには、以下のオプションがあります。

フィールド  説明
Name 名前または名前の範囲を入力して、調査するプログラムを指定します。
value は、1 つ以上の文字の任意の組み合わせです。
value 単一のプログラム。
* すべてのプログラム。
value* 名前が value で始まるすべてのプログラム。
value> 名前が value 以上であるすべてのプログラム。
value< 名前が value. 以下であるすべてのプログラム。
Library ライブラリの名前を入力するか、範囲を指定します。上記の[Name]フィールドの説明と同じ内容が適用されます。

現在のライブラリがデフォルトです。

NOCable
Objects only
このオプションをマークすると、すでに NOC でコンパイルされているプログラムは除外されます。

マークしないと、NOCSTAT コマンドでは、[Name]および[Library]フィールドで指定したすべての Natural プログラムがデフォルトで選択されます。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 スタイルシートが、テキストメンバ NOCSTLS1 および NOCSTLS2 として Natural ライブラリ SYSEXUEXFNAT システムファイルで提供されています。

以下で説明するように、NOCSTLS1 ではレポートタイプステートメントカテゴリのフォーマット命令が提供され、NOCSTLS2 ではレポートタイプステートメントタイプのフォーマット命令が提供されます。

ファイル拡張子が .xsl のスタイルシートを、XML ワークファイルが保存されている同じディレクトリにダウンロードします。

Entire Connection がインストールされている場合は、レポートを PC のみにルーティングできます。 

Progress Control ワークファイル 1 出力先にのみ適用されます。

このオプションをマークすると、生成されるレポートにリストされるプログラムごとに短いメッセージがオンライン表示されます。

Top of page

レポートフォーマット

以下で説明する 3 つの出力フォーマットから選択して、分析対象ステートメントについて NOCSTAT によって提供される統計を表示できます。 NOC ですでに最適化されているプログラムおよび最適化を検討するプログラムについて、異なるレポートレイアウトが生成されます。 以下のサンプルレポートで相違点を示します。 レポート処理を中断して NOCSTAT のメニューに戻るには、PF3 キーを押します。

以下に参考情報を示します。

ステートメントカテゴリ

オプション Statement Category で生成される統計レポートには、ステートメントのさまざまなカテゴリと対応するオカレンス数、およびプログラムが NOC で最適化されているかどうかに応じて、すでに最適化されているか最適化に適しているステートメントの総数がリストされます。 

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                                     

NOC で最適化されていないプログラムの例:

  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 処理ループを生成するデータベースステートメントの数。FINDREAD など。 
Database Simple 処理ループを生成しないデータベースステートメント。STOREUPDATEDELETEGET など。
SORT / WORK I/O SORT およびワークファイルステートメント。
FOR / REPEAT ループを生成するステートメント。
Screen / Printer 画面およびプリンタ I/O。WRITEDISPLAYINPUT など。
String Manipulation 文字列ステートメント。EXAMINECOMPRESS など。
Arith / Logical 算術および論理ステートメント。MOVECOMPUTEIF など。
Program Calls サブルーチンまたはサブプログラムへの制御の転送。PERFORMCALLNATFETCH など。
Control Transfer プログラム内のジャンプ。ESCAPE BOTTOMFORREPEAT ループなど。 
Block Start コードブロックを区別する非実行ステートメント。DEFINE SUBROUTINEAT END など。 これらのステートメントは実行されないため、最適化されません。 
Set Environment 環境を設定するステートメント。SET CONTROLSET GLOBALSSET KEY など。
System Functions TOTALSUMCOUNTMAXMIN*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 コーディングがリストされます。

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

NOC で最適化されていないプログラムの例:

 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 コーディングがリストされます。 オカレンスは強調表示されます。

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

NOC で最適化されていないプログラムの例:

 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

Top of page

バッチ実行

バッチモードで NOCSTAT レポートを処理するジョブの例を以下に示します。 ジョブの実行後、標準的な転送ツールを使用して、生成されたワークファイルをさらに処理するためにホストから PC に転送できます。

z/OS のサンプルジョブ:

  //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

z/VSE のサンプルジョブ:

  * $$ 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
  /*
  /&

BS2000/OSD のサンプルジョブ:

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

Top of page