upperCase1252
Short summary
This method converts the lowercase letters in an 8 bit windows-1252 string to uppercase letters.
Attention: All strings are handled as null terminated byte streams.
Parameters
| Name | Type | Comment | Kind |
|---|---|---|---|
| stringAddress | POINTER TO BYTE | string to ucase | input |
| stringLength | UDINT | length of the string | input |
Code
Declaration
METHOD PROTECTED upperCase1252
VAR_INPUT
(* string to ucase *)
stringAddress :POINTER TO BYTE;
(* length of the string *)
stringLength :UDINT;
END_VAR
VAR
(* index of the current character *)
character :UDINT := 0;
END_VAR
VAR CONSTANT
(* NUL: $00 *)
END_OF_STRING :BYTE := 16#00;
(* a *)
LOWERCASE_A :BYTE := 16#61;
(* z *)
LOWERCASE_Z :BYTE := 16#7A;
(* ß *)
LOWERCASE_SHARP_S :BYTE := 16#DF;
(* ÿ *)
LOWERCASE_Y_WITH_DIAERESIS :BYTE := 16#FF;
(* Ÿ *)
UPPERCASE_Y_WITH_DIAERESIS :BYTE := 16#9F;
(* à *)
LOWERCASE_A_WITH_GRAVE :BYTE := 16#E0;
(* ö *)
LOWERCASE_O_WITH_DIAERESIS :BYTE := 16#F6;
(* ø *)
LOWERCASE_O_WITH_SLASH :BYTE := 16#F8;
(* þ *)
LOWERCASE_THORN :BYTE := 16#FE;
(* š *)
LOWERCASE_S_WITH_CARON :BYTE := 16#9A;
(* œ *)
LOWERCASE_OE :BYTE := 16#9C;
(* ž *)
LOWERCASE_Z_WITH_CARON :BYTE := 16#9E;
(* difference between lowercase and uppercase except for š,œ and ž *)
DIFFERENCE_LOWERCASE_UPPERCASE :BYTE := 16#20;
(* for š,œ and ž the difference between lowercase and uppercase *)
DIFFERENCE_LOWERCASE_UPPERCASE_SPECIAL :BYTE := 16#10;
END_VAR
Implementation
WHILE stringAddress[character] <> END_OF_STRING AND_THEN character <= stringLength DO
CASE stringAddress[character] OF
LOWERCASE_A..LOWERCASE_Z,
LOWERCASE_A_WITH_GRAVE..LOWERCASE_O_WITH_DIAERESIS,
LOWERCASE_O_WITH_SLASH..LOWERCASE_THORN:
stringAddress[character] := stringAddress[character] - DIFFERENCE_LOWERCASE_UPPERCASE;
LOWERCASE_S_WITH_CARON,
LOWERCASE_OE,
LOWERCASE_Z_WITH_CARON:
stringAddress[character] := stringAddress[character] - DIFFERENCE_LOWERCASE_UPPERCASE_SPECIAL;
LOWERCASE_Y_WITH_DIAERESIS:
stringAddress[character] := UPPERCASE_Y_WITH_DIAERESIS;
LOWERCASE_SHARP_S:;//for ß do nothing, because there is no capital letter for it
ELSE
;
END_CASE
character := character + 1;
END_WHILE