71 lines
2.3 KiB
Plaintext
71 lines
2.3 KiB
Plaintext
Compile function TW_Use_Services(@Service, @Params)
|
|
#pragma precomp SRP_PreCompiler
|
|
$Insert SERVICE_SETUP
|
|
$Insert LOGICAL
|
|
$Insert TW_USE_EQUATES
|
|
|
|
Declare subroutine Error_Services, Delay, Update_Index
|
|
|
|
Equ NUM_ATTEMPTS$ to 10
|
|
|
|
GoToService
|
|
|
|
Return Response or ""
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// SERVICES
|
|
//-----------------------------------------------------------------------------
|
|
|
|
Service VerifyRelationalIndexes(TWUseKey)
|
|
ErrorMsg = ''
|
|
If TWUseKey NE '' then
|
|
RDSTestKey = Field(TWUseKey, '*', 1, 1)
|
|
If RDSTestKey NE '' then
|
|
// Add index transaction to update TW_USE relational index (target RDS_TEST table)
|
|
If RowExists('TW_USE', TWUseKey) then
|
|
IndexTransactionRow = 'RDS_TEST*TW_USE_ID*AR':@FM:TWUseKey:@FM:"":@FM:RDSTestKey:@FM
|
|
end else
|
|
IndexTransactionRow = 'RDS_TEST*TW_USE_ID*AR':@FM:TWUseKey:@FM:RDSTestKey:@FM:"":@FM
|
|
end
|
|
Done = False$
|
|
For AttemptNo = 1 to NUM_ATTEMPTS$
|
|
If AttemptNo GT 1 then Delay(1)
|
|
Open "!TW_USE" to BangTable then
|
|
Lock BangTable, 0 then
|
|
Read PendingTrans from BangTable, 0 else PendingTrans = '0':@FM
|
|
PendingTrans := IndexTransactionRow
|
|
Write PendingTrans on BangTable, 0 then
|
|
Done = True$
|
|
end else
|
|
If AttemptNo GE NUM_ATTEMPTS$ then
|
|
ErrorMsg = 'Error in ':Service:' service. Unable to write index transaction to !TW_USE. ':TWUseKey
|
|
end
|
|
end
|
|
Unlock BangTable, 0 else ErrorMsg = 'Error in ':Service:' service. Unable to Open !TW_USE to add index transaction. ':TWUseKey
|
|
end else
|
|
If AttemptNo GE NUM_ATTEMPTS$ then
|
|
ErrorMsg = 'Error in ':Service:' service. Unable to Lock !TW_USE to add index transaction. ':TWUseKey
|
|
end
|
|
end
|
|
end else
|
|
If AttemptNo GE NUM_ATTEMPTS$ then
|
|
ErrorMsg = 'Error in ':Service:' service. Unable to Open !TW_USE to add index transaction. ':TWUseKey
|
|
end
|
|
end
|
|
Until Done or ErrorMsg
|
|
Next AttemptNo
|
|
If Done then
|
|
ErrCode = ''
|
|
Update_Index('TW_USE', 'MET_NO', False$, True$)
|
|
If Get_Status(ErrCode) then
|
|
ErrorMsg = 'Error in ':Service:' service. Update_Index call failed. Error code: ':ErrCode
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
If ErrorMsg NE '' then Error_Services('Add', ErrorMsg)
|
|
|
|
End Service
|
|
|