SOUL Syntax Highlighting Examples

 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
* Database Operations in SOUL
* Demonstrates Model 204 database interaction

* Find all records matching criteria
FIND ALL RECORDS IN EMPLOYEES WHERE
    DEPT = 'SALES' AND
    SALARY GT 50000
END FIND

* Process each found record
FOR EACH RECORD IN EMPLOYEES
    * Field variables use double percent
    %%NAME = $Proper(%%NAME)
    %%LAST_REVIEW = $Curdate

    * Print field values
    PRINT 'Employee: ' WITH %%NAME
    PRINT 'Salary: ' WITH %%SALARY

    * Update the record
    UPDATE RECORD
        %%LAST_UPDATED = $Curdate
        %%STATUS = 'REVIEWED'
    END UPDATE
END FOR

* Count records
%TOTAL_COUNT = $COUNT IN EMPLOYEES

* Find with complex criteria
FD ALL RECORDS IN CUSTOMERS WHERE
    (STATUS EQ 'ACTIVE' OR STATUS EQ 'PENDING') AND
    BALANCE GT 1000 AND
    CITY IS NOT LIKE 'NEW%'
END FIND

* Process each value of multi-valued field
FR IN ORDERS
    FEO %%LINE_ITEMS
        %ITEM_CODE = %%LINE_ITEMS
        %PRICE = $GetPrice(%ITEM_CODE)
        PRINT %ITEM_CODE WITH %PRICE
    END FOR
END FOR

* Store new record
STORE RECORD IN EMPLOYEES
    %%NAME = %NEW_NAME
    %%DEPT = %NEW_DEPT
    %%HIRE_DATE = $Curdate
    %%SALARY = %NEW_SALARY
    %%STATUS = 'ACTIVE'
END STORE

* Delete records
FD ALL RECORDS IN TEMP_TABLE WHERE
    CREATED_DATE LT $Date('2025-01-01')
END FIND

FOR EACH RECORD
    DELETE RECORD
END FOR

* Sorted retrieval
FD ALL RECORDS IN PRODUCTS
    ORDERED BY CATEGORY, PRICE
END FIND

* Record counting with PAI (Print All Information)
PAI IN EMPLOYEES WHERE STATUS = 'ACTIVE'

* Database abbreviations
FDR IN FILE WHERE KEY = %SEARCH_KEY  /? Find Direct Record ?/
FRN                                   /? For Record Number ?/
    PRINT %%NAME
END FOR