Pinnacle :
Remove Illegal Characters

 

It’s necessary to call a script that generates a text file that contains a Pinnacle scripting command which defines the cleaned variable. For example, if given the string A%^$ 39839 the script will create another script document named Clean.Script containing the command:

Store.StringAt.DummyVariable = A_39839;

That code will then be executed by the cleaning script and read back into the Pinnacle data store.

Create the cleaning script

Create a script named RemoveIllegalChars.Script.p3rtp on the Pinnacle system. Paste the following code into the script:

// This script removes most illegal characters from a string named "Store.At.DummyVariable".
// The script will generate a temporary script file with a Pinnacle scripting command containing the cleaned variable. 
// The text document is deleted after the command is executed by Pinnacle (i.e. the string is read back into the Pinnacle data store).

//The /tmp/ directory should exist. If not, the user must create it.
Store.StringAt.Cleaned = "/usr/local/adacnew/PinnacleSiteData/Scripts/tmp/Clean.Script";

//Generate the cleaning command:
Store.StringAt.SpawnCmd = "echo 'Store.StringAt.DummyVariable = \"'`echo '";
Store.At.SpawnCmd.AppendString = Store.StringAt.DummyVariable;

//The first portion **tr-s '''_'** will replace multiple spaces with an underscores (_).
//The second portion tr -d \"@#$..." will remove each of those characters from the string. 
Store.At.SpawnCmd.AppendString = "\"\;' | tr -s ' ' '_' | tr -d \"@#$%^&*()=+[]{}|/\<>\"` > "; 
Store.At.SpawnCmd.AppendString = Store.StringAt.Cleaned;

//The command above is read. This creates the script file containing the Pinnacle string command.
SpawnCommand = Store.StringAt.SpawnCmd;

//This runs the temporary script file, reading the command into the Pinnacle data store.
Script.ExecuteNow = Store.StringAt.Cleaned;

//Remove the temporary script file
Store.StringAt.RemoveFile= "rm ";
Store.At.RemoveFile.AppendString = Store.StringAt.Cleaned;
SpawnCommand = Store.StringAt.RemoveFile;

//Clear variables
Store.FreeAt.RemoveFile="";
Store.FreeAt.Cleaned = "";
Store.FreeAt.SpawnCmd = "";

Ensure that the directory in which the Cleaned.Script file will be stored actually exists.

Call the cleaning script

Insert the following code into any script:

//Path to illegal character removal script. This can be stored anywhere on the Pinnacle system.
//This script will be passed a string called {{Store.At.DummyVariable}}.
Store.StringAt.RemoveIllegalChars = "/usr/local/adacnew/PinnacleSiteData/Scripts/RemoveIllegeChars/RemoveIllegalChars.Script.p3rtp";
 
//Copy the string to be cleaned into DummyVariable
Store.StringAt.DummyVariable = Store.StringAt.TempVariableToBeCleaned;
 
//Execute the script referenced above
Script.ExecuteNow=Store.StringAt.RemoveIllegalChars;
 
//Copy the cleaned variable back into the original variable
Store.StringAt.TempVariableToBeCleaned=Store.StringAt.DummyVariable;
 
//Free the variable so it can be reused
Store.FreeAt.DummyVariable="";

The string Store.At.TempVariableToBeCleaned will then contain the initial string with spaces replaced with underscores (_) and other illegal characters removed.