-(declaim (inline vff))
-(defun vff (filename fieldname record)
- (let ((pos (position-field-file filename fieldname)))
- (unless pos
- (error "Did not find fieldname ~A in filename ~A." fieldname filename))
- (locally (declare (fixnum pos))
- (nth pos record))))
+(defmacro vff (filename fieldname record)
+ (let ((pos (gensym "POS-"))
+ (key (kmrcl:ensure-keyword (concatenate 'string filename "^" fieldname))))
+ `(let ((,pos (position-field-file ,filename ,fieldname ,key)))
+ (unless ,pos
+ (error "Did not find fieldname ~A in filename ~A." ,fieldname ,filename))
+ (locally (declare (type (integer 0 100000) ,pos))
+ (nth ,pos ,record)))))