external function listmakenull(var l: list):listposition; external procedure listinsert(x: listelement; p:listposition; var l: list); external function listretrieve(p: listposition; l: list):listelement; external procedure listdelete(p:listposition; var l:list); external function listfirst(l:list):listposition; external function listnext(p:listposition; l:list):listposition; external function listprevious(p:listposition; l:list):listposition; external function listend(l:list):listposition; external function listlocate(x:listelement; l:list):listposition; external procedure listprint(l:list; var out:text); .