175
|
1 % ** TEST PROGRAM **
|
176
|
2 FUNC SEARCH
|
|
3 %--- MAIN ---
|
|
4 VAR DICT,BUF,D
|
|
5 ARRAY TEND[2]
|
|
6 BEGIN
|
|
7 WRITE(DICT:ASCII(0))
|
|
8 DICT := OPENM($2,0)
|
|
9 WRITE(DICT:ASCII(0))
|
|
10 WRITE(DICT:ASCII(30),ASCII(0-'P'),"ROC")
|
|
11 WRITE(DICT:ASCII(31),ASCII(0-'F'),"UNC")
|
|
12 WRITE(DICT:ASCII(33),ASCII(0-'V'),"AR",CRLF)
|
|
13 D:=POSITION(DICT,TEND)
|
|
14 BUF := OPENM($2,0)
|
|
15 WRITE(BUF:"FUNC",ASCII(0))
|
|
16 WRITE(0:SEARCH(BUF),CRLF)
|
|
17 D:=SEEK(BUF,0)
|
|
18 WRITE(BUF:"NONAME",ASCII(0))
|
|
19 WRITE(0:SEARCH(BUF),CRLF)
|
|
20 END
|
175
|
21
|
176
|
22 SEARCH(BUF)
|
|
23 VAR VAL,K,C,D
|
|
24 ARRAY BEND
|
|
25 BEGIN
|
|
26 VAL := SEEK(DICT,TEND)
|
177
|
27 D:=POSITION(BUF,BEND)
|
176
|
28 WHILE VAL#0 DO [
|
177
|
29 C:=SEEKR(BUF,0-1)
|
|
30 K:=SEEKR(DICT,0-1)
|
176
|
31 IF K.LT.0 THEN [
|
177
|
32 IF C=0-K THEN
|
176
|
33 RETURN VAL % FOUND
|
177
|
34 VAL := SEEKR(DICT,0-1)
|
176
|
35 ] ELSE IF C#K THEN [
|
|
36 D:=SEEK(BUF,BEND)
|
|
37 REPEAT
|
177
|
38 K:=SEEKR(DICT,0-1)
|
176
|
39 UNTIL K.LT.0
|
177
|
40 VAL := SEEKR(DICT,0-1)
|
175
|
41 ]
|
|
42 ]
|
176
|
43 RETURN VAL % NOT FOUND
|
|
44 END
|