Function Service_Services(@Service, @Params) /*********************************************************************************************************************** This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written permission from SRP Computer Solutions, Inc. Name : Service_Services Description : Handler program for all module related services. Notes : Service module to support environmental state issues. Environmental refers to the state of the operating system, which includes version, client vs. server, and path to critical systems. Parameters : Service [in] -- Name of the service being requested Param1-10 [in/out] -- Additional request parameter holders Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure Metadata : History : (Date, Initials, Notes) 02/06/18 dmb Original programmer. 07/25/18 dmb Update the GetServices service to pick services without any assigned servers. This is to allow a service to be ran against any server. ***********************************************************************************************************************/ #pragma precomp SRP_PreCompiler $insert LOGICAL $insert SERVICE_SETUP $insert SERVICES_EQUATES $insert RLIST_EQUATES $insert SQL_REQUESTS_EQUATES $Insert PROC_QUEUE_EQUATES Common /ServiceServices/ Unused1@, Unused2@, Unused3@, Unused4@, Unused5@, Unused6@, Unused7@, Unused8@, Unused9@, Unused10@ Declare function Service_Services, Memory_Services, SRP_List, SRP_FastArray, SRP_Array, Database_Services, Datetime Declare Function GetTickCount, SRP_Decode, RTI_CREATEGUID Declare subroutine Service_Services, Memory_Services, SRP_List, SRP_FastArray, RList, Set_Status, Database_Services Declare Subroutine Yield, WinYield, Sleepery GoToService else Error_Services('Add', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.') end Return Response OR '' //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Service Parameter Options //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Options BOOLEAN = True$, False$ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Services //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //---------------------------------------------------------------------------------------------------------------------- // GetServices // // Returns an array of active services for the indicated server. //---------------------------------------------------------------------------------------------------------------------- Service GetServices(Server) Services = '' If Server NE '' then Sentence = 'SELECT SERVICES WITH SERVER EQ ' : Quote(Server) : ' AND WITH ACTIVE EQ "Yes"' rv = Set_Status(0) RList(Sentence, TARGET_ACTIVELIST$, '', '', '') If (@List_Active EQ 3) AND (@RecCount GT 0) then EOF = False$ Loop Readnext ServiceKeyID else EOF = True$ Until EOF EQ True$ ServiceRow = Database_Services('ReadDataRow', 'SERVICES', ServiceKeyID) If Error_Services('NoError') then Services := ServiceKeyID : @VM : ServiceRow : @VM : ServiceRow : @FM end Repeat end Sentence = 'SELECT SERVICES WITH SERVER EQ "" AND WITH ACTIVE EQ "Yes"' rv = Set_Status(0) RList(Sentence, TARGET_ACTIVELIST$, '', '', '') If (@List_Active EQ 3) AND (@RecCount GT 0) then EOF = False$ Loop Readnext ServiceKeyID else EOF = True$ Until EOF EQ True$ ServiceRow = Database_Services('ReadDataRow', 'SERVICES', ServiceKeyID) If Error_Services('NoError') then Services := ServiceKeyID : @VM : ServiceRow : @VM : ServiceRow : @FM end Repeat end Services[-1, 1] = '' end else Error_Services('Add', 'Server argument was missing from the ' : Service : ' service.') end Response = Services end service //---------------------------------------------------------------------------------------------------------------------- // GetServices // // Returns an array of active services for the indicated server. //---------------------------------------------------------------------------------------------------------------------- Service GetServiceKeys() Services = '' Sentence = 'SELECT SERVICES BY NAME' rv = Set_Status(0) RList(Sentence, TARGET_ACTIVELIST$, '', '', '') If (@List_Active EQ 3) AND (@RecCount GT 0) then EOF = False$ Loop Readnext ServiceKeyID else EOF = True$ Until EOF EQ True$ Services := ServiceKeyID : @FM Repeat end Services[-1, 1] = '' Response = Services end service //---------------------------------------------------------------------------------------------------------------------- // GetService // // Returns the details of the indicated service. //---------------------------------------------------------------------------------------------------------------------- Service GetService(Service) ServiceDetails = '' If Service NE '' then ServiceDetails = Database_Services('ReadDataRow', 'SERVICES', Service) end else Error_Services('Add', 'Service argument was missing from the ' : Service : ' service.') end Response = ServiceDetails end service Service ProcessProcedureQueue() Open 'PROC_QUEUE' to hProcQueue then Select hProcQueue EOF = False$ Loop ReadNext RequestKeyID else EOF = True$ Until EOF Lock hProcQueue, RequestKeyID then RequestRow = Database_Services('ReadDataRow', 'PROC_QUEUE', RequestKeyID) If RequestRow NE '' then Procedure = RequestRow Params = RequestRow If Procedure NE '' then Dim ProcParams(10) For each Param in Params using @VM setting pPos ProcParams(pPos) = Param Next Param NumArguments = DCount(Params, @VM) Begin Case Case NumArguments EQ 0 ; Call @Procedure() Case NumArguments EQ 1 ; Call @Procedure(ProcParams(1)) Case NumArguments EQ 2 ; Call @Procedure(ProcParams(1), ProcParams(2)) Case NumArguments EQ 3 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3)) Case NumArguments EQ 4 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4)) Case NumArguments EQ 5 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5)) Case NumArguments EQ 6 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6)) Case NumArguments EQ 7 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7)) Case NumArguments EQ 8 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8)) Case NumArguments EQ 9 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9)) Case Otherwise$ ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9), ProcParams(10)) End Case end end If Error_Services('NoError') then Database_Services('DeleteDataRow', 'PROC_QUEUE', RequestKeyId, True$, False$) end else RequestRow = DateTime() RequestRow = Error_Services('GetMessage') Database_Services('WriteDataRow', 'PROC_QUEUE', RequestKeyID, RequestRow, True$, False$, True$) end Unlock hProcQueue, RequestKeyID else Null end Repeat end end service Service PostProcecure(ProcedureName, Params) Response = '' If (ProcedureName NE '') then RequestKeyID = RTI_CreateGUID() RequestRow = '' RequestRow = ProcedureName RequestRow = Params Database_Services('WriteDataRow', 'PROC_QUEUE', RequestKeyID, RequestRow, True$, False$, False$) end else Error_Services('Add', 'Error in ':Service:' service. Null ProcedureName passed in.') end return //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Internal GoSubs ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////