<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.9">
  <POU Name="MAIN" Id="{401149c3-0114-413a-b582-ab5feb02a304}" SpecialFunc="None">
    <Declaration><![CDATA[PROGRAM MAIN
VAR	 //declare few variable we can assign fn block output to those
	input1BoolMain  : BOOL ;
	input2RealMain  : REAL ;
	output1BoolMain  : BOOL ;
	output2RealMain  : REAL ;	

	value1RefBoolMain : BOOL;
	value2RefRealMain : REAL;
	
	myFnBlock : TESTFunctionBlock;
	valueTest : BOOL;
	value2RefRealMainTest : REAL;
	valueFunctionRef : REAL;
	value2RefRealMainInout : REAL;
	functionMethodResult : REAL;
	
END_VAR
]]></Declaration>
    <Implementation>
      <ST><![CDATA[
myFnBlock.value1RefFnBool := TRUE;  // value1RefFnBool  is input
//myFnBlock.value1LocalBool := TRUE;  //Error	'value1LocalBool' is no input of 'TESTFunctionBlock'	

myFnBlock.input1FnBool := TRUE;
myFnBlock.input2FnReal := 100.0;
myFnBlock(bInOut:= valueTest, rInOut:= value2RefRealMainInout);

//myFnBlock.output2FnReal := 100.0;
value2RefRealMain := myFnBlock.value2RefFnReal;
output2RealMain:= myFnBlock.output2FnReal;

functionMethodResult := myFnBlock.TestMethod(12.0, 23.0);

value2RefRealMainTest :=myFnBlock.input2FnReal;
value2RefRealMainTest :=myFnBlock.output2FnReal;

 valueFunctionRef := value2RefRealMainInout;]]></ST>
    </Implementation>
    <LineIds Name="MAIN">
      <LineId Id="9" Count="1" />
      <LineId Id="30" Count="0" />
      <LineId Id="32" Count="0" />
      <LineId Id="27" Count="0" />
      <LineId Id="33" Count="0" />
      <LineId Id="2" Count="0" />
      <LineId Id="70" Count="0" />
      <LineId Id="36" Count="0" />
      <LineId Id="34" Count="0" />
      <LineId Id="37" Count="0" />
      <LineId Id="54" Count="0" />
      <LineId Id="53" Count="0" />
      <LineId Id="73" Count="0" />
      <LineId Id="72" Count="0" />
      <LineId Id="75" Count="0" />
      <LineId Id="77" Count="0" />
      <LineId Id="76" Count="0" />
    </LineIds>
  </POU>
</TcPlcObject>