FUNCTION "FC_LenTel_MCopy" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT 
      "Byte" : Array[1..7] of Byte;
   END_VAR

   VAR_OUTPUT 
      nOutLen : Int;
      xOutError : Bool;
   END_VAR

   VAR_TEMP 
      TempInt : Array[1..7] of UDInt;
      TempError : Array[1..7] of Bool;
      TempResult : UDInt;
      TempErrorIndex : USInt;
      TempIntIndex : USInt;
   END_VAR


BEGIN
	"FC_LenTel_DigitSingle_MCopy"(bIn:= #Byte[1],
	                        nOut=> #TempInt[1],
	                        xOutError=> #TempError[1]);
	"FC_LenTel_DigitSingle_MCopy"(bIn := #Byte[2],
	                        nOut => #TempInt[2],
	                        xOutError => #TempError[2]);
	"FC_LenTel_DigitSingle_MCopy"(bIn := #Byte[3],
	                        nOut => #TempInt[3],
	                        xOutError => #TempError[3]);
	"FC_LenTel_DigitSingle_MCopy"(bIn := #Byte[4],
	                        nOut => #TempInt[4],
	                        xOutError => #TempError[4]);
	"FC_LenTel_DigitSingle_MCopy"(bIn := #Byte[5],
	                        nOut => #TempInt[5],
	                        xOutError => #TempError[5]);
	"FC_LenTel_DigitSingle_MCopy"(bIn := #Byte[6],
	                        nOut => #TempInt[6],
	                        xOutError => #TempError[6]);
	"FC_LenTel_DigitSingle_MCopy"(bIn := #Byte[7],
	                        nOut => #TempInt[7],
	                        xOutError => #TempError[7]);
	
	FOR #TempErrorIndex := 1 TO 7 DO
	    IF #TempError[#TempErrorIndex] THEN
	        #nOutLen := 0;
	        #xOutError := true;
	        FOR #TempIntIndex := 1 TO 7 DO
	            #TempInt[#TempIntIndex] := 0;
	        END_FOR;
	        EXIT;
	    END_IF;
	    #xOutError := false;
	END_FOR;
	
	#TempResult :=   (#TempInt[1] * 1000000) + (#TempInt[2] * 100000) + (#TempInt[3] * 10000) + (#TempInt[4] * 1000) + (#TempInt[5] * 100) + (#TempInt[6] * 10) + (#TempInt[7] * 1);
	
	IF #TempResult <= 65535 AND #TempResult > 0 THEN
	    #nOutLen := UDINT_TO_INT(#TempResult);
	    #xOutError := false;
	ELSE
	    #nOutLen := 0;
	    #xOutError := TRUE;
	END_IF;
	
END_FUNCTION

