Performing some final
housekeeping
When your application has finished processing pipelines, you need to
make sure it takes care of a few cleanup chores. These chores basically
involve releasing the resources you obtained at the beginning to support
pipeline execution.
Garbage collection
You should avoid using the DESTROY statement to clean up resources
unless you are sure that the objects you are destroying are not used
elsewhere. PowerBuilder’s garbage collection mechanism automatically
removes unreferenced objects. For more information, see Garbage collection and memory
management.
To clean up when you have finished using pipelines:
-
Destroy the instance that you created of your supporting user
object.To do this, code the DESTROY statement in an appropriate script
and specify the name of the variable that contains that user-object
instance. -
Disconnect from the pipeline’s source and destination
databases.To do this, code two DISCONNECT statements in an appropriate
script. In one, specify the name of the variable that contains your
source transaction-object instance. In the other, specify the name of
the variable that contains your destination transaction-object
instance.Then test the result of each DISCONNECT statement.
-
Destroy your source transaction-object instance and your
destination transaction-object instance.To do this, code two DESTROY statements in an appropriate
script. In one, specify the name of the variable that contains your
source transaction-object instance. In the other, specify the name of
the variable that contains your destination transaction-object
instance.For more information on coding the DESTROY and
DISCONNECT statements, see the section called “DESTROY” in PowerScript Reference and the section called “DISCONNECT” in PowerScript Reference.
Example
The following code in the Close event of the w_sales_extract window
takes care of these cleanup chores.
Destroying the user-object instance
At the beginning of the Close event script, code the following
statement to destroy the instance of the user object
u_sales_pipe_logistics (which is stored in the iuo_pipe_logistics
variable):
|
1 |
DESTROY iuo_pipe_logistics |
Disconnecting from the source database
Next, code these statements to disconnect from the source database,
test the result of the disconnection, and destroy the source
transaction-object instance (which is stored in the itrans_source
variable):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
DISCONNECT USING itrans_source; // Check result of DISCONNECT statement. IF itrans_source.SQLCode = -1 THEN Beep (1) MessageBox("Database Connection Error", & "Problem when disconnecting from the source " & + "database. Please call technical support. " & + "~n~r~n~rDetails follow: " + & String(itrans_source.SQLDBCode) + " " + & itrans_source.SQLErrText, Exclamation!) END IF DESTROY itrans_source |
Disconnecting from the destination
database
Finally, code these statements to disconnect from the destination
database, test the result of the disconnection, and destroy their
destination transaction-object instance (which is stored in the
itrans_destination variable):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
DISCONNECT USING itrans_destination; // Check result of DISCONNECT statement. IF itrans_destination.SQLCode = -1 THEN Beep (1) MessageBox("Database Connection Error", & "Problem when disconnecting from " + & "the destination (Sales) database. " + & "Please call technical support." + & "~n~r~n~rDetails follow: " + & String(itrans_destination.SQLDBCode) + " " + & itrans_destination.SQLErrText, Exclamation!) END IF DESTROY itrans_destination |