dadlllink_run
DLL Usage description
This library contains functionality for export done messages, batches and batch lines to import and import done messages. These functions can be employed once the exchange links have been set up. When running a regular export at the source site export done messages are sent. These information from those messages is stored at the target site as batches and batch lines to import. When the data has been imported at the target site the batches and batch lines to import are deleted and an import done message is sent to the source site.
Note on the function specifications: "iff" means "if and only if".
DLL Prototypes
function extern long lrun.batch.to.import.exists(
domain daxch.link link,
domain daxch.long srun,
domain daxch.pint stry )
pre : true post : true return: True iff the batch to import specified by the
parameters
exists.
function extern long lrun.create.and.send.export.done.message(
domain daxch.link subs,
domain daxch.envi tenv,
domain daxch.comp tcom,
domain daxch.long srun,
domain daxch.pint stry )
pre : The subscription defined by subs, tenv and tcom exists.
srun > 0, stry > 0.
The export done message defined by subs, tenv, tcom, srun and
stry does not yet exist. post : The export done message, specified by
the parameters,
has been stored.
If return then the export done message has accepted = yes,
otherwise it has accepted = no.
After calling this function one or more times, function
lrun.end.sending() must be called. state : Before calling this function
a retry point must be set;
after calling this function a commit must be given;
no commit is given in this function. return: True iff the export done
message has been sent successfully;
false means: the target environment is not available or the
exchange link does not exist or has status inactive (source &
target). desc : This function creates a new message, stores it, and
tries
to send it.
function extern long lrun.create.and.send.export.done.messages.for.
batch(domain daxch.cxch sxch,
domain daxch.cbat sbat,
domain daxch.long srun,
domain daxch.pint stry,
domain daxch.comp startup.company )
pre : srun > 0 and stry > 0. post : For all subscriptions containing the
batch (sxch, sbat), an
export done message has been created.
If return then all created export done messages have
accepted = yes; otherwise one or more messages have
accepted = no. state : Before calling this function a retry
point must be set;
after calling this function a commit must be given;
no commit is given in this function. return: OK iff for all
subscriptions containing the batch (if any)
an export done message has been successfully.
function extern long lrun.create.and.send.import.done.message(
domain daxch.link link,
domain daxch.long srun,
domain daxch.pint stry,
domain daxch.comp startup.company )
pre : link is an existing exchange link; srun > 0 , stry > 0. post : If
return an import done message has been sent to the
source site, otherwise a rejected import done message
has been created. state : Before calling this function a retry
point must be set;
after calling this function a commit must be given;
no commit is given in this function. return: Return value of
lmess.send.import.done(), library
dadlllink_mess. desc : This function is used to send an import done
message for an
active exchange link.
function extern lrun.create.batch.line.to.import(
domain daxch.link link,
domain daxch.long srun,
domain daxch.pint stry,
domain daxch.batl batl,
domain daxch.path sfil )
pre : The batch to import defined by link, srun and stry exists;
usually the batch line to import defined by link, srun, stry,
batl does not yet exist, but if it does this is not a problem;
batl and sfil are filled. post : The batch line to import, specified by
the parameters,
has been created (duplicates are skipped). state : Before calling this
function a retry point must be set;
after calling this function a commit must be given;
no commit is given in this function.
function extern long lrun.create.batch.to.import(
domain daxch.link link,
domain daxch.long srun,
domain daxch.pint stry,
domain daxch.yesno cmpr,
domain daxch.yesno ctrl,
domain daxch.sepa sepa,
domain daxch.sepa ench,
domain daxch.flag flags,
domain daxch.yesno cmpl )
pre : srun > 0, stry > 0 , cmpr, ctrl and cmpl are filled. post : If return
then the batch to import, specified by the
parameters, has been created (duplicates are skipped). state : Before
calling this function a retry point must be set;
after calling this function a commit must be given;
no commit is given in this function. return: True iff the batch to
import created successfully;
false means: the exchange link does not exist or has status
inactive (source/target).
function extern lrun.create.export.done.message(
domain daxch.link subs,
domain daxch.envi tenv,
domain daxch.comp tcom,
domain daxch.long srun,
domain daxch.pint stry )
pre : The subscription defined by subs, tenv, tcom exists.
srun > 0, stry > 0.
The export done message defined by subs, tenv, tcom, srun and
stry does not yet exist. post : The export done message, specified by
the parameters,
has been created; this message has accepted = no. state : Before calling
this function a retry point must be set;
after calling this function a commit must be given;
no commit is given in this function.
function extern long lrun.delete.batch.to.import(
domain daxch.link link,
domain daxch.long srun,
domain daxch.pint stry,
domain daxch.comp startup.company )
pre : true post : If return then the batch to import, specified by
link, srun and stry has been deleted, and
the batch lines to import also have been deleted. state : Before calling
this function a retry point must be set;
after calling this function a commit must be given;
no commit is given in this function. return: True iff a batch to import
has been deleted.
function extern lrun.delete.batches.to.import.of.link(
domain daxch.link link )
pre : true post : The batches to import of the exchange link (if any)
have been deleted, and the batch lines to import of the link
have also been deleted. state : Before calling this function a retry
point must be set;
after calling this function a commit must be given;
no commit is given in this function.
function extern long lrun.delete.export.done.message(
domain daxch.link subs,
domain daxch.long srun,
domain daxch.pint stry,
domain daxch.envi tenv,
domain daxch.comp tcom )
pre : true post : If return then the export done message specified by
the function parameter has been deleted. state : Before calling this
function a retry point must be set;
after calling this function a commit must be given;
no commit is given in this function. return: True iff the export done
message could be deleted.
(False means: export done message did not exist.)
function extern lrun.delete.export.done.messages.of.subscription(
domain daxch.link subs )
pre : true post : The export done messages of the subscription (if any)
have been deleted. state : Before calling this function a retry point
must be set;
after calling this function a commit must be given;
no commit is given in this function.
function extern lrun.delete.rejected.import.done.messages.of.link(
domain daxch.link link )
pre : true post..: The rejected import done messages of the exchange link
(if any) have been deleted. state : Before calling this function a retry
point must be set;
after calling this function a commit must be given;
no commit is given in this function.
function extern lrun.end.sending( )
pre : true post : The messaging channel (required for sending messages from
source environment to target environment or the other way
around) has been closed. desc : After calling this function it is still
possible to send
new messages, but after doing so this function must be called
once again.
function extern long lrun.export.done.message.exists(
domain daxch.link subs,
domain daxch.envi tenv,
domain daxch.comp tcom,
domain daxch.long srun,
domain daxch.pint stry,
ref domain daxch.yesno accepted )
pre : true post : If return then accepted shows whether the export done
message
has been accepted by the target site,
otherwise accepted is empty. return: True iff the export done message
defined by subs, tenv, tcom,
srun and stry exists.
function extern long lrun.export.done.message.exists.for.export.run(
domain daxch.cxch sxch,
domain daxch.cbat sbat,
domain daxch.long srun,
domain daxch.pint stry )
pre : true post : true return: True iff an export done message exists for
the regular
export run specified by the parameters. desc : This function is used to
check whether an entry in the
log table can be deleted.
This should not be done when there is a rejected export done
message, because this export done message will need the
information from the log table when it is resent.
This should also not be done when there is an accepted export
done message, because otherwise duplicates may occur when
running the export again.
function extern long lrun.get.next.batch.to.import.from.active.link(
domain daxch.cxch txch,
domain daxch.cbat tbat,
ref domain daxch.link link,
ref domain daxch.long srun,
ref domain daxch.pint stry,
ref domain daxch.yesno cmpr,
ref string sepa(),
ref domain daxch.sepa ench,
ref domain daxch.flag flags,
domain daxch.comp startup.company )
pre : true post : If return then
- link, srun and stry identify an existing batch to import
of an active exchange link having the specified target
exchange scheme and batch, and having completed = yes;
if there are multiple batches to import for the exchange
link, the values of srun and stry returned will always
be the lowest run/try existing for that exchange link;
- cmpr, sepa and ench will contain the settings for the
ascii files of the batch to import;
- flags will contain the special flags (if any).
If not return then the ref parameters are not filled. return: True iff
an active link exists with one or more batches to
import messages for the specified target exchange scheme
and batch.
function extern long lrun.read.source.file.names(
domain daxch.link link,
domain daxch.long srun,
domain daxch.pint stry,
long no.batch.lines,
const domain daxch.batl batch.line(),
ref domain daxch.path file.name() fixed,
domain daxch.comp startup.company )
pre : no.batch.lines >= 0. post : For all n <= no.batch.lines:
file.name(n) contains the name of the source file (including
directory, but without the system name) for the batch line
specified by link, source run, source try and batch.line(n);
file.name(n) contains an empty string if this batch line to
import could not be found. return: true
function extern long lrun.resend.export.done.messages(
domain daxch.link subs.f,
domain daxch.link subs.t,
domain daxch.envi tenv.f,
domain daxch.envi tenv.t,
domain daxch.comp tcom.f,
domain daxch.comp tcom.t )
pre : true post : If return then all export done messages (if any) of
subscriptions in the specified range have accepted = yes;
otherwise one or more export done messages have accepted = no state : A
retry point is set and a commit is given. return: Whether all export done
messages (if any) have been sent
successfully. desc : The function tries to resend all export done
messages
of subscriptions in the specified range having accepted = no.
function extern long lrun.resend.export.done.messages.detailed(
domain daxch.cxch sxch.f,
domain daxch.cxch sxch.t,
domain daxch.cbat sbat.f,
domain daxch.cbat sbat.t,
domain daxch.envi tenv.f,
domain daxch.envi tenv.t,
domain daxch.comp tcom.f,
domain daxch.comp tcom.t,
domain daxch.cxch txch.f,
domain daxch.cxch txch.t,
domain daxch.cbat tbat.f,
domain daxch.cbat tbat.t )
pre : true post : If return then all export done messages (if any) of
subscriptions in the specified range have accepted = yes;
otherwise one or more export done messages have accepted = no. state : A
retry point is set and a commit is given. return: Whether all export done
messages (if any) have been sent
successfully. desc : The function tries to resend all export done
messages
of subscriptions in the specified range having accepted = no.
function extern long lrun.resend.import.done.messages(
domain daxch.link link.f,
domain daxch.link link.t )
pre : true post : If return then all rejected import done messages in the
specified range (if any) have been sent successfully;
otherwise one or more messages could not be delivered.
All rejected import done messages sent successfully are deleted state :
A retry point is set and a commit is given. return: True iff all rejected import
done messages in the specified
range (if any) have been sent successfully.
function extern long lrun.resend.import.done.messages.detailed(
domain daxch.envi senv.f,
domain daxch.envi senv.t,
domain daxch.comp scom.f,
domain daxch.comp scom.t,
domain daxch.cxch sxch.f,
domain daxch.cxch sxch.t,
domain daxch.cbat sbat.f,
domain daxch.cbat sbat.t,
domain daxch.cxch txch.f,
domain daxch.cxch txch.t,
domain daxch.cbat tbat.f,
domain daxch.cbat tbat.t )
pre : true post : If return then all rejected import done messages in the
specified range (if any) have been sent successfully;
otherwise one or more messages could not be delivered.
All rejected import done messages sent successfully are deleted state :
A retry point is set and a commit is given. return: True iff all rejected import
done messages in the specified
range (if any) have been sent successfully.
function extern long lrun.send.current.import.done.message.and.commit()
pre : Record of daxch406 is filled with an existing rejected import
done message. post : If return = OK then the import done message has
been sent
successfully and has been deleted. state : A retry point is set and a
commit is given (if return = OK). return: Return value of
lmess.send.import.done() in dadlllink_mess.
function extern long lrun.send.export.done.messages.of.subscription(
domain daxch.link subs,
domain daxch.envi tenv,
domain daxch.comp tcom )
pre : true post : If return = OK then the message and all preceding messages
have been sent successfully, else one or more of the messages
for the exchange link could not be sent successfully.
(Note: a message for run/try n will only be sent if all
messages of the same subscription having run/try < n have
been sent successfully.)
After calling this function one or more times, function
lrun.end.sending() must be called. state : Before calling this function
a retry point must be set;
after calling this function a commit must be given;
no commit is given in this function. return: Possible return values are
the same as return values for
function lmess.send.export.done.message() in library
dadlllink_mess. risk : If the system goes down during this process, an
inconsistency
between source and target system may exist (because a two
phase commit is not available for multi-site).
function extern long lrun.set.batch.to.import.to.completed(
domain daxch.link link,
domain daxch.long srun,
domain daxch.pint stry )
pre : true post : If return then the batch to import, specified by link,
srun
and stry has been updated: 'Completed' has been set to yes. state :
Before calling this function a retry point must be set;
after calling this function a commit must be given;
no commit is given in this function. return: True iff the batch to
import exists and has been updated.