<?xml version="1.0" encoding="utf-8"?>
<ManualTopic ID="/baanerp/da/onlinemanual/000053" xml:lang="en">
	<Header>
		<Title xmlns:HTML="http://www.w3.org/TR/REC-html40">dadlllink_def</Title>
	</Header>
	<GeneralSection><GeneralSection><SectionTitle>DLL Usage description</SectionTitle>
			<Paragraph class="Default">This library contains functionality for exchange links and subscriptions. It also contains functions for subscription destroyed messages.</Paragraph>
			<Paragraph class="Default">Note on the function specifications: "iff" means "if and only if".</Paragraph>
		</GeneralSection>
		<GeneralSection><SectionTitle>DLL PROTOTYPES</SectionTitle>
			<Formula space-and-orientation="indented-estimated"><Paragraph class="Default"> function extern
				long ldef.activate.current.exchange.link.and.commit() pre : Current record of
				daxch401 is filled with an existing exchange link, having status &lt;&gt;
				active. post : If return = OK then the current exchange link has been activated
				successfully; its status has been set to active; else nothing has been done.
				state : If return = OK then a retry point is set and a commit is given. return:
				Possible return values are the same as return values for function
				lmess.send.subscribe() 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 multisite). function
				extern long ldef.activate.exchange.links( domain daxch.link link.f, domain
				daxch.link link.t ) pre : true post : All exchange links in the specified
				range, having status &lt;&gt; active, are activated if possible. state : A
				retry point is set and a commit is given. return: True if no exchange links
				have been selected or all exchange links selected are activated successfully;
				false if one or more exchange links in the specified range could not be
				activated. 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
				ldef.activate.exchange.links.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 : All exchange
				links in the specified range, having status &lt;&gt; active, are activated if
				possible. state : A retry point is set and a commit is given. return: True if
				no exchange links have been selected or all exchange links selected are
				activated successfully; false if one or more exchange links in the specified
				range could not be activated. 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 multisite). function extern long
				ldef.active.exchange.link.exists.for.batch( domain daxch.cxch txch, domain
				daxch.cbat tbat ) pre : true post : true return: True iff one or more exchange
				links exist for the specified batch, having status active. desc : This function
				can be used when importing. When running a regular import and this function
				returns true, exchange should check the batches to import to see whether there
				is any data waiting to be imported. If this function returns false, the regular
				import process can continue without checking the batches to import. function
				extern long ldef.active.or.partly.active.link.exists.for.batch (domain
				daxch.cxch txch, domain daxch.cbat tbat) pre : true post : true return: True
				iff one or more exchange links exist for the specified batch, having status
				&lt;&gt; inactive (source/target). desc : This function can be used when to
				check whether a batch can be deleted. A batch should not be deleted as long as
				there are any exchange links for it having status active or inactive (target
				only). function extern long ldef.can.delete.all.batches.in.range( domain
				daxch.cxch cxch.f, domain daxch.cxch cxch.t, domain daxch.cbat cbat.f, domain
				daxch.cbat cbat.t ) pre : true post : true return: True iff NONE of the batches
				is used as target batch in any exchange link having status Active or Inactive
				(target only) desc : If this function returns false this means that one of the
				batches in the specified range cannot be deleted. function extern long
				ldef.create.subscription( domain daxch.link subs, domain daxch.cxch sxch,
				domain daxch.cbat sbat, domain daxch.envi tenv, domain daxch.comp tcom, domain
				daxch.cxch txch, domain daxch.cbat tbat ) pre : All function parameters are
				filled (although tcom may be 0). tenv is an existing environment. post : If
				return: - the subscription defined by the function parameters has been created;
				- if the subscription already existed (due to an inconsistency) it has been
				'reinitialized': the export done messages of the subscription 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 if successful; false means: could not create the
				subscription, because the exchange scheme or the batch does not exist function
				extern long ldef.deactivate.current.exchange.link.and.commit() pre : Current
				record of daxch401 is filled with an existing exchange link, having status
				&lt;&gt; inactive (source/target). post : If return = OK then the current
				exchange link has been deactivated successfully and its status has been set to
				inactive (source/target); the import batches to do and the rejected import done
				messages are deleted. If return &lt;&gt; OK then the current exchange link
				could not be deactivated; its status has been set to inactive (target only).
				state : A retry point is set and a commit is given. return: Possible return
				values are the same as return values for function lmess.send.unsubscribe() 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
				ldef.deactivate.exchange.links( domain daxch.link link.f, domain daxch.link
				link.t, long only.inactive ) pre : true post : If only.inactive: All exchange
				links in the specified range, having status &lt;&gt; inactive (source/target),
				are deactivated if possible. If not only.inactive: All exchange links in the
				specified range, having status inactive (target only), are deactivated if
				possible. state : A retry point is set and a commit is given. return:.True if
				no exchange links have been selected or all exchange links selected are
				deactivated successfully; false if one or more exchange links in the specified
				range could not be deactivated. 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
				ldef.deactivate.exchange.links.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, long only.inactive ) pre : true
				post : If only.inactive: All exchange links in the specified range, having
				status &lt;&gt; inactive (source/target), are deactivated if possible. If not
				only.inactive: All exchange links in the specified range, having status
				inactive (target only), are deactivated if possible. state : A retry point is
				set and a commit is given. return:.True if no exchange links have been selected
				or all exchange links selected are deactivated successfully; false if one or
				more exchange links in the specified range could not be deactivated. 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 ldef.delete.exchange.links.of.target.batch( domain
				daxch.cxch txch, domain daxch.cbat tbat ) pre : No exchange links exist for
				target batch txch/tbat having status Active or Inactive (target only). post :
				All exchange links for target batch txch/tbat 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 long
				ldef.delete.subscription( domain daxch.link subs, domain daxch.envi tenv,
				domain daxch.comp tcom ) pre : true post : If return then either the
				subscription defined by the function parameters has been deleted (and the
				export done messages of the subscription have also been deleted), or the
				subscription did not exist and the rejected subscription destroyed message 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 if action was successful; false if subscription does not
				exist and rejected subscription destroyed message also does not exist. function
				extern long ldef.delete.subscription.destroyed.message( domain daxch.link subs,
				domain daxch.envi tenv, domain daxch.comp tcom ) pre : true post : If return
				then the subscription destroyed message defined by the function parameters 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 if action was successful; false if the subscription
				destroyed message did not exist. function extern long
				ldef.delete.subscriptions.of.source.batch( domain daxch.cxch sxch, domain
				daxch.cbat sbat ) pre : true post : All subscription of the source exchange
				scheme/batch have been deleted. If return then all subscription destroyed
				messages have been delivered to the target site successfully, otherwise one or
				more rejected subscription destroyed messages have 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: False iff
				one or more subscription destroyed messages could not be delivered. function
				extern long ldef.environment.is.used.in.exchange.links( domain daxch.envi senv
				) pre : true post : true return: True iff the environment is used in one or
				more exchange links. function extern long
				ldef.environment.is.used.in.subscriptions( domain daxch.envi tenv ) pre : true
				post : true return: True iff the environment is used in one or more
				subscriptions. function extern long ldef.exchange.link.exists( domain
				daxch.link link ) pre : true post : true return: True iff the exchange link
				exists. function extern long ldef.exchange.link.exists.and.is.not.inactive(
				domain daxch.link link ) pre : true post : true return: True iff the exchange
				link exists and has status &lt;&gt; inactive (source/target). function extern
				long ldef.exchange.link.is.local( domain daxch.link link ) pre : true post :
				true return: True iff the exchange link exists and the source environment is
				equal to the current environment function extern long ldef.get.exchange.link(
				domain daxch.envi senv, domain daxch.comp scom, domain daxch.cxch sxch, domain
				daxch.cbat sbat, domain daxch.cxch txch, domain daxch.cbat tbat, ref domain
				daxch.link link ) pre : true post : If return then link = exchange link found.
				return: True iff exchange link having senv, scom, sxch, sbat, txch and tbat
				exists. function extern long ldef.get.exchange.scheme.and.batch.of.subscription
				(domain daxch.link subs, domain daxch.envi tenv, domain daxch.comp tcom, ref
				domain daxch.cxch sxch, ref domain daxch.cbat sbat) pre : true post : If return
				then sxch = source exchange scheme of subscription defined by subs/tenv/tcom;
				sbat = source batch of subscription defined by subs/tenv/tcom. return: True iff
				subscription subs/tenv/tcom exists. function extern long
				ldef.get.source.environment.of.exchange.link( domain daxch.link link, ref
				domain daxch.envi senv, ref domain daxch.comp scom ) pre : true post : If
				return then senv and scom are filled with the source environment and company of
				the exchange link. return: True iff the exchange link exists. function extern
				long ldef.get.source.information.of.exchange.link( domain daxch.link link, ref
				domain daxch.envi senv, ref domain daxch.comp scom, ref domain daxch.cxch sxch,
				ref domain daxch.cbat sbat ) pre : true post : If return then senv, scom, sxch
				and sbat are filled with the source environment, company, exchange scheme and
				batch of the exchange link. return: True iff the exchange link exists. function
				extern long ldef.get.subscription( domain daxch.cxch sxch, domain daxch.cbat
				sbat, domain daxch.envi tenv, domain daxch.comp tcom, domain daxch.cxch txch,
				domain daxch.cbat tbat, ref domain daxch.link subs ) pre : true post : If
				return then subs = subscription found. return: True iff subscription having
				sxch, sbat, tenv, tcom, txch and tbat exists. function extern long
				ldef.prepare.batch.to.be.deleted( domain daxch.cxch cxch, domain daxch.cbat
				cbat ) pre : true post : If return then all exchange links of the batch having
				status Inactive (source/target) and all subscriptions of the batch have been
				deleted; so the batch doesn't have any exchange links or subscriptions anymore.
				If not return then nothing has been done. 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 there was no exchange
				link for this batch having status Active or Inactive (target only). desc :
				Before deleting a batch we should check whether this can be done; this is the
				case if there are no exchange links for this batch having status Active or
				Inactive (target only). If the batch can be deleted then the subscriptions and
				the exchange links having status Inactive (source/target) must be deleted
				first. A batch should only be deleted if this function returns true. function
				extern long ldef.resend.current.subscription.destroyed.message and.commit( )
				pre : Current record of daxch407 is filled with an existing rejected
				subscription destroyed message. post : The current rejected subscription
				destroyed messages is resent. If the message is resent successfully it has been
				deleted. state : A retry point is set and a commit is given (if return = OK).
				return: Return value of function lmess.send.subscription.destroyed in
				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
				ldef.resend.subscription.destroyed.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 : All rejected
				subscription destroyed messages in the specified range are resent. Each message
				that is resent successfully has been deleted. state : A retry point is set and
				a commit is given. return: True if no messages have been selected or all
				messages selected are sent successfully; false if one or more messages in the
				specified range could not be delivered. 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 ldef.resend.subscription.destroyed.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 :
				All rejected subscription destroyed messages in the specified range are resent.
				Each message that is resent successfully has been deleted. state : A retry
				point is set and a commit is given. return: True if no messages have been
				selected or all messages selected are sent successfully; false if one or more
				messages in the specified range could not be delivered. 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 ldef.send.subscription.destroyed.for.current
				.subscription( ) pre : Current record of daxch402 is filled with an existing
				subscription to be deleted. post : After calling this function the subscription
				can (and must!) be deleted. If return &lt;&gt; OK then a rejected subscription
				destroyed 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 function
				lmess.send.subscription.destroyed() in dadlllink_mess. function extern long
				ldef.set.status.of.link.to.inactive( domain daxch.link link ) pre : true post :
				If return then the status of the exchange link is inactive (source/target),
				otherwise nothing has been done. 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 status of exchange link has
				been updated or the exchange was active (source/target) already. (false means:
				the status could not be updated, because the exchange link does not exist).
				note : This function will not remove the subscription at the source site.
				Therefore it should only be used when subscription has already been deleted or
				is currently being deleted! function extern long ldef.subscription.exists(
				domain daxch.link subs, domain daxch.envi tenv, domain daxch.comp tcom ) pre :
				true post : true return: True iff subscription defined by subs, tenv and tcom
				exists. function extern long ldef.subscription.exists.for.batch( domain
				daxch.cxch sxch, domain daxch.cbat sbat, domain daxch.comp startup.company )
				pre : true post : true return: True iff a subscription having source exchange
				scheme sxch and source batch sbat exists. </Paragraph>
			</Formula>
		</GeneralSection>
	</GeneralSection>
	<RelatedTopics><SectionTitle>
                              Related topics
                           </SectionTitle>
		<RelTopic><Link href="/baanerp/da/onlinemanual/000102" role="manual">Libraries</Link>
		</RelTopic>
	</RelatedTopics>
</ManualTopic>
