project BLF > class BDomain > method SetDomainTypeAsSystem
Description
Select another domain as system domain (= default domain).
Parameters
iiDomainID | input | integer | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
BLF
program code (program1/bdomain.p)
assign oiReturnStatus = -98
viLocalReturnStatus = 0.
if iiDomainID = 0 or
iiDomainID = ?
then do:
<M-15 run SetMessage
(input trim(#T-1'Invalid domain ID ($1) passed. Unable to set it as system domain.':255(8851)T-1#) (icMessage),
input '0':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'BLF-71':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDomain>
assign oiReturnStatus = -1.
return.
end.
<M-1 run ClearData
(output viFcReturnSuper (oiReturnStatus)) in BDomain>
if viFcReturnSuper < 0
then do:
assign oiReturnStatus = viFcReturnSuper.
return.
end.
if viLocalReturnStatus = 0
then assign viLocalReturnStatus = viFcReturnSuper.
<M-2 run DataLoad
(input '':U (icRowids),
input '':U (icPkeys),
input string(iiDomainID) (icObjectIds),
input '':U (icFreeform),
input false (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BDomain>
if viFcReturnSuper < 0
then do:
if viFcReturnSuper = -4
then do:
<M-16 run SetMessage
(input trim(#T-18'Invalid domain ID ($1) passed. Unable to set it as system domain.':255(8851)T-18#) (icMessage),
input string(iiDomainID) (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'BLF-72':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDomain>
end.
assign oiReturnStatus = viFcReturnSuper.
return.
end.
if viLocalReturnStatus = 0
then assign viLocalReturnStatus = viFcReturnSuper.
find tDomains
no-error.
if not available tDomains
then do:
<M-19 run SetMessage
(input trim(#T-19'Previously loaded domain (ID: $1) could not be found.':255(8852)T-19#) (icMessage),
input string(iiDomainID) (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'BLF-73':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDomain>
assign oiReturnStatus = -3.
return.
end.
if tDomains.DomainType = {&DOMAINSDOMAINTYPE-SYSTEM}
then do:
/* No work to do, this is already the system domain... */
assign oiReturnStatus = viLocalReturnStatus.
return.
end.
/* Ensure that a SYSTEM domain switch is allowed... */
<I-4 {bFcOpenInstance
&CLASS = "Session"}>
<M-5 run SetLogicalValue
(input 'AllowSystemDomainChange':U (icName),
input true (ilValue),
output viFcReturnSuper (oiReturnStatus)) in Session>
<I-6 {bFcCloseInstance
&CLASS = "Session"}>
UPDATEBLOCK: DO:
/* Get the current SYSTEM domain if there is one... because we have to blank it's domain type... */
<Q-11 run DomainsByDomainType (all) (Read) (NoCache)
(input ?, (DomainID)
input {&DOMAINSDOMAINTYPE-SYSTEM}, (DomainType)
output dataset tqDomainsByDomainType) in BDomain >
find tqDomainsByDomainType
no-error.
/* Make the passed in domain the SYSTEM one */
assign tDomains.DomainType = {&DOMAINSDOMAINTYPE-SYSTEM}
tDomains.tc_Status = "C":U.
if available tqDomainsByDomainType and
tqDomainsByDomainType.tiDomain_ID <> iiDomainID
then do:
<M-7 run DataLoad
(input '':U (icRowids),
input '':U (icPkeys),
input string(tqDomainsByDomainType.tiDomain_ID) (icObjectIds),
input '':U (icFreeform),
input true (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BDomain>
if viFcReturnSuper < 0
then do:
assign oiReturnStatus = viFcReturnSuper.
leave UPDATEBLOCK.
end.
if viLocalReturnStatus = 0
then assign viLocalReturnStatus = viFcReturnSuper.
find tDomains where
tDomains.Domain_ID = tqDomainsByDomainType.tiDomain_ID
no-error.
if available tDomains
then assign tDomains.DomainType = "":U
tDomains.tc_Status = "C":U.
end.
<M-12 run ValidateBC
(output viFcReturnSuper (oiReturnStatus)) in BDomain>
if viFcReturnSuper < 0
then do:
assign oiReturnStatus = viFcReturnSuper.
leave UPDATEBLOCK.
end.
if viLocalReturnStatus = 0
then assign viLocalReturnStatus = viFcReturnSuper.
<M-13 run AdditionalUpdates
(output viFcReturnSuper (oiReturnStatus)) in BDomain>
if viFcReturnSuper < 0
then do:
assign oiReturnStatus = viFcReturnSuper.
leave UPDATEBLOCK.
end.
if viLocalReturnStatus = 0
then assign viLocalReturnStatus = viFcReturnSuper.
<M-14 run DataSave
(output viFcReturnSuper (oiReturnStatus)) in BDomain>
if viFcReturnSuper < 0
then do:
assign oiReturnStatus = viFcReturnSuper.
leave UPDATEBLOCK.
end.
if viLocalReturnStatus = 0
then assign viLocalReturnStatus = viFcReturnSuper.
end.
/* Clear the setting to allow a SYSTEM domain switch... */
<I-8 {bFcOpenInstance
&CLASS = "Session"}>
<M-9 run SetLogicalValue
(input 'AllowSystemDomainChange':U (icName),
input false (ilValue),
output viFcReturnSuper (oiReturnStatus)) in Session>
<I-10 {bFcCloseInstance
&CLASS = "Session"}>
if oiReturnStatus = -98
then assign oiReturnStatus = viLocalReturnStatus.