Tips

Matchファイルを利用してテーブルUUIDを取得する

日付2010/06/25
ID76091 (英語原文参照)
バージョンv11
プラットフォームMac/Win

11.5以降, データベースを開くたびにデータベース名.Matchという名称のファイルが自動的に更新されるようになりました。このファイルには, 開かれたストラクチャのテーブル番号とUUIDを結びつける情報が記録されています。

Matchファイル自体は, XML文書であり, テーブルの番号とUUIDはDataTable要素の属性に反映されています。

このファイルは常にストラクチャファイルと同じディレクトリにあり, 最新の情報が登録されているので, 下記のようなコードにより, テーブル番号に対応するUUIDを調べることができます。

C_TEXT($uuid_val;$file;$xml_ref;$child;$name;$value;$num_value;$uuid_val)
$uuid_val:="none_found"
$file:=Structure file
$file:=Substring($file;1;Length($file)-3)+"Match"
$xml_ref:=DOM Parse XML source($file)
$child:=DOM Get first child XML element($xml_ref;$name;$value)
DOM GET XML ATTRIBUTE BY NAME($child;"num";$num_value)
If ($num_value=String(Table($mytable_ptr)))
  DOM GET XML ATTRIBUTE BY NAME($child;"TableDefID";$uuid_val)
Else 
  $child:=DOM Get next sibling XML element($child;$name;$value)
  While ((ok=1) & ($uuid_val="none_found"))
    DOM GET XML ATTRIBUTE BY NAME($child;"num";$num_value)
    If ($num_value=String(Table($mytable_ptr)))
      DOM GET XML ATTRIBUTE BY NAME($child;"TableDefID";$uuid_val)
    End if 
    $child:=DOM Get next sibling XML element($child;$name;$value)
  End while 
End if