1 .* ***********************************************************
2 .* * *
3 .* * *
4 .* * Copyright, C Honeywell Information Systems Inc., 1981 *
5 .* * *
6 .* * *
7 .* ***********************************************************
8 .* 03/03/77 jaf Modified to handle point pages
9 .* 07/17/77 jaf Modified to improve error messages, reduce overhead
10 .* 03/02/81 jaf Added optional digit prefix to specify which index
11 .* 07/02/81 jaf Removed "before" page and lineno
12 .* ???????? jaf need to add =XYZ prefix to rename |->X ~->Y ;->Z
13 .sr LASTCALLER ;.sr LASTCALLER_1 ;.sr LASTCALLER_2
14 .sr LASTCALLER_3 ;.sr LASTCALLER_4 ;.sr LASTCALLER_5
15 .sr LASTCALLER_6 ;.sr LASTCALLER_7 ;.sr LASTCALLER_8
16 .sr LASTCALLER_9 ;.sr HIT_STRT "|" ;.sr HIT_END ";"
17 .sr SCNDX 1
18 .*
19 .indctl on
20 .sr HIT_TYPE "%Parameter% "11 ;.* extract hit type char
21 .*
22 .if "%HIT_TYPE%" = "=" ;.* delimiter change?
23 .then .sr HIT_STRT "%Parameter% "21 ;.* key starter
24 .sr HIT_END "%Parameter% "41 ;.* key ender
25 .sr HIT_TYPE "%Parameter% "51 ;.* extract hit type char again
26 .sr SCNDX 5 ;.* set scan index
27 .endif
28 .*
29 .ur .if %%index ""0123456789"" "%HIT_TYPE%"%% ^= 0 ;.* if type is numeric
30 .then .sr INDEX_which "_%HIT_TYPE%" ;.* use it for filename suffix
31 .sr SCNDX %SCNDX% + 1 ;.* step over it
32 .sr HIT_TYPE "%Parameter% "%SCNDX%1 ;.* extract hit type char again
33 .else .sr INDEX_which "" ;.* no filename suffix
34 .endif
35 .*
36 .ur .if %%index ""ULIANSK"" "%HIT_TYPE%"%% = 0 ;.* check hit type char
37 .then .ur .err Unknown hit type %HIT_TYPE% ;.* report error
38 .go ret
39 .endif
40 .*
41 .sr SCNDX %SCNDX% + 1
42 .sr INDEX_G "%Parameter% "%SCNDX%1 = "%HIT_STRT%" ;.* set key starter flag
43 .ur .go type_%HIT_TYPE% ;.* go to selected type
44 .*
45 .la type_U ;.* UPPER case permute
46 .la type_L ;.* lower case permute
47 .la type_I ;.* initial cap permute
48 .la type_A ;.* as-is permute
49 .ts %INDEX_G%
50 .go finish ;.* no text to output
51 .*
52 .la type_N ;.* explicitly omitted reference
53 .sr INDEX_X "%Parameter% "%SCNDX%
54 .go gen
55 .*
56 .la type_S ;.* "see" reference
57 .ts %INDEX_G%
58 .go finish
59 .err Format must be "S|...".
60 .go ret
61 .*
62 .la type_K ;.* keys supplied
63 .ts %INDEX_G% ;.* are we at the key starter?
64 .go finish ;.* yep
65 .* find it
66 .ur .srv I %%index ""%Parameter%%HIT_STRT%""%SCNDX% "%HIT_STRT%"%%
67 .*
68 .* - - - - - Extract the text string found
69 .sr I %I% - %SCNDX%
70 .sr INDEX_X "%Parameter% "%SCNDX%%I%
71 .*
72 .la gen
73 .if "%INDEX_X% "11="."
74 .then .ur %PAD%%INDEX_X%
75 .else .ur %INDEX_X%
76 .endif
77 .la finish
78 .* generate hit into .chars file
79 .ur .if "%%CallingFileName%%" = "%%LASTCALLER%INDEX_which%%%" ;.* same caller?
80 .else .ur .wrt %FileName%%INDEX_which%.chars %CallingFileName% ;.* write caller
81 .ur .sr LASTCALLER%INDEX_which% "%%CallingFileName%%" ;.* and record him
82 .endif
83 .ur .wrt %FileName%%INDEX_which%.chars %CallingLineNo% .~ HIT %Parameter%%HIT_END%%PageNo% %PageLine%
84 .*
85 .la ret
86 .indctl
87 .*.ts %INDEX_G%
88 .*.rt
89 .*.ts %FillMode%+1
90 .*.err Not in fill mode.