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
|
include defs
# mntoc --- translate ASCII mnemonic into a character
character function mntoc (buf, p, defalt)
character buf (ARB), defalt
integer p
integer i, tp
integer equal
character c, tmp (MAXLINE)
character text (170)
data text / _
ACK, LETA, LETC, LETK, EOS,
BEL, LETB, LETE, LETL, EOS,
BS, LETB, LETS, EOS, EOS,
CAN, LETC, LETA, LETN, EOS,
CR, LETC, LETR, EOS, EOS,
DC1, LETD, LETC, DIG1, EOS,
DC2, LETD, LETC, DIG2, EOS,
DC3, LETD, LETC, DIG3, EOS,
DC4, LETD, LETC, DIG4, EOS,
DEL, LETD, LETE, LETL, EOS,
DLE, LETD, LETL, LETE, EOS,
EM, LETE, LETM, EOS, EOS,
ENQ, LETE, LETN, LETQ, EOS,
EOT, LETE, LETO, LETT, EOS,
ESC, LETE, LETS, LETC, EOS,
ETB, LETE, LETT, LETB, EOS,
ETX, LETE, LETT, LETX, EOS,
FF, LETF, LETF, EOS, EOS,
FS, LETF, LETS, EOS, EOS,
GS, LETG, LETS, EOS, EOS,
HT, LETH, LETT, EOS, EOS,
LF, LETL, LETF, EOS, EOS,
NAK, LETN, LETA, LETK, EOS,
NUL, LETN, LETU, LETL, EOS,
RS, LETR, LETS, EOS, EOS,
SI, LETS, LETI, EOS, EOS,
SO, LETS, LETO, EOS, EOS,
SOH, LETS, LETO, LETH, EOS,
SP, LETS, LETP, EOS, EOS,
STX, LETS, LETT, LETX, EOS,
SUB, LETS, LETU, LETB, EOS,
SYN, LETS, LETY, LETN, EOS,
US, LETU, LETS, EOS, EOS,
VT, LETV, LETT, EOS, EOS/
tp = 1
repeat {
tmp (tp) = buf (p)
tp = tp + 1
p = p + 1
} until (! (IS_LETTER(buf (p)) | IS_DIGIT(buf (p)))
| tp >= MAXLINE)
tmp (tp) = EOS
if (tp == 2)
c = tmp (1)
else {
call lower (tmp)
for (i = 1; i < 170; i = i + 5) # should use binary search here
if (equal (tmp, text (i + 1)) == YES)
break
if (i < 170)
c = text (i)
else
c = defalt
}
return (c)
end
|