Obsidean_VM/04-SIDEL/00 - MASTER/Source/source/REPLACE_Mod.md

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
```