* SELECT TOPIC * 履歴 (history) サブファイル (subfile) DB2/400 (db2/400) 実行管理 (work mng.) ユーティリティ (utility) やろうぜAPI (api) ロジック上の注意 (logic) BOOKS (books) ちょっと技情報 (tips) 標準化案 (standardization) * SELECT TOPIC * ダウンロード (download) FAQコーナー (faq) CLP知ったもん勝ち! 大事な付録 (appendix) LINKS (links) プログラマー通信 (messages) AS/400予備校 (prep. school) AS/400セットアップ (setup) プログラム部品集 (parts) Colossus (colossus) 掲示板 (bbs)
updated on 2004.06.23
[ Previous ] [ HOME ] [ Upper ] [ Next ]
ここに掲げるのは、SYSTEM36のマニュアルとSYSTEM38の講習会テキストに出ていた内容です。ですので、AS/400にそのまま当てはまるかは定かではありません。でも、なにかの参考になるかもしれません。
PAGサイズの減少 ODPのSHAREをする。(OVRDBFでSHARE(*YES)する。このとき、共用されるプログラムはLRはオフにする事。) プログラムの複数レベルの階層構造にせず、単一レベル構造にする。(外サブを使わない) 複数の物理ファイルを1つの論理ファイルにまとめて、プログラムから処理するファイルの数を減らす。 プログラムで使用しないレコード様式を含むファイルがある場合は、IGNOREで、不要なレコード様式を除去する。 不要なフィールドの定義を除去する。 時々しか使用されないファイルは、明示的なOPEN、CLOSEを使用する。 CPUサービスの減少 CALL命令を減らす。 構造化プログラムテクニックを使用する。 CALLで、複数のパラメータを渡さず、データ構造を利用して、単一フィールドにする。 標識の繰り返し使用を避ける。 添え字付き配列が同じ名前で繰り返しコーディングされている場合は、前もって単一フィールドに移動してそれを利用する。 数字の桁数は奇数にする。 サブファイルの使用を避けて、配列にする。または、SFLPAGE=SFLSIZEにする。 CHGJOBを頻繁にするのを避ける SETON LRを止めて、RETURNで戻る。 その他 ファイルコーディングの順番は、頻度の高いものから。 同じタイミングで使用するファイルは、ファイル仕様書では、隣接してコーディングする。 遠隔の端末に対しては、PUTOVRキーワードで、データのオーバーライドをする。 遠隔の印刷に対しては、プログラム外部記述のプリンターファイルを使用する。 GET & アンロックのコーディングが可能か。 *BLANKをやめて固定情報にする。 画面に対するPUTは、出来る限り1回で全画面を出力する。 DBのレコードロックの時間を短くする。
ODPのSHAREをする。(OVRDBFでSHARE(*YES)する。このとき、共用されるプログラムはLRはオフにする事。) プログラムの複数レベルの階層構造にせず、単一レベル構造にする。(外サブを使わない) 複数の物理ファイルを1つの論理ファイルにまとめて、プログラムから処理するファイルの数を減らす。 プログラムで使用しないレコード様式を含むファイルがある場合は、IGNOREで、不要なレコード様式を除去する。 不要なフィールドの定義を除去する。 時々しか使用されないファイルは、明示的なOPEN、CLOSEを使用する。
ODPのSHAREをする。(OVRDBFでSHARE(*YES)する。このとき、共用されるプログラムはLRはオフにする事。)
プログラムの複数レベルの階層構造にせず、単一レベル構造にする。(外サブを使わない)
複数の物理ファイルを1つの論理ファイルにまとめて、プログラムから処理するファイルの数を減らす。
プログラムで使用しないレコード様式を含むファイルがある場合は、IGNOREで、不要なレコード様式を除去する。
不要なフィールドの定義を除去する。
時々しか使用されないファイルは、明示的なOPEN、CLOSEを使用する。
CALL命令を減らす。 構造化プログラムテクニックを使用する。 CALLで、複数のパラメータを渡さず、データ構造を利用して、単一フィールドにする。 標識の繰り返し使用を避ける。 添え字付き配列が同じ名前で繰り返しコーディングされている場合は、前もって単一フィールドに移動してそれを利用する。 数字の桁数は奇数にする。 サブファイルの使用を避けて、配列にする。または、SFLPAGE=SFLSIZEにする。 CHGJOBを頻繁にするのを避ける SETON LRを止めて、RETURNで戻る。
CALL命令を減らす。
構造化プログラムテクニックを使用する。
CALLで、複数のパラメータを渡さず、データ構造を利用して、単一フィールドにする。
標識の繰り返し使用を避ける。
添え字付き配列が同じ名前で繰り返しコーディングされている場合は、前もって単一フィールドに移動してそれを利用する。
数字の桁数は奇数にする。
サブファイルの使用を避けて、配列にする。または、SFLPAGE=SFLSIZEにする。
CHGJOBを頻繁にするのを避ける
SETON LRを止めて、RETURNで戻る。
ファイルコーディングの順番は、頻度の高いものから。 同じタイミングで使用するファイルは、ファイル仕様書では、隣接してコーディングする。 遠隔の端末に対しては、PUTOVRキーワードで、データのオーバーライドをする。 遠隔の印刷に対しては、プログラム外部記述のプリンターファイルを使用する。 GET & アンロックのコーディングが可能か。 *BLANKをやめて固定情報にする。 画面に対するPUTは、出来る限り1回で全画面を出力する。 DBのレコードロックの時間を短くする。
ファイルコーディングの順番は、頻度の高いものから。
同じタイミングで使用するファイルは、ファイル仕様書では、隣接してコーディングする。
遠隔の端末に対しては、PUTOVRキーワードで、データのオーバーライドをする。
遠隔の印刷に対しては、プログラム外部記述のプリンターファイルを使用する。
GET & アンロックのコーディングが可能か。
*BLANKをやめて固定情報にする。
画面に対するPUTは、出来る限り1回で全画面を出力する。
DBのレコードロックの時間を短くする。
記憶域の節約方法 参照しない標識を取り除く。 演算の作業フィールドを使い回す。 出力の英数字フィールド及び固定情報を記述する場合、間に入る必要なブランクを含めて、一つの固定情報にしてしまう。(隣接するリテラルを1つのリテラルにする) データ構造を利用して、複数タイプのレコード用に同じ内部記述を定義して、MOVE命令を減らす。 多数の条件標識のテストを避ける用にコーディングする。 TESTB、BITON、BITOFでは、演算項目2で実際のビットパターンを使う。 必要不可欠な場合をのぞき、四捨五入を使用しない。 小数部分の桁数を等しくした同じ長さの数字フィールドを使用する。フィールドが同じ長さにならないときは、小数部分の桁数だけでも同じにする。 入力仕様書でレコード記入行をいくつも指定しないで、OR記入行を用いる。(内部記述のこと) 必要不可欠な場合をのぞき、停止標識は使用しない。 配列で変数指標の使用をなるべく少なくします。 不必要なテーブルまたは配列を定義しない。 入力レコードのすべてのフィールドを定義するかわりに、1つの大きなフィールドまたは配列だけを定義する。(2進数やパックには効果なし):内部記述のこと 実行効率改善の手法 除算よりも乗算のほうが早く行われます。 800÷4=800 * 0.25 LOKUPは、RPGのループよりも配列中の値を早く見つけられる。 256バイト未満の配列全体を消去する場合は、フィールドとしてデータ構造中に配列を指定して、そのフィールドに*BLANKをセットしたほうが処理が迅速。 入出力データのパックとアンパックは、10進数から2進数への変換、その逆の変換よりも早く行われる。
参照しない標識を取り除く。 演算の作業フィールドを使い回す。 出力の英数字フィールド及び固定情報を記述する場合、間に入る必要なブランクを含めて、一つの固定情報にしてしまう。(隣接するリテラルを1つのリテラルにする) データ構造を利用して、複数タイプのレコード用に同じ内部記述を定義して、MOVE命令を減らす。 多数の条件標識のテストを避ける用にコーディングする。 TESTB、BITON、BITOFでは、演算項目2で実際のビットパターンを使う。 必要不可欠な場合をのぞき、四捨五入を使用しない。 小数部分の桁数を等しくした同じ長さの数字フィールドを使用する。フィールドが同じ長さにならないときは、小数部分の桁数だけでも同じにする。 入力仕様書でレコード記入行をいくつも指定しないで、OR記入行を用いる。(内部記述のこと) 必要不可欠な場合をのぞき、停止標識は使用しない。 配列で変数指標の使用をなるべく少なくします。 不必要なテーブルまたは配列を定義しない。 入力レコードのすべてのフィールドを定義するかわりに、1つの大きなフィールドまたは配列だけを定義する。(2進数やパックには効果なし):内部記述のこと
参照しない標識を取り除く。
演算の作業フィールドを使い回す。
出力の英数字フィールド及び固定情報を記述する場合、間に入る必要なブランクを含めて、一つの固定情報にしてしまう。(隣接するリテラルを1つのリテラルにする)
データ構造を利用して、複数タイプのレコード用に同じ内部記述を定義して、MOVE命令を減らす。
多数の条件標識のテストを避ける用にコーディングする。
TESTB、BITON、BITOFでは、演算項目2で実際のビットパターンを使う。
必要不可欠な場合をのぞき、四捨五入を使用しない。
小数部分の桁数を等しくした同じ長さの数字フィールドを使用する。フィールドが同じ長さにならないときは、小数部分の桁数だけでも同じにする。
入力仕様書でレコード記入行をいくつも指定しないで、OR記入行を用いる。(内部記述のこと)
必要不可欠な場合をのぞき、停止標識は使用しない。
配列で変数指標の使用をなるべく少なくします。
不必要なテーブルまたは配列を定義しない。
入力レコードのすべてのフィールドを定義するかわりに、1つの大きなフィールドまたは配列だけを定義する。(2進数やパックには効果なし):内部記述のこと
除算よりも乗算のほうが早く行われます。 800÷4=800 * 0.25 LOKUPは、RPGのループよりも配列中の値を早く見つけられる。 256バイト未満の配列全体を消去する場合は、フィールドとしてデータ構造中に配列を指定して、そのフィールドに*BLANKをセットしたほうが処理が迅速。 入出力データのパックとアンパックは、10進数から2進数への変換、その逆の変換よりも早く行われる。
除算よりも乗算のほうが早く行われます。 800÷4=800 * 0.25
LOKUPは、RPGのループよりも配列中の値を早く見つけられる。
256バイト未満の配列全体を消去する場合は、フィールドとしてデータ構造中に配列を指定して、そのフィールドに*BLANKをセットしたほうが処理が迅速。
入出力データのパックとアンパックは、10進数から2進数への変換、その逆の変換よりも早く行われる。
1998/7/18
You are at K's tips-n-kicks of AS/400