8.2.5 列データ編集UOCを作成するときの注意
列データ編集UOC実行時には,環境変数に,共用ライブラリファイルが格納されているディレクトリパスを指定してください。なお,環境変数と共用ライブラリファイルはOSごとに異なります。OS,環境変数,及び共用ライブラリファイルの対応を次の表に示します。
OS |
環境変数 |
共用ライブラリファイル |
---|---|---|
Linux |
LD_LIBRARY_PATH |
libhdscuoc.so |
HP-UX |
SHLIB_PATH |
libhdscuoc.so |
AIX |
LIBPATH |
libhdscuoc.a |
環境変数が指定されていない場合や,環境変数で指定したディレクトリパス下に共用ライブラリファイルが存在しない場合は,列データ編集UOCを使わない通常の反映処理が実行されます。
- 〈この項の構成〉
(1) シグナルの制限
列データ編集UOC関数内では,シグナルの操作をしないでください。
(2) ファイルの制限
列データ編集UOC関数内で操作できるファイルは,ユーザ独自のファイルだけ(関数内でオープンしたファイルだけ)です。ファイルの規則を次に示します。
-
標準入力,標準出力,標準エラー出力は使わないでください。
-
自らがオープンしたファイル以外をread,write,closeしないでください。
-
HiRDBとDatareplicatorのファイルを操作しないでください。
(3) 共用メモリの制限
共用メモリは,Datareplicatorやほかのシステムと同じ共用メモリを使わないでください。
(4) データ型の制限
-
次のデータ型の列は,列データ編集UOCでは扱えません。
指定した場合,反映定義の解析でエラーになります。
-
抽象データ型(SGMLTEXT,FREEWORD,XML)
-
BLOB型
-
BINARY型
-
-
SMALLFLOAT型データはFLOAT型データとしてUOCに渡します(表現範囲の相違によるオーバフローを避けるため)。
-
抽出列型がUNPACKデータの場合,DECIMAL型へデータ変換した後に列データ編集UOCへデータを渡します。ただし,UNPACKデータがDECIMAL型変換できない場合は,UNPACKデータ形式で列データ編集UOCへ渡します。
(5) SQLの実行の制限
列データ編集UOC関数内,又は列データ編集UOC関数の延長で,SQLを実行しないでください。SQLを実行すると,Datareplicatorのトランザクション管理が不正になることがあります。
(6) AIX版の場合の注意事項
AIX版では,hds_ucoledit1()からhds_ucoledit8()までの関数のすべてを作成しておいてください。すべてを作成していない場合,反映処理の実行時にエラーとなります。
(7) 繰返し列を扱う場合の注意事項
列データ編集UOCでのデータの受け渡しは要素データごとになります(1回の列データ編集UOC関数の呼び出しで,一つの要素データを列データ編集UOC関数へ渡します)。このため,繰返し列の要素数を列データ編集UOCで増やしたり減らしたりすることはできません。