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
|
include defs
# filset --- expand set at array (i) into set (j), stop at delim
subroutine filset (delim, array, i, set, j, maxset)
integer i, j, maxset
character array (ARB), delim, set (maxset)
character esc
integer junk
external index
integer addset, index
string digits "0123456789"
string lowalf "abcdefghijklmnopqrstuvwxyz"
string upalf "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for ( ; array (i) != delim & array (i) != EOS; i = i + 1)
if (array (i) == ESCAPE)
junk = addset (esc (array, i), set, j, maxset)
else if (array (i) != DASH)
junk = addset (array (i), set, j, maxset)
else if (j <= 1 | array (i + 1) == EOS) # literal -
junk = addset (DASH, set, j, maxset)
else if (index (digits, set (j - 1)) > 0)
call dodash (digits, array, i, set, j, maxset)
else if (index (lowalf, set (j - 1)) > 0)
call dodash (lowalf, array, i, set, j, maxset)
else if (index (upalf, set (j - 1)) > 0)
call dodash (upalf, array, i, set, j, maxset)
else
junk = addset (DASH, set, j, maxset)
return
end
|