System Model > Alarms > Using Custom Alarm Filters > Converting Legacy AlarmSetQuery Functions

Converting Legacy AlarmSetQuery() Functions

With the release of Citect SCADA 7.30, the AlarmSetQuery() and Query() Cicode functions were replaced with a set of alarm filter functions. If your project uses AlarmSetQuery(), you will need to review and manually replace each instance with the alarm filter edit functions (see Implementing Queries that Use Custom Alarm Filters).

Below are examples of v7.20 Cicode and what the v7.30 Cicode may look like with the new alarm filter edit functions.

Conversion examples from v7.20 to v7.30:

v7.20 code:


		….
		INT resultAlarmSetQuery=0;
		// e.g. fieldName = Category, fieldValue = 10 
		// or fieldName = Tag, fieldValue = DigitalAlarm1
		resultAlarmSetQuery =
		AlarmSetQuery(21,"AlarmFilter","^""+fieldName+"^",^""+filterValue+"^"");//Obsolete in v7.30
		…….
		PUBLIC
		INT
		FUNCTION AlarmFilter
			(INT iRecId,
			INT iInst,
			STRING fieldName,
			STRING filterValue)
     
			INT resultFilter=0;
			STRING getValue="";

			getValue = AlarmGetFieldRec(iRecId, fieldName, iInst);
  
			IF  filterValue = getValue THEN
			    resultFilter = TRUE; 
			ELSE
			    // when "*" entered -> all values are accepted
			    IF     filterValue = "*" THEN
				   resultFilter = TRUE;  
			    ELSE
				   resultFilter = FALSE;
			    END   
		END;

		RETURN resultFilter;

		END
			

v7.30 code:

		….
		INT resultAlarmSetQuery=0;

		//AlarmSetQuery(21,"AlarmFilter30","^""+fieldName+"^",^""+filterValue+"^"");Obsolete in 7.30

		//replace the above by direct call
		resultAlarmSetQuery = AlarmFilter730(fieldName,filterValue);

		....

		PUBLIC
		INT
		FUNCTION AlarmFilter730
 
   			(STRING fieldName,
			  STRING filterValue)

			  INT hndl=-1, resultFilter=-1;
			  TRING sFilter="";
 
		sFilter = fieldName + "=" + filterValue;  
		hndl= AlarmFilterEditOpen(21);
		IF  hndl <> -1 THEN
		    resultFilter = AlarmFilterEditSet(hndl,sFilter)
		    IF  resultFilter = 0 THEN
		        resultFilter = AlarmFilterEditCommit(hndl)
		    END
			AlarmFilterEditClose(hndl)
		END    

			RETURN resultFilter;

		END 

			

Another example of how this function could be returned:

 

		PUBLIC
		INT
		FUNCTION AlarmFilter730
			(STRING fieldName,
			 STRING filterValue)

		INT hndl;
		INT resultFilter=-1;

		hndl = AlarmFilterEditOpen(21);
		IF  hndl <> -1 THEN
			resultFilter = AlarmFilterEditSet(hndl, fieldName)
			IF  resultFilter = 0 THEN
			    resultFilter = AlarmFilterEditAppend(hndl, "=^"")
			END  
			IF  resultFilter = 0 THEN
			    resultFilter = AlarmFilterEditAppend(hndl, filterValue)
			END  
			IF  resultFilter = 0 THEN
			    resultFilter = AlarmFilterEditAppend(hndl, "^"")
			END  
			IF  resultFilter = 0 THEN
			    resultFilter = AlarmFilterEditCommit(hndl)
			END  
			AlarmFilterEditClose(hndl)  
			END

			RETURN resultFilter;

		END 
			

Published June 2018