Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- (find-sh0 "echo 'foo\nfoobar' | rexx pig.rexx")
-- (defun c0 () (interactive) (find-sh0 "echo 'foo\nfoobar' | rexx pig.rexx"))

rule = copies('-', 20)
say rule
say ' Pig Latin'
say rule
say

do forever
  input = prompt("? ")
  if input = '' then leave
  call backslang input
  say ":" result
end

exit 0

backslang: procedure
  parse arg input
  sentence = ''
  do w=1 to words(input)
    call word input, w
    word = filter(result, ',.;:!''"?')
    select
      -- Special cases:
      when word = 'a' then latin = 'ay'
      -- Latinate!
      otherwise do
        hinge = verify(lower(word), 'aeiou', 'M')
        latin = substr(word, hinge)substr(word, 1, hinge-1)'ay'
      end
    end
    sentence = sentence latin
  end
  return strip(sentence)

prompt: procedure
  call charout , "? "
  parse pull input
  return input

-- Like a global strip()
filter: procedure
  parse arg input, illicit
  do forever
    call verify input, illicit, 'M'
    if result = 0 then leave
    input = delstr(input, result, 1)
  end
  return input