1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
INCLUDE "../../../pseudocode-lib/_exp_string.cps"
FUNCTION Echo(S : _EXP_STRING) RETURNS _EXP_STRING
RETURN S
ENDFUNCTION
DECLARE A : _EXP_STRING((C_STRING)"hello")
DECLARE B : _EXP_STRING(A)
B <- (C_STRING)"world"
B <- B
CALL _EXP_STRING_OUTPUT(A & B)
DECLARE Empty : _EXP_STRING
OUTPUT _EXP_STRING_LENGTH(Empty)
DECLARE Nuls : _EXP_STRING(3, (C_CHAR)'\0')
OUTPUT _EXP_STRING_LENGTH(Nuls)
DECLARE Long : _EXP_STRING(20000, (C_CHAR)'x')
DECLARE I : INTEGER
FOR I <- 1 TO 100
Long <- Long & A
NEXT I
OUTPUT _EXP_STRING_LENGTH(Long)
Long <- Echo(Long)
OUTPUT _EXP_STRING_LENGTH(Long)
CALL _EXP_STRING_OUTPUT(_EXP_STRING_NUM_TO_STR(42) & _EXP_STRING_NUM_TO_STR(1.25))
DECLARE Number : _EXP_STRING((C_STRING)"12.5")
OUTPUT _EXP_STRING_STR_TO_NUM(Number) = 12.5
TRY
Number <- (C_STRING)"12x"
OUTPUT _EXP_STRING_STR_TO_NUM(Number)
CATCH
OUTPUT "conversion caught"
ENDTRY
TRY
DECLARE Invalid : _EXP_STRING(-1, (C_CHAR)'x')
CATCH
OUTPUT "length caught"
ENDTRY
CALL _EXP_STRING_NUM_TO_STR(99)
CALL Echo(Long)
DECLARE Heap : _EXP_STRING
Heap <- NEW _EXP_STRING((C_STRING)"heap")
CALL _EXP_STRING_OUTPUT(Heap)
DELETE Heap
CALL CheckLeft()
CALL CheckRight()
CALL CheckMid()
CALL CheckLCase()
CALL CheckUCase()
CALL CheckAsc()
PROCEDURE CheckLeft()
DECLARE Letters : _EXP_STRING((C_STRING)"ABCDEFGH")
DECLARE Empty : _EXP_STRING
DECLARE Nuls : _EXP_STRING(3, (C_CHAR)'\0')
DECLARE A : _EXP_STRING((C_STRING)"hello")
CALL _EXP_STRING_OUTPUT(_EXP_STRING_LEFT(Letters, 3))
OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_LEFT(Empty, 2)), ":", _EXP_STRING_LENGTH(_EXP_STRING_LEFT(Letters, 0)), ":", _EXP_STRING_LENGTH(_EXP_STRING_LEFT(Letters, -1))
CALL _EXP_STRING_OUTPUT(_EXP_STRING_LEFT(Letters, 20))
OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_LEFT(Nuls & A, 4))
ENDPROCEDURE
PROCEDURE CheckRight()
DECLARE Letters : _EXP_STRING((C_STRING)"ABCDEFGH")
DECLARE Empty : _EXP_STRING
DECLARE Nuls : _EXP_STRING(3, (C_CHAR)'\0')
DECLARE A : _EXP_STRING((C_STRING)"hello")
CALL _EXP_STRING_OUTPUT(_EXP_STRING_RIGHT(Letters, 3))
OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_RIGHT(Empty, 2)), ":", _EXP_STRING_LENGTH(_EXP_STRING_RIGHT(Letters, 0)), ":", _EXP_STRING_LENGTH(_EXP_STRING_RIGHT(Letters, -1))
CALL _EXP_STRING_OUTPUT(_EXP_STRING_RIGHT(Letters, 20))
OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_RIGHT(A & Nuls, 4))
ENDPROCEDURE
PROCEDURE CheckMid()
DECLARE Letters : _EXP_STRING((C_STRING)"ABCDEFGH")
DECLARE Empty : _EXP_STRING
DECLARE Nuls : _EXP_STRING(3, (C_CHAR)'\0')
CALL _EXP_STRING_OUTPUT(_EXP_STRING_MID(Letters, 2, 3))
CALL _EXP_STRING_OUTPUT(_EXP_STRING_MID(Letters, -9223372036854775808, 2))
CALL _EXP_STRING_OUTPUT(_EXP_STRING_MID(Letters, 7, 9223372036854775807))
OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_MID(Empty, 1, 2)), ":", _EXP_STRING_LENGTH(_EXP_STRING_MID(Letters, 9223372036854775807, 2))
OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_MID(Letters, 2, 0)), ":", _EXP_STRING_LENGTH(_EXP_STRING_MID(Letters, 2, -1))
OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_MID(Nuls & Letters, 2, 4))
ENDPROCEDURE
PROCEDURE CheckLCase()
DECLARE Mixed : _EXP_STRING((C_STRING)"AbC@19")
DECLARE Empty : _EXP_STRING
DECLARE Nuls : _EXP_STRING(2, (C_CHAR)'\0')
CALL _EXP_STRING_OUTPUT(_EXP_STRING_LCASE(Mixed))
CALL _EXP_STRING_OUTPUT(Mixed)
DECLARE Lower : CHAR
Lower <- _EXP_STRING_LCASE('W')
OUTPUT Lower, ":", _EXP_STRING_LCASE('w'), ":", _EXP_STRING_LCASE('@')
OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_LCASE(Empty)), ":", _EXP_STRING_LENGTH(_EXP_STRING_LCASE(Nuls & Mixed))
CALL _EXP_STRING_OUTPUT(_EXP_STRING_MID(_EXP_STRING_LCASE(Nuls & Mixed), 3, 3))
ENDPROCEDURE
PROCEDURE CheckUCase()
DECLARE Mixed : _EXP_STRING((C_STRING)"AbC@19")
DECLARE Empty : _EXP_STRING
DECLARE Nuls : _EXP_STRING(2, (C_CHAR)'\0')
CALL _EXP_STRING_OUTPUT(_EXP_STRING_UCASE(Mixed))
CALL _EXP_STRING_OUTPUT(Mixed)
DECLARE Upper : CHAR
Upper <- _EXP_STRING_UCASE('h')
OUTPUT Upper, ":", _EXP_STRING_UCASE('H'), ":", _EXP_STRING_UCASE('@')
OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_UCASE(Empty)), ":", _EXP_STRING_LENGTH(_EXP_STRING_UCASE(Nuls & Mixed))
CALL _EXP_STRING_OUTPUT(_EXP_STRING_MID(_EXP_STRING_UCASE(Nuls & Mixed), 3, 3))
ENDPROCEDURE
PROCEDURE CheckAsc()
DECLARE Letters : _EXP_STRING((C_STRING)"ABCDEFGH")
DECLARE Empty : _EXP_STRING
DECLARE Nuls : _EXP_STRING(2, (C_CHAR)'\0')
DECLARE High : _EXP_STRING(1, (C_CHAR)255)
OUTPUT _EXP_STRING_ASC('A'), ":", _EXP_STRING_ASC(Letters)
OUTPUT _EXP_STRING_ASC(Empty), ":", _EXP_STRING_ASC(Nuls), ":", _EXP_STRING_ASC('\0')
OUTPUT _EXP_STRING_ASC(High)
ENDPROCEDURE
|