upperCase1251
Short summary
This method converts the lowercase letters in an 8 bit windows-1251 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 upperCase1251
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_CYRILLIC_A :BYTE := 16#E0;
(* я *)
LOWERCASE_CYRILLIC_YA :BYTE := 16#FF;
(* ђ *)
LOWERCASE_CYRILLIC_DJE :BYTE := 16#90;
(* љ *)
LOWERCASE_CYRILLIC_LJE :BYTE := 16#9A;
(* њ *)
LOWERCASE_CYRILLIC_NJE :BYTE := 16#9C;
(* џ *)
LOWERCASE_CYRILLIC_DZHE :BYTE := 16#9F;
(* ё *)
LOWERCASE_CYRILLIC_IO :BYTE := 16#B8;
(* є *)
LOWERCASE_CYRILLIC_UKRAINIAN_IE :BYTE := 16#BA;
(* ї *)
LOWERCASE_CYRILLIC_YI :BYTE := 16#BF;
(* ў *)
LOWERCASE_CYRILLIC_SHORT_U :BYTE := 16#A2;
(* i *)
LOWERCASE_CYRILLIC_UKRAINIAN_I :BYTE := 16#B3;
(* ѕ *)
LOWERCASE_CYRILLIC_DZE :BYTE := 16#BE;
(* ѓ *)
LOWERCASE_CYRILLIC_GJE :BYTE := 16#83;
(* ґ *)
LOWERCASE_CYRILLIC_GHE_WITH_UPTURN :BYTE := 16#B4;
(* ј *)
LOWERCASE_CYRILLIC_JE :BYTE := 16#19;
END_VAR
Implementation
WHILE stringAddress[character] <> END_OF_STRING AND_THEN character <= stringLength DO
CASE stringAddress[character] OF
LOWERCASE_A..LOWERCASE_Z,
LOWERCASE_CYRILLIC_A..LOWERCASE_CYRILLIC_YA:
stringAddress[character] := stringAddress[character] - 16#20;
LOWERCASE_CYRILLIC_DJE,
LOWERCASE_CYRILLIC_LJE,
LOWERCASE_CYRILLIC_NJE..LOWERCASE_CYRILLIC_DZHE,
LOWERCASE_CYRILLIC_IO,
LOWERCASE_CYRILLIC_UKRAINIAN_IE,
LOWERCASE_CYRILLIC_YI:
stringAddress[character] := stringAddress[character] - 16#10;
LOWERCASE_CYRILLIC_SHORT_U,
LOWERCASE_CYRILLIC_UKRAINIAN_I,
LOWERCASE_CYRILLIC_DZE:
stringAddress[character] := 16#01;
LOWERCASE_CYRILLIC_GJE:
stringAddress[character] := 16#02;
LOWERCASE_CYRILLIC_GHE_WITH_UPTURN:
stringAddress[character] := 16#0F;
LOWERCASE_CYRILLIC_JE:
stringAddress[character] := 16#0F;
ELSE
; // do nothing
END_CASE
character := character + 1;
END_WHILE