############################################################################### # # Visu-IT! # # Data Declaration System (DDS) # # - E X A M P L E - # ############################################################################### # # This is an example script which demonstrates the usage of the DServer COM API. # The script performs the following actions: # 1) Open database # -> must be a DDS V5.0.0 database/DServer because of using the new # function "GetAttribute2(..)" # 2) Find description of a specific parameter 'otto' (name search) # 3) Close database # # Required DDS Version: >= V5.0 # # Note: # ##### # $dBName is an input data of the program # $opt is set to 1 # database has to be not empty ############################################################################### use strict; use warnings; use diagnostics; use Config; use Getopt::Long; use Benchmark; use OLE; use Win32::OLE::Variant; use FindBin; use lib $FindBin::Bin; use FindBin(qw($Bin $Script $RealBin $RealScript)); use vars qw($dserver $dds $dBName $opt); ############################################################################### # # open_DDS : This function opens DDS and returns $dserver, $dds, $result # ############################################################################### sub open_DDS () { my $result = 0; $dserver = Win32::OLE->new("DServer.Database.6"); if (defined $dserver) { $dds = $dserver->Open($dBName, $opt); $result = 1; if (not defined $dds) { my $msg = "Can't open database " . $dBName; print "Error ".$msg."\n"; $dds = 0; } else { print "Success => database open\n"; } } else { $dserver = 0; $dds = 0; } return ($dserver, $dds, $result); } ############################################################################### # # close_DDS : This procedure save and close DB # ############################################################################### sub close_DDS ($) { my $dbObject = shift; my $result = 0; $dbObject->Save(); undef($dds) if (defined $dds); $dbObject->Close(); print "close_DDS"; undef ($dbObject); return $result; } ############################################################################### # # Find_all : This procedure find all data and deletes Editor List # ############################################################################### sub desc_parameter () { my (@list, $l, $name, $bool, $value, $desc); $l = $dds->Find("parameter", "*"); @list = @{$l} if (defined $l); if (defined $l) { foreach $value (@list) { if ($value->InstanceName eq "otto") { $name = $value->InstanceName; $desc = $value->getAttribute2("description"); print "--No description for ".$name."\n" if (not defined $desc); print "--Description for ".$name." = ".$desc."\n" if (defined $desc); } undef($name); undef($desc); } undef ($l); } } # # main # $dBName = "C:\\temp\\my_DDS_DB"; &open_DDS (); &desc_parameter (); &close_DDS($dserver) if (defined $dserver); exit (1); __END__