222 lines
3.6 KiB
Markdown
222 lines
3.6 KiB
Markdown
```pascal
|
|
// Block Type: FC
|
|
// Block Number: 32
|
|
// Original Network Languages: STL
|
|
|
|
FUNCTION "REPLACE_Mod" : String[254]
|
|
{ S7_Optimized_Access := 'TRUE' }
|
|
VERSION : 0.1
|
|
|
|
VAR_INPUT
|
|
IN1 : String[254];
|
|
IN2 : String[254];
|
|
L : Int;
|
|
P : Int;
|
|
END_VAR
|
|
|
|
VAR_TEMP
|
|
w_Temp : Word;
|
|
w_DBNR1 : Word;
|
|
w_DBNR2 : Word;
|
|
d_AR_IN1 : DWord;
|
|
d_AR_IN2 : DWord;
|
|
yAnzChar : Byte;
|
|
yMaxZiel : Byte;
|
|
yAnzIN1 : Byte;
|
|
yAnzIN2 : Byte;
|
|
yLoopCnt : Byte;
|
|
b_Fehl : Bool;
|
|
b_P_Null : Bool;
|
|
b_L_Null : Bool;
|
|
b_PgAnz1 : Bool;
|
|
END_VAR
|
|
|
|
BEGIN
|
|
|
|
// Network 1: Merker L=0 (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_DBNR1"
|
|
AUF DBB[AR?,P#0.0]
|
|
L NoneD[AR1,P#2.0]
|
|
LAR1_ACCU1
|
|
T "d_AR_IN1"
|
|
L NoneB[AR1,P#0.0]
|
|
T "yAnzIN1"
|
|
L _ERR_CONST_
|
|
LAR2_ACCU1
|
|
L NoneW[AR2,P#0.0]
|
|
T "w_DBNR2"
|
|
AUF DBB[AR?,P#0.0]
|
|
L NoneD[AR2,P#2.0]
|
|
LAR2_ACCU1
|
|
T "d_AR_IN2"
|
|
L NoneB[AR2,P#0.0]
|
|
T "yAnzIN2"
|
|
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"
|
|
CLR
|
|
= "b_L_Null"
|
|
= "b_PgAnz1"
|
|
|
|
L "L"
|
|
GT_I
|
|
CAC
|
|
L "P"
|
|
ADD_I
|
|
O _Statusword_?
|
|
= "b_Fehl"
|
|
JC AZIL
|
|
|
|
L "P"
|
|
L 0
|
|
EQ_I
|
|
= "b_P_Null"
|
|
JC QUE2
|
|
|
|
L "L"
|
|
EQ_I
|
|
= "b_L_Null"
|
|
L "yAnzIN1"
|
|
JC LCNT
|
|
|
|
L "P"
|
|
L "yAnzIN1"
|
|
GT_I
|
|
= "b_PgAnz1"
|
|
JC LCNT
|
|
CAC
|
|
DEC 1
|
|
|
|
LCNT: L "yMaxZiel"
|
|
GT_I
|
|
S "b_Fehl"
|
|
JC VGL1
|
|
CAC
|
|
VGL1: L 0
|
|
ADD_I
|
|
JZ QUE2
|
|
T "yAnzChar"
|
|
|
|
AUF DBB[AR?,P#0.0]
|
|
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
|
|
TAR1_ACCU1
|
|
T "d_AR_IN1"
|
|
QUE2: O "b_L_Null"
|
|
O "b_Fehl"
|
|
JC AZIL
|
|
|
|
AUF DBB[AR?,P#0.0]
|
|
L "d_AR_IN2"
|
|
LAR1_ACCU1
|
|
L "yMaxZiel"
|
|
L "yAnzChar"
|
|
SUB_I
|
|
L "yAnzIN2"
|
|
GE_I
|
|
JC VGL2
|
|
S "b_Fehl"
|
|
CAC
|
|
VGL2: L 0
|
|
ADD_I
|
|
T "w_Temp"
|
|
JZ QUE3
|
|
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
|
|
|
|
QUE3: A "b_PgAnz1"
|
|
JC AZIL
|
|
|
|
L "d_AR_IN1"
|
|
L "L"
|
|
SLW 3
|
|
ADD_D
|
|
LAR1_ACCU1
|
|
|
|
AUF DBB[AR?,P#0.0]
|
|
L "yAnzIN1"
|
|
A "b_P_Null"
|
|
JC PNUL
|
|
L "P"
|
|
DEC 1
|
|
SUB_I
|
|
PNUL: L "L"
|
|
SUB_I
|
|
JMZ AZIL
|
|
T "w_Temp"
|
|
L "yMaxZiel"
|
|
L "yAnzChar"
|
|
SUB_I
|
|
L "w_Temp"
|
|
GE_I
|
|
JC VGL3
|
|
S "b_Fehl"
|
|
CAC
|
|
VGL3: L 0
|
|
ADD_I
|
|
T "w_Temp"
|
|
JZ AZIL
|
|
L "yAnzChar"
|
|
ADD_I
|
|
T "yAnzChar"
|
|
L "w_Temp"
|
|
LOP3: 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 LOP3
|
|
|
|
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
|
|
|
|
```
|