Obsidean_VM/04-SIDEL/06 - E5.007363 - Modifica O.../Source/source/DELETE.md

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