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/string.cps"
FUNCTION Echo(S : STRING) RETURNS STRING
RETURN S
ENDFUNCTION
DECLARE A : STRING((C_STRING)"hello")
DECLARE B : STRING(A)
B <- (C_STRING)"world"
B <- B
OUTPUT (A & B)
DECLARE Empty : STRING
OUTPUT LENGTH(Empty)
DECLARE Nuls : STRING(3, (C_CHAR)'\0')
OUTPUT LENGTH(Nuls)
DECLARE Long : STRING(20000, (C_CHAR)'x')
DECLARE I : INTEGER
FOR I <- 1 TO 100
Long <- Long & A
NEXT I
OUTPUT LENGTH(Long)
Long <- Echo(Long)
OUTPUT LENGTH(Long)
OUTPUT (NUM_TO_STR(42) & NUM_TO_STR(1.25))
DECLARE Number : STRING((C_STRING)"12.5")
OUTPUT STR_TO_NUM(Number) = 12.5
TRY
Number <- (C_STRING)"12x"
OUTPUT STR_TO_NUM(Number)
CATCH
OUTPUT "conversion caught"
ENDTRY
TRY
DECLARE Invalid : STRING(-1, (C_CHAR)'x')
CATCH
OUTPUT "length caught"
ENDTRY
CALL NUM_TO_STR(99)
CALL Echo(Long)
DECLARE Heap : STRING
Heap <- NEW STRING((C_STRING)"heap")
OUTPUT (Heap)
DELETE Heap
CALL CheckLeft()
CALL CheckRight()
CALL CheckMid()
CALL CheckLCase()
CALL CheckUCase()
CALL CheckAsc()
CALL CheckChr()
CALL CheckIsNum()
PROCEDURE CheckLeft()
DECLARE Letters : STRING((C_STRING)"ABCDEFGH")
DECLARE Empty : STRING
DECLARE Nuls : STRING(3, (C_CHAR)'\0')
DECLARE A : STRING((C_STRING)"hello")
OUTPUT (LEFT(Letters, 3))
OUTPUT LENGTH(LEFT(Empty, 2)), ":", LENGTH(LEFT(Letters, 0)), ":", LENGTH(LEFT(Letters, -1))
OUTPUT (LEFT(Letters, 20))
OUTPUT LENGTH(LEFT(Nuls & A, 4))
ENDPROCEDURE
PROCEDURE CheckRight()
DECLARE Letters : STRING((C_STRING)"ABCDEFGH")
DECLARE Empty : STRING
DECLARE Nuls : STRING(3, (C_CHAR)'\0')
DECLARE A : STRING((C_STRING)"hello")
OUTPUT (RIGHT(Letters, 3))
OUTPUT LENGTH(RIGHT(Empty, 2)), ":", LENGTH(RIGHT(Letters, 0)), ":", LENGTH(RIGHT(Letters, -1))
OUTPUT (RIGHT(Letters, 20))
OUTPUT LENGTH(RIGHT(A & Nuls, 4))
ENDPROCEDURE
PROCEDURE CheckMid()
DECLARE Letters : STRING((C_STRING)"ABCDEFGH")
DECLARE Empty : STRING
DECLARE Nuls : STRING(3, (C_CHAR)'\0')
OUTPUT (MID(Letters, 2, 3))
OUTPUT (MID(Letters, -9223372036854775808, 2))
OUTPUT (MID(Letters, 7, 9223372036854775807))
OUTPUT LENGTH(MID(Empty, 1, 2)), ":", LENGTH(MID(Letters, 9223372036854775807, 2))
OUTPUT LENGTH(MID(Letters, 2, 0)), ":", LENGTH(MID(Letters, 2, -1))
OUTPUT LENGTH(MID(Nuls & Letters, 2, 4))
ENDPROCEDURE
PROCEDURE CheckLCase()
DECLARE Mixed : STRING((C_STRING)"AbC@19")
DECLARE Empty : STRING
DECLARE Nuls : STRING(2, (C_CHAR)'\0')
OUTPUT (LCASE(Mixed))
OUTPUT (Mixed)
DECLARE Lower : CHAR
Lower <- LCASE('W')
OUTPUT Lower, ":", LCASE('w'), ":", LCASE('@')
OUTPUT LENGTH(LCASE(Empty)), ":", LENGTH(LCASE(Nuls & Mixed))
OUTPUT (MID(LCASE(Nuls & Mixed), 3, 3))
ENDPROCEDURE
PROCEDURE CheckUCase()
DECLARE Mixed : STRING((C_STRING)"AbC@19")
DECLARE Empty : STRING
DECLARE Nuls : STRING(2, (C_CHAR)'\0')
OUTPUT (UCASE(Mixed))
OUTPUT (Mixed)
DECLARE Upper : CHAR
Upper <- UCASE('h')
OUTPUT Upper, ":", UCASE('H'), ":", UCASE('@')
OUTPUT LENGTH(UCASE(Empty)), ":", LENGTH(UCASE(Nuls & Mixed))
OUTPUT (MID(UCASE(Nuls & Mixed), 3, 3))
ENDPROCEDURE
PROCEDURE CheckAsc()
DECLARE Letters : STRING((C_STRING)"ABCDEFGH")
DECLARE Empty : STRING
DECLARE Nuls : STRING(2, (C_CHAR)'\0')
DECLARE High : STRING(1, (C_CHAR)255)
OUTPUT ASC('A'), ":", ASC(Letters)
OUTPUT ASC(Empty), ":", ASC(Nuls), ":", ASC('\0')
OUTPUT ASC(High)
ENDPROCEDURE
PROCEDURE CheckChr()
OUTPUT (CHR(65) & CHR(90))
OUTPUT ASC(CHR(ASC('A')))
OUTPUT LENGTH(CHR(0)), ":", ASC(CHR(0))
OUTPUT ASC(CHR(321)), ":", ASC(CHR(-1))
ENDPROCEDURE
PROCEDURE CheckIsNum()
DECLARE Number : STRING((C_STRING)"12.5")
DECLARE Junk : STRING((C_STRING)"12x")
DECLARE Empty : STRING
DECLARE Leading : STRING((C_STRING)" 12.5")
DECLARE Trailing : STRING((C_STRING)"12.5 ")
DECLARE Whitespace : STRING((C_STRING)" ")
OUTPUT IS_NUM(Number), ":", IS_NUM(Junk), ":", IS_NUM(Empty)
OUTPUT IS_NUM(Leading), ":", IS_NUM(Trailing), ":", IS_NUM(Whitespace)
OUTPUT IS_NUM(Number & CHR(0)), ":", IS_NUM(CHR(0) & Number)
ENDPROCEDURE
|