2.5 KiB
2.5 KiB
// Block Type: FC
// Block Number: 4
// Original Network Languages: STL
FUNCTION "DELETE" : String[254]
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
IN : String[254];
L : Int;
P : Int;
END_VAR
VAR_TEMP
w_Temp : Word;
yAnzChar : Byte;
yMaxZiel : Byte;
yAnzIN : Byte;
yLoopCnt : Byte;
b_Fehl : Bool;
b_Null : Bool;
b_PgAnz1 : Bool;
END_VAR
BEGIN
// Network 1: Fehlermerker (Original Language: STL)
// Adressen Quelle/Ziel bestimmen
// --- BEGIN STL Network 1 ---
SET
SAVE
L _ERR_CONST_
LAR1_ACCU1
L NoneW[AR1,P#0.0]
T "w_Temp"
AUF DBB[AR?,P#0.0]
L NoneD[AR1,P#2.0]
LAR1_ACCU1
L NoneB[AR1,P#1.0]
T "yAnzIN"
L _ERR_CONST_
LAR2_ACCU1
L NoneW[AR2,P#0.0]
T "w_Temp"
AUF DIB[AR?,P#0.0]
L NoneD[AR2,P#2.0]
OD DW#16#0100_0000
LAR2_ACCU1
L NoneB[AR2,P#0.0]
T "yMaxZiel"
L 0
T "yAnzChar"
L "L"
GT_I
CAC
L "P"
ADD_I
O _Statusword_?
= "b_Fehl"
JC AZIL
L "P"
L 0
EQ_I
L "L"
SUB_I
O _Statusword_?
= "b_Null"
L "yAnzIN"
JC LCNT
L "P"
L "yAnzIN"
GT_I
= "b_PgAnz1"
JC LCNT
CAC
DEC 1
LCNT: L "yMaxZiel"
GT_I
S "b_Fehl"
JC VGL
CAC
VGL: L 0
ADD_I
JZ QUE2
T "yAnzChar"
LOP1: T "yLoopCnt"
L NoneB[AR1,P#2.0]
T NoneB[AR2,P#2.0]
ADDAR1 P#1.0
ADDAR2 P#1.0
L "yLoopCnt"
LOOP LOP1
QUE2: O "b_Null"
O "b_Fehl"
O "b_PgAnz1"
JC AZIL
TAR1_ACCU1
L "L"
SLW 3
ADD_D
LAR1_ACCU1
L "yAnzIN"
L "P"
DEC 1
SUB_I
L "L"
SUB_I
JMZ AZIL
T "w_Temp"
L "yMaxZiel"
L "yAnzChar"
SUB_I
L "w_Temp"
GE_I
JC UEBR
S "b_Fehl"
CAC
T "w_Temp"
UEBR: L "yAnzChar"
ADD_I
T "yAnzChar"
L "w_Temp"
LOP2: T "yLoopCnt"
L NoneB[AR1,P#2.0]
T NoneB[AR2,P#2.0]
ADDAR1 P#1.0
ADDAR2 P#1.0
L "yLoopCnt"
LOOP LOP2
AZIL: TAR2_ACCU1
L "yAnzChar"
SLW 3
SUB_D
LAR2_ACCU1
L "yAnzChar"
T NoneB[AR2,P#1.0]
AN "b_Fehl"
JC ENDE
CLR
SAVE
ENDE: BE
// --- END STL Network 1 ---
END_FUNCTION