aboutsummaryrefslogtreecommitdiff
path: root/tests/library/exp-string/program.cps
blob: 719d9a4310ebe70a318598fbb8d12416b0276d67 (plain)
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

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