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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
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()
CALL CheckChr()
CALL CheckIsNum()
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
PROCEDURE CheckChr()
CALL _EXP_STRING_OUTPUT(_EXP_STRING_CHR(65) & _EXP_STRING_CHR(90))
OUTPUT _EXP_STRING_ASC(_EXP_STRING_CHR(_EXP_STRING_ASC('A')))
OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_CHR(0)), ":", _EXP_STRING_ASC(_EXP_STRING_CHR(0))
OUTPUT _EXP_STRING_ASC(_EXP_STRING_CHR(321)), ":", _EXP_STRING_ASC(_EXP_STRING_CHR(-1))
ENDPROCEDURE
PROCEDURE CheckIsNum()
DECLARE Number : _EXP_STRING((C_STRING)"12.5")
DECLARE Junk : _EXP_STRING((C_STRING)"12x")
DECLARE Empty : _EXP_STRING
DECLARE Leading : _EXP_STRING((C_STRING)" 12.5")
DECLARE Trailing : _EXP_STRING((C_STRING)"12.5 ")
DECLARE Whitespace : _EXP_STRING((C_STRING)" ")
OUTPUT _EXP_STRING_IS_NUM(Number), ":", _EXP_STRING_IS_NUM(Junk), ":", _EXP_STRING_IS_NUM(Empty)
OUTPUT _EXP_STRING_IS_NUM(Leading), ":", _EXP_STRING_IS_NUM(Trailing), ":", _EXP_STRING_IS_NUM(Whitespace)
OUTPUT _EXP_STRING_IS_NUM(Number & _EXP_STRING_CHR(0)), ":", _EXP_STRING_IS_NUM(_EXP_STRING_CHR(0) & Number)
ENDPROCEDURE
|