/******************************************************/ /* This program reads a sentence and reverses it. */ /******************************************************/ reverse: procedure options(main); declare sentence pointer, 1 wordnode based (sentence), 2 word character(30) varying, 2 next pointer; do while('1'b); call read_it(); if sentence = null then stop; call write_it(); end; read_it: procedure; declare newword character(30) varying, newnode pointer; sentence = null; put skip list('What''s up? '); do while('1'b); get list(newword); if newword = '.' then return; allocate wordnode set (newnode); newnode->next = sentence; sentence = newnode; word = newword; end; end read_it; write_it: procedure; declare p pointer; put skip list('Actually, '); do while (sentence ^= null); put list(word); p = sentence; sentence = next; free p->wordnode; end; put list('.'); put skip; end write_it; end reverse;