Accessing the input and return parameters when executing in a batch file
For example, you wish to create a difference script, executing from your application using the ibec_CompareMetadata() function and the names of the database files as input parameter.
There is no built-in way to request IBEBlock input parameters. You can however create your own input form and after this compose an IBEBlock with a set of ibec_SetGlobalVar functions that should be executed before the main script:
execute ibeblock
as
begin
ibec_SetGlobalVar('MyIntValue', 123);
ibec_SetGlobalVar('MyStrValue', 'bla-bla');
...
end;
Your main IBEBlock should initialize variables using the ibec_GetGlobalVar function:
execute ibeblock
as
begin
Var1 = ibec_GetGlobalVar('MyIntValue', 0);
Var2 = ibec_GetGlobalVar('MyStrValue', '');
...
end;
Regarding output parameters... the only way to pass a value from IBEBlock into your application is to use the ibec_Progress function. Also you have to use the ExecScriptText2/ExecScriptFile2 functions of IBEScript.dll instead of ExecScriptText/ExecScriptFile:
procedure ExecScriptFile2(AScriptFile : PChar;
AErrorCallbackFunc : TScriptErrorCallbackFunc;
ABeforeCallbackFunc : TScriptBeforeExecStatementFunc;
AAfterCallbackFunc : TScriptAfterExecStatementFunc;
AIBEBlockProgressFunc : TScriptIBEBlockProgressFunc);
procedure ExecScriptText2(AScriptText : PChar;
AErrorCallbackFunc : TScriptErrorCallbackFunc;
ABeforeCallbackFunc : TScriptBeforeExecStatementFunc;
AAfterCallbackFunc : TScriptAfterExecStatementFunc;
AIBEBlockProgressFunc : TScriptIBEBlockProgressFunc);
TScriptIBEBlockProgressFunc = function (AProgressMessage : PChar) : integer;
You have to call ibec_Progress function from within your IBEBlock and pass a string representation of any value including necessary additional data. In your application you should catch this string using an IBEBlock progress function and do what you need.
<< JSON example | IBEBlock | Ascertaining the distribution of data pages >>







