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 | * TEXT and HTML Block Examples
* Demonstrates text interpolation features
%TITLE = 'SOUL Language Report'
%AUTHOR = 'John Smith'
%DATE = $Curdate
%VERSION = '2.1'
* Simple TEXT block
TEXT
Welcome to the SOUL programming tutorial!
This is plain text output.
END TEXT
* TEXT block with variable interpolation
TEXT
Report Title: {%TITLE}
Author: {%AUTHOR}
Generated: {%DATE}
Version: {%VERSION}
END TEXT
* TEXT block with expressions
%COUNT = 10
%PRICE = 29.99
TEXT
Item Count: {%COUNT}
Unit Price: ${%PRICE}
Total: ${%COUNT * %PRICE}
Tax (8%): ${(%COUNT * %PRICE) * 0.08}
END TEXT
* TEXT block with function calls
%CUSTOMER_NAME = 'alice johnson'
TEXT
Customer: {$Proper(%CUSTOMER_NAME)}
Name Length: {$Len(%CUSTOMER_NAME)} characters
Uppercase: {$Upcase(%CUSTOMER_NAME)}
END TEXT
* HTML block for web output
HTML
<html>
<head>
<title>{%TITLE}</title>
</head>
<body>
<h1>{%TITLE}</h1>
<p>Version: {%VERSION}</p>
</body>
</html>
END HTML
* Complex HTML with multiple interpolations
%ROWS = 5
HTML
<table>
<tr>
<th>Name</th>
<th>Value</th>
</tr>
END HTML
FOR %I FROM 1 TO %ROWS
%ROW_NAME = 'Item ' WITH %I
%ROW_VALUE = %I * 100
HTML
<tr>
<td>{%ROW_NAME}</td>
<td>{%ROW_VALUE}</td>
</tr>
END HTML
END FOR
HTML
</table>
END HTML
* TEXT block with object method calls
IMAGE REPORT_DATA
HEADER IS STRING LEN 100
FOOTER IS STRING LEN 100
LINE_COUNT IS FIXED
END IMAGE
%REPORT = NEW REPORT_DATA
%REPORT:HEADER = 'Monthly Sales Report'
%REPORT:FOOTER = 'End of Report'
%REPORT:LINE_COUNT = 42
TEXT
{%REPORT:HEADER}
----------------------------------------
Total Lines: {%REPORT:LINE_COUNT}
----------------------------------------
{%REPORT:FOOTER}
END TEXT
* Nested expressions in TEXT blocks
%BASE = 10
%EXPONENT = 3
TEXT
Calculation: {%BASE} to the power of {%EXPONENT}
Result: {%BASE * %BASE * %BASE}
Using function: {$Power(%BASE, %EXPONENT)}
END TEXT
* Multi-line TEXT with formatting
TEXT
╔════════════════════════════════════╗
║ {$Center(%TITLE, 34)} ║
╠════════════════════════════════════╣
║ Author: {$Pad(%AUTHOR, 24)} ║
║ Date: {$Pad(%DATE, 24)} ║
╚════════════════════════════════════╝
END TEXT
|