<<I am by no means a Transact expert, but I do not see why the following
program does not give the desired result.  I am reading record numbers
from an MPE file (CLSORT) and matching them with record numbers in a
detail dataset (D-INDEX). I get output for 1 record and then nothing . .
. I must BREAK and ABORT to return to a prompt.>>
 
Are you sure that this is all of the source? While the number of
atrocities in the code is too vast to enumerate (just kidding; it's bad,
but not *that* bad), nothing jumps out that would cause an endless loop.
Indeed, you should get the same record number/name pair repeated as many
times as there are records in the CLSORT.BROSENOW file.
 
You might try something like the following:
 
SYSTEM GETPH,
  base=CLINIC.DATA("READER",1,1),
  file=CLSORT.BROSENOW((ASCII)),
  work=2048,256;
 
define(item)
  MEDREC    x(6);
 
list MEDREC:
     NUMBER:
     NAME;
 
find(serial)CLSORT.BROSENOW,
  list=(MEDREC),
  perform=GET-RECORD;
exit;
 
 
GET-RECORD:
 
<<if 'd-index' is keyed on 'number', use this:>>
  let (NUMBER) = (MEDREC);
  set(key) list(NUMBER);
  find(chain) d-index,list=(NAME),single;
<<if 'number' isn't keyed, use this:>>
  let (NUMBER) = (MEDREC);
  set(match) list(NUMBER);
  find(serial) d-index,
    list=(NUMBER,NAME),
    single;
  reset(option)match;
<<end of key/no key branch>>
if status = 1 then
  display(table) NUMBER,head="Record";NAME,head="Name",lng=30;
return;
 
Steve Dirickson         WestWin Consulting
(360) 598-6111  [log in to unmask]