MOVE_BYTESバイトデータを移動
このファンクションは、iNumberOfBytesで指定されたバイト数を、SourceDataからDestDataへ転送します。転送元のバイトオフセットはiSourceByteOffset、転送先のバイトオフセットはiDestByteOffsetで指定します。
転送元バイトオフセットおよび転送先バイトオフセットは、最初のバイトを基準にしており、0から始まります。

入力
バイトが取得された転送元データ
転送元データの0から始まる最初のバイトを基準にしたバイトオフセット。0以上である必要があります
転送元データから転送先データに移動されるバイト数。0以上である必要があります
転送先データの0から始まる最初のバイトを基準にしたバイトオフセット。0以上である必要があります
入出力
バイトが書き込まれる転送先データ
Control FPWIN Pro7はアクセスするデータの有効性をチェックしないため、入力データの有効性をチェックしてください。
転送元バイトエリアと転送先バイトエリアが重複していないことを確認してください。

POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。

VAR
bMoveToWordBoundary: BOOL:=FALSE;
awSourceByteData: ARRAY [0..7] OF WORD:=[16#6160,16#6362,16#6564,16#6766,16#6968,16#6b6a,16#6d6c,16#6f6e];
awDestByteData: ARRAY [0..7] OF WORD:=[8(16#FFFF)];
iSourceByteOffset3: INT:=3;
iDestByteOffset9: INT:=9;
iNumberOfBytes5: INT:=5;
iNumberOfBytes4: INT:=4;
bMoveFromWordBoundary: BOOL:=FALSE;
END_VAR
変数bMoveToWordBoundaryまたはbMoveFromWordBoundaryがTRUEに設定されると、ファンクションが実行されます。

BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 10 ;
NETWORK_BODY
B(B_COMMENT,,Move bytes to word boundary:,1,0,29,1,);
B(B_CONTACT,,bMoveToWordBoundary,8,3,10,5,);
B(B_F,E_MOVE_BYTES!,,19,2,30,10,,?DEN?DSourceData?DiSourceByteOffset?DiNumberOfBytes?DiDestByteOffset?DDestData?ADestData?AENO);
B(B_VARIN,,awSourceByteData,17,4,19,6,);
B(B_VARIN,,iSourceByteOffset3,17,5,19,7,);
B(B_VARIN,,iNumberOfBytes5,17,6,19,8,);
B(B_VARIN,,2,17,7,19,9,);
B(B_VARIN,,awDestByteData,17,8,19,10,);
L(1,0,1,10);
L(1,4,8,4);
L(10,4,19,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 10 ;
NETWORK_BODY
B(B_COMMENT,,Move bytes from word boundary:,1,0,29,1,);
B(B_CONTACT,,bMoveFromWordBoundary,8,3,10,5,);
B(B_F,E_MOVE_BYTES!,,19,2,30,10,,?DEN?DSourceData?DiSourceByteOffset?DiNumberOfBytes?DiDestByteOffset?DDestData?ADestData?AENO);
B(B_VARIN,,awSourceByteData,17,4,19,6,);
B(B_VARIN,,2,17,5,19,7,);
B(B_VARIN,,iNumberOfBytes4,17,6,19,8,);
B(B_VARIN,,iDestByteOffset9,17,7,19,9,);
B(B_VARIN,,awDestByteData,17,8,19,10,);
L(1,0,1,10);
L(1,4,8,4);
L(10,4,19,4);
END_NETWORK_BODY
END_NET_WORK
END_BODY
// Move bytes to word boundary:
if (bMoveToWordBoundary) then
MOVE_BYTES( SourceData := awSourceByteData,
iSourceByteOffset := iSourceByteOffset3,
iNumberOfBytes := iNumberOfBytes5,
iDestByteOffset := 2,
DestData := awDestByteData);
end_if;
// Move bytes from word boundary:
if (bMoveFromWordBoundary) then
MOVE_BYTES( SourceData := awSourceByteData,
iSourceByteOffset := 2,
iNumberOfBytes := iNumberOfBytes4,
iDestByteOffset := iDestByteOffset9,
DestData := awDestByteData);
end_if;