I realize this is an old post, but I stumbled upon this thread while searching a solution to the same problem.
As STRCMP is not included in the standard library, I guess this would still be relevant information for some.
Would it not be possible to solve this challenge using pointers, checking one character at the time?
Here is an example, called by STRCMP(ADR(string1), ADR(string2));
(*** Declaration ***)
FUNCTION STRCMP : BOOL
ptStr1 : POINTER TO BYTE;
ptStr2 : POINTER TO BYTE;
WHILE TRUE DO
IF (ptStr1^ <> ptStr2^) THEN (* If two characters are unequal, return FALSE *)
STRCMP := FALSE;
ELSIF ((ptStr1^ = 0) AND (ptStr2^ = 0)) THEN (* If both strings have reached the NULL TERMINATOR at the same place, the strings are identical *)
STRCMP := TRUE;
ELSE (* If the two characters were equal, but were not NULL TERMINATORS, increment to check next character *)
ptStr1 := ptStr1 + 1;
ptStr2 := ptStr2 + 1;
(* Make sure the pointer doesn't wander into unknown territory and create problems *)
Of course, you should be careful with having a pointer wandering around in your memory in a "WHILE TRUE"-loop, so an improvement could be to limit the loop to the length of the shortest input string.
EDIT: After thinking about it; it should technically not be an issue "wandering around" in the memory this way since you are only reading, not writing. It is of course not encouraged nonetheless.