LOOKUP_WORD: PROC (STRING, LEN, SYMVAL); DCL STRING CHAR (12); DCL LEN UBIN; DCL SYMVAL UBIN; DCL LOC UBIN; DCL 1 SCAN, 2 INFIX CHAR (1), 2 NAME CHAR (13); DCL SCAN_STRING REDEF SCAN CHAR (14); SCAN.INFIX = '/'; SCAN.NAME = STRING; CALL INSERT (SCAN.NAME, LEN, , '@'); CALL INDEX (LOC, SUBSTR(SCAN_STRING, 0, LEN + 2), VOCAB_TEXT) ALTRET (FIRST_PASS_FAILED); DO NEVER; FIRST_PASS_FAILED: CALL INSERT (SCAN.NAME, LEN, , '$'); CALL INDEX (LOC, SUBSTR(SCAN_STRING, 0, LEN + 2), VOCAB_TEXT) ALTRET (SECOND_PASS_FAILED); END; ENTRY$ = PINCRC(VOCAB_AREA.PTR$, LOC - SIZEC(VOCAB_ENTRY.PREFIX) - SIZEC(VOCAB_ENTRY.VALUE)); SYMVAL = VOCAB_ENTRY.VALUE; RETURN; SECOND_PASS_FAILED: SYMVAL = 9999; RETURN; END LOOKUP_WORD;