【HolonEnterprise】【HOLON/AB】文字列代入処理の注意事項
質問内容
【HolonEnterprise】【HOLON/AB】文字列代入処理の注意事項
回答内容
詳細 |
HOLON/Enterprise(V4.0) OV#8以降、HolonEnterprise(V5.0) OV#4以降、およびHolonEnterprise(V6.0)では文字列代入の性能改善を行っており、文字列代入の実装方式が変更になりました。
以下のようにABL言語規約で保証されていないロジックを使用している場合に生成されたアプリケーションの動作が以前と異なる可能性があります。
(なお、実装方式はアプリケーションの生成時に決定されます)
1.構造体Aを定義する。AにはZCHAR5桁の変数A1とA2が定義されている
2.ZCHAR10桁のパラメータとしてA.A1を関数Fに渡す。(F内でのパラメータ名はP)
3.関数F内でPにZCHAR型変数を代入する。
または、
1.構造体Aを定義する。AにはZCHAR5桁の変数A1とA2が定義されている
2.Aのポインタを使用してZCHAR10桁のBASED変数Bを定義する
3.BにZCHAR型変数を代入する。
上記のような場合、文字列の代入はZCHAR型10桁の領域に対して行われます。また、ZCHAR型においてNULL文字以降の文字列は不定です。
仮に代入される文字列が4桁であれば、パラメータPや変数Bの6桁以降は不定領域となります。(5桁目がNULL文字)
これにより、代入後の変数A.A1の内容も不定となります。
本来このような不定領域を参照するようなプログラミングは行うべきではありません。
実装方式の変更前には上記の不定領域は代入前の状態が保持されており、不定領域を参照した場合にも意図したように動作する場合がありましたが、変更後の実装方式では不定領域も更新されることになります。
上記のようなプログラミングを行っている場合には、次の方法で実装方法の互換を保つことが可能です。
また、実装方法は生成時に決定されるため、以下の設定を開発環境で行った後に生成してください。
(この場合、従来性能となり、性能改善は行われません)
[HOLON/Enterprise(V4.0>, HolonEnterprise(V5.0)]
Windows95/98/NT
HolonEnterpriseインストールディレクトリ\bin配下にテキストファイルablop.envを作成し、ファイル中に以下の内容を記述する。
(行末は必ず改行してください)。
ASSIGNMODECOMP=ON
UX/4800, HP-UX
HolonEnterpriseインストールディレクトリ/etc配下にテキストファイルabloption.envを作成し、ファイル中に以下の内容を記述する。
(行末は必ず改行してください)。
ASSIGNMODECOMP=ON
[V6.0]
「生成オプション」-「文字列操作最適化」で「最適化なし」を選択する。
|
環境 |
Version |
HOLON/Enterprise(V4.0) OV#08以降
HolonEnterprise(V5.0) OV#04以降
HolonEnterprise(V6.0)以降
|
OS |
全て |
製品名カテゴリ
-
コンテンツID:
3150017006
-
公開日:
2000年04月01日
-
最終更新日:2000年04月01日
アンケート
サポート情報充実のためアンケートにご協力をお願いいたします。
コメント欄: