Phrase reversals: Difference between revisions

Content added Content deleted
(Initial implementation in PL/I)
Line 753: Line 753:
Words reversed: attesor edoc esarhp lasrever
Words reversed: attesor edoc esarhp lasrever
Word order reversed: reversal phrase code rosetta</pre>
Word order reversed: reversal phrase code rosetta</pre>

=={{header|PL/I}}==
<lang PL/I>
reverser: procedure options (main); /* 19 August 2015 */
declare (phrase, r, word) character (100) varying;
declare (start, end) fixed binary;

phrase = 'rosetta code phrase reversal';
put ('The original phrase is: ' || phrase);

put skip list ( '1. ' || reverse(phrase) );

start = 1; r = ''; put skip edit ('2. ') (a);
do until ( end > length(phrase) );
end = index(phrase, ' ', start); /* Find end of the next word.*/
if end = 0 then end = length(phrase) + 1; /* We're at the last word. */
word = substr(phrase, start, end-start);
put edit ( reverse(word), ' ' ) (a); /* Append reversed word. */
r = word || ' ' || r; /* Prepend normal word. */
start = end+1;
end;
put skip list ('3. ' || r);

end reverser;
</lang>
Output:
<pre>
The original phrase is: rosetta code phrase reversal
1. lasrever esarhp edoc attesor
2. attesor edoc esarhp lasrever
3. reversal phrase code rosetta
</pre>


=={{header|PowerShell}}==
=={{header|PowerShell}}==