システム上での実行のために、生成コードを最適化するレベルを変更することができます。 コンパイラーがコードを最適化する場合、同じ出力でも、必要なシステム・リソースの量が少なくなるように、 処理がより簡略に実行されるショートカットを探します。 次に、ショートカットをマシン・コードに変換します。
たとえば、
a = (x + y) + (x + y) + 10
a の解決において、コンパイラーは 2 つの式 (x + y) が同じものであることを認識し、2 番目の式にはすでに計算済みの値を使用します。
最適化をさらに進めると、プログラム・オブジェクトのシステム上での実行効率がそれだけ良くなります。 しかし、最適化をさらに進めると、コンパイル時間が増え、最適化された変数を見られない場合もでてきます。 モジュール・オブジェクトの最適化レベルを変更して、プログラム・オブジェクトのデバッグ時の変数を正確に表示し、 それからプログラム・オブジェクトが実行用に準備ができた段階で、最適化レベルを変更することができます。
ILE コンパイラーでは、一連の最適化レベルをサポートしています。 現在 4 つの最適化レベルがあり、ILE COBOL のユーザーが使用できるのはそのうちの 3 つです。 その 3 つの最適化レベルとは、以下のとおりです。
実行時のパフォーマンスを最適化する効果は、アプリケーション・プログラムのタイプによって変わります。 たとえば、数値計算のアプリケーション・プログラムの場合、 最適化は実行時パフォーマンスをかなり向上させることがありますが、 入出力を主とするアプリケーション・プログラムの場合、 最適化を行っても実行時パフォーマンスはほんのわずかしか向上しない場合があります。
プログラム・オブジェクト内のモジュール・オブジェクトの最適化レベルを変更するには、 モジュール処理 (WRKMOD) コマンドを使用してください。 コマンド行に WRKMOD と入力すると、「モジュールの処理」画面が表示されます。 「モジュールの処理」画面でオプション 5 (表示) を選択し、変更の必要がある属性値を表示します。 「モジュール情報の表示」画面は、図 26 に示されています。
モジュール情報の表示 画面 7 の 1 モジュール . . . . . . . . . . : COPYPROC ライブラリー . . . . . . . . : TESTLIB 詳細 . . . . . . . . . . . . . : *BASIC モジュール属性 . . . . . . . . : CBLLE モジュール情報 : モジュール作成日 / 時刻 . . . . . . . . . . . . . . . : 98/08/25 12:57:17 ソース・ファイル . . . . . . . . . . . . . . . . . . : QCBLLESRC ライブラリー. . . . . . . . . . . . . . . . . . . . : TESTLIB ソース・メンバー . . . . . . . . . . . . . . . . . . : COPYPROC ソース・ファイル変更日 / 時刻 . . . . . . . . . . . . : 98/08/19 12:04:57 所有者. . . . . . . . . . . . . . . . . . . . . . . . : TESTLIB コード化文字セット識別コード. . . . . . . . . . . . . : 37 テキスト記述 . . . . . . . . . . . . . . . . . . . . : PG - COPY WITHIN PR OCESS STATEMENT EXAMPLE 作成データ . . . . . . . . . . . . . . . . . . . . . : *YES 中間言語データ . . . . . . . . . . . . . . . . . . . : *NO 続く... 続行するには、実行キーを押してください。 F3= 終了 F12= 取り消し
まず、作成データ の値が *YES になっているか調べてください。 これは、最適化レベル 値が変更されても、モジュール・オブジェクトを変換できることを意味しています。 値が *NO の場合、最適化レベルを変更するためには、モジュール・オブジェクトを再作成し、 マシン・インストラクション・テンプレートを含めなければなりません。
次に、次ページ・キーを押すと、モジュール・オブジェクトの情報がさらに表示されます。
モジュール情報の表示 画面 7 の 1 モジュール . . . . . . . . . . : COPYPROC ライブラリー . . . . . . . . : TESTLIB 詳細 . . . . . . . . . . . . . : *BASIC モジュール属性 . . . . . . . . : CBLLE 分類順序テーブル . . . . . . . . . . . . . . . . . . : *HEX 言語識別コード . . . . . . . . . . . . . . . . . . . : *JOBRUN 最適化レベル . . . . . . . . . . . . . . . . . . . . : *NONE 最大最適化レベル . . . . . . . . . . . . . . . . . . : *FULL デバッグ・データ. . . . . . . . . . . . . . . . . . . : *YES 圧縮 . . . . . . . . . . . . . . . . . . . . . . . . : *NO プログラム入り口プロシージャー名. . . . . . . . . . . : _Qln_pep パラメーターの数 . . . . . . . . . . . . . . . . . . : 0 モジュールの状態. . . . . . . . . . . . . . . . . . . : *USER モジュール定義域 . . . . . . . . . . . . . . . . . . : *SYSTEM エクスポートされた定義済み記号の数. . . . . . . . . . : 2 インポートされた (未解決) 記号の数. . . . . . . . . . : 14 続く... 続行するには、実行キーを押してください。 F3= 終了 F12= 取り消し
最適化レベル 値を調べてください。 最適化レベル値がすでに希望するレベルになっている場合もあります。
モジュールにマシン・インストラクション・テンプレートがあり、 最適化レベルを変更したい場合には、F12 (取り消し) を押します。 「モジュールの処理」画面が表示されます。 最適化レベルを変更するモジュール・オブジェクトの場合には、オプション 2 (変更) を選択します。 図 29 に示されているとおりに、CHGMOD コマンド・プロンプトが表示されます。 モジュールの最適化 プロンプトに指定されている値を上書き入力してください。
次に、次ページ・キーを押すと、モジュール・オブジェクトの情報の最後のものが表示されます。
モジュール情報の表示 画面 7 の 1 モジュール . . . . . . . . . . : COPYPROC ライブラリー . . . . . . . . : TESTLIB 詳細 . . . . . . . . . . . . . : *BASIC モジュール属性 . . . . . . . . : CBLLE プロファイル・データ. . . . . . . . . . . . . . . . . : *NOCOL パフォーマンス収集使用可能 . . . . . . . . . . . . . : *PEP テラスペース記憶域使用可能化. . . . . . . . . . . . . : *YES ストレージ・モデル. . . . . . . . . . . . . . . . . . : *SNGLVL ライセンス内部コード・オプション. . . . . . . . . . . : *NONE モジュールの互換性 : モジュールの作成時期. . . . . . . . . . . . . . . . . : V5R1M0 モジュールの作成目的. . . . . . . . . . . . . . . . . : V5R1M0 モジュールを復元できる最も初期のリリース . . . . . . : V5R1M0 必要な変換 . . . . . . . . . . . . . . . . . . . . . : *NO 終わり 続行するには、実行キーを押してください。 F3= 終了 F12= 取り消し
パフォーマンス収集使用可能 プロンプトは、 そのモジュールがプログラム入り口点への入り口とそこからの出口だけについてのパフォーマンス測定コードで作成されていることを示します。 モジュールの互換性プロンプトは、そのモジュールと互換性のあるオペレーティング・システムのリリースおよびバージョンを示します。
モジュールの変更 (CHGMOD) 選択項目を入力して、実行キーを押してください。 モジュール . . . . . . . . . . . COPYPROC 名前, 総称*, *ALL ライブラリー . . . . . . . . . TESTLIB_ 名前, *USRLIBL, *LIBL モジュールの最適化 . . . . . . . *NONE_ *SAME, *FULL, *BASIC... 識別情報の除去 . . . . . . . . . *DBGDTA *SAME, *NONE, *ALL... 値の続きは + パフォーマンス収集使用可能 : 収集レベル . . . . . . . . . *PEP *SAME, *NONE, *PEP, *FULL... プロシージャー . . . . . . . *ALLPRC, *NONLEAF プロファイリング・データ . . . *COL *SAME, *NOCOL, *COL モジュールの強制再作成 . . . . *NO *NO, *YES テキスト '記述' . . . . . . . . 'PG - COPY WITHIN PROCESS STATEMENT EXAMPLE '____________________________ 終わり F3= 終了 F4= プロンプト F5= 最新表示 F10= 追加のパラメーター F12= 取り消し F13= この画面の使用法 F24= キーの続き
モジュール・オブジェクトを低いレベルの最適化に変更すると、デバッグ中に変数の値を表示して、 場合によっては変更することができるようになります。
最適化を変更する追加モジュール・オブジェクトのプロセスを繰り返します。 同じプログラム・オブジェクト内で変更するモジュール・オブジェクトが 1 つであっても複数であっても、 システムがそれらのモジュール・オブジェクトを検出すると、 すべてのインポートが解決されるので、プログラム作成時間は同じです。
プログラム・オブジェクト内でモジュール・オブジェクトの最適化レベルの変更を終了したら、CRTPGM コマンドを使用してプログラム・オブジェクトを再作成するか、 または UPDPGM コマンドを使用して、新しいモジュール・オブジェクトによって既存のプログラム・オブジェクトを更新してください。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.