86 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| compile Insert RTI_MVBFS_SERVER_PLUGIN_UNIVERSE_SOURCE
 | |
| 
 | |
| /*
 | |
| * This insert contains the source for a program to install on the U2 server
 | |
| * The program will support efficient record selection
 | |
| * I used conditional compilation to prevent compiling in oi
 | |
| */
 | |
| #UNDEFINE _IGNORE_THE_FOLLOWING_
 | |
| #IFDEF _IGNORE_THE_FOLLOWING_
 | |
| SUBROUTINE RTI_MVBFS_SERVER_PLUGIN_UNIVERSE( METHOD, COMMANDS, OILIST, UNIQUEID, RESULTS)
 | |
| *
 | |
| *
 | |
| * THIS SUBROUTINE IS USED FOR EXECUTING A CHAIN OF QUERIES ON U2, RETURNING THE KEYS TO OI
 | |
| * SEE RTI_CHAIN_SELECT.
 | |
| *
 | |
| * 03/24/19   rjc  Created from D3 version
 | |
| * **********************************
 | |
| *
 | |
| * Selectinfo equates
 | |
| $INCLUDE UNIVERSE.INCLUDE INFO_KEYS.INS.IBAS
 | |
| 
 | |
| EQU TRUE TO 1, FALSE TO 0
 | |
| EQU AM TO CHAR(254), VM TO CHAR(253), SVM TO CHAR(252), FM TO CHAR(254)
 | |
| 
 | |
| 
 | |
|  RESULTS = ""
 | |
| 
 | |
| * cursorvar will be a list variable ( not a dynamic array)
 | |
| * used to pass keys from one select into the next
 | |
|  CURSORVAR = ""
 | |
| 
 | |
| 
 | |
| *  Cannot test list variables directly, so keep a LIST.ACTIVE flag
 | |
|  LIST.ACTIVE = ( OILIST <> "" )
 | |
| 
 | |
| * Did they pass a list of keys from OI? Load into cursorvar
 | |
|  IF LIST.ACTIVE NE "" THEN
 | |
| 	  FORMLIST OILIST
 | |
| 	  READLIST CURSORVAR ELSE LIST.ACTIVE = FALSE
 | |
|  END
 | |
| 
 | |
| * Run the commands
 | |
| 
 | |
| CMD_CNT = DCOUNT(COMMANDS, AM)
 | |
| 
 | |
| FOR WHICH_COMMAND = 1 TO CMD_CNT
 | |
| 
 | |
| 	  CMD = COMMANDS<WHICH_COMMAND>
 | |
| 
 | |
| 	  CONTINUE = ( CMD # "" ) AND ( WHICH_COMMAND = 1  OR  LIST.ACTIVE )
 | |
| 
 | |
| 	  IF CONTINUE THEN
 | |
| 
 | |
| 		   IF LIST.ACTIVE  THEN
 | |
| 				EXECUTE CMD PASSLIST CURSORVAR
 | |
| 		   END ELSE
 | |
| 				EXECUTE CMD
 | |
| 		   END
 | |
| 
 | |
| 		   * Save the keys from the last select to pass to the next select
 | |
| 		   LIST.ACTIVE = SELECTINFO(0,IK$SLACTIVE)
 | |
| 		   IF LIST.ACTIVE THEN
 | |
| 				 READLIST CURSORVAR ELSE LIST.ACTIVE = FALSE
 | |
| 		   END
 | |
| 
 | |
| 	  END
 | |
| 
 | |
| NEXT WHICH_COMMAND
 | |
| 
 | |
| *
 | |
| * Return results as @fm delimited list
 | |
| * 
 | |
| IF LIST.ACTIVE  THEN
 | |
|      IF UNIQUEID <> "" And Len(CURSORVAR) > 32000 Then
 | |
|          WRITELIST CURSORVAR ON UNIQUEID
 | |
|          RESULTS = "?":UNIQUEID:"?"
 | |
|      END Else
 | |
|          RESULTS = CURSORVAR
 | |
|      END
 | |
| END
 | |
| 
 | |
| RETURN
 | |
| 
 | |
| End
 | |
| #ENDIF
 |