4.3BSD/usr/contrib/icon/book/14/cross2.icn

procedure cross(word1,word2)
   local i, j
   every i := upto(word2,word1) do
      every  j := upto(word1[i],word2) do {
         every write(right(word2[1 to j - 1],i))
         write(word1)
         every write(right(word2[j + 1 to *word2],i))
         write()
         }
  return
end