test: proc options (main); /* To implement a queue. */ define structure 1 node, 2 value fixed, 2 link handle(node); declare (head, tail, t) handle (node); declare null builtin; declare i fixed binary; head, tail = bind(:node, null:); do i = 1 to 10; /* Add ten items to the tail of the queue. */ if head = bind(:node, null:) then do; head,tail = new(:node:); get list (head => value); put skip list (head => value); head => link = bind(:node, null:); /* A NULL link */ end; else do; t = new(:node:); tail => link = t; /* Point the tail to the new node. */ tail = t; tail => link = bind(:node, null:); /* Set the tail link to NULL */ get list (tail => value) copy; put skip list (tail => value); end; end; /* Pop all the items in the queue. */ put skip list ('The queue has:'); do while (head ^= bind(:node, null:)); put skip list (head => value); head = head => link; end; end test;