PB 電子会議室
カテゴリ:ユーザオブジェクト
日付:2001年02月08日 13:05 発信者:ryochan
題名:RE(9):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは?
続きです
>それでも datastore_1 と datastore_2 は、IF文で比較すると
>・両方とも同じデータストアへの参照が格納されていれば「イコール」
>・異なるデータストアへの参照が格納されていれば「ノットイコール」
>と正しく判断されます。
>この既成事実から推測すると、PBが独自にハンドル(番号)を管理し、オブジェクト型の
>変数にはこの数値が入っていると考えると非常にスッキリするんです。
この例を基に具体的に書くと
long l_row
1.datastore ds_1,ds_2
2.ds_1 = CREATE DataStore
ds_1.dataobject = \'d_xxx\'
3.ds_2 = ds_1
ds_2.settransobject(SQLCA)
ds_2.retrieve()
l_row = ds_2.rowcount()
messagebox(\'\',string(l_row))
ds_2はCREATEさせていないのに
ds_1の情報が代入されています(見えます)
そこで
datastore型で宣言したものが実体はdatastore型を
表すポインタと考えると、
内部では
1.□□□□◇□□□◇□□□□□□□□□
↑ ↑
ds_1 ds_2
ポインタ領域確保
2.□□□□◇□□□◇□□□■■■■■■■■
↑←?????→|ds_1データ部|
ds_1
3.□□□□◇□□□◇□□□■■■■■■■■
↑??→↑??→|
| |??→|
ds_2
とdatastore型のds_2ポインタが指し示す
対象をds_1のデータ部にしろといっている
のだと思います。
これはすなわち関数の引数の渡し方でも
同じ事です。
Takaさんの例もこれで説明つきますよね。
これはアドレスを比較していると考えられませんか?
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows98
DBMS Oracle SQL*Net 8
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.