'if pos(translate(key),translate(keylist))\=0 then return translate(key);',
'if "="==key then do;call charout , "Move to line: ";parse pull _line;if _line>0 & _line<="list"0 then _i=_line;else _i=_i-1;call SysCls;_r=1;end;',
'if "Q"==translate(key) then return "";',
'if d2c(13)==key then _r=_r-1;',
'if "U"==translate(key) & _i>2*(settings.rows-settings.overlap) then _i=_i-2*(settings.rows-settings.overlap);',
'if "T"==translate(key) then do;call SysCls;_i=n;_r=1;end;',
'if "^"==translate(key) then do;call SysCls;_i=n;_r=1;end;',
'if "B"==translate(key) then do;call SysCls;_i='list'0-(settings.rows-settings.overlap);_r=1;end;',
'if "$"==translate(key) then do;call SysCls;_i='list'0-(settings.rows-settings.overlap);_r=1;end;',
'if "?"==translate(key) then do;call help("more");_i=_i-(settings.rows-settings.overlap);end;',
'if "D"==translate(key) then do;_rot13=\_rot13;call SysCls;_i=n;_r=1;end;',
'if _cls then do; Call SysCls; _cls=0; end;',
'if length('list'_i)>settings.cols',
'then _r=_r+(length('list'_i)%settings.cols);',
'if _i<1 then _i=1;',
'end;',
"_line="list"_i;",
"if _rot13 then _line=translate(_line,'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm');",
"if _i<="list"0 then ",
"if firstword=0 then say _line;",
"else say subword(_line,firstword,lastword);",
"_r=_r+1;",
"end"
return ""
/* An Alternate display function that limits displayed lines with a 'needle' */