36 lines
1.1 KiB
Plaintext
36 lines
1.1 KiB
Plaintext
include "scanstri.s7i";
|
|
|
|
const func integer: cmpNumeric (in var string: stri1, in var string: stri2) is func
|
|
result
|
|
var integer: signumValue is 0;
|
|
local
|
|
var string: part1 is "";
|
|
var string: part2 is "";
|
|
begin
|
|
while signumValue = 0 and (stri1 <> "" or stri2 <> "") do
|
|
part1 := getDigits(stri1);
|
|
part2 := getDigits(stri2);
|
|
if part1 <> "" and part2 <> "" then
|
|
signumValue := compare(part1 lpad0 length(part2), part2 lpad0 length(part1));
|
|
if signumValue = 0 then
|
|
signumValue := compare(length(part1), length(part2));
|
|
end if;
|
|
elsif part1 <> "" then
|
|
signumValue := compare(part1, stri2);
|
|
elsif part2 <> "" then
|
|
signumValue := compare(stri1, part2);
|
|
end if;
|
|
if signumValue = 0 then
|
|
part1 := getNonDigits(stri1);
|
|
part2 := getNonDigits(stri2);
|
|
if part1 <> "" and part2 <> "" then
|
|
signumValue := compare(part1, part2);
|
|
elsif part1 <> "" then
|
|
signumValue := compare(part1, stri2);
|
|
elsif part2 <> "" then
|
|
signumValue := compare(stri1, part2);
|
|
end if;
|
|
end if;
|
|
end while;
|
|
end func;
|